该文被密码保护。 阅读全文
摘要:
其实就是一道暴力题目 考虑x部落和y部落,如果x人数多swap(x,y) 然后考虑算贡献 枚举x部落中的每一个人 ans=对于每一个人y中比这个人弱的个数*val[x]+比它强的人和(前缀和一下) 显然这是会被卡的 但是只要加个map记录一下已经算过的x,y就行了 代码如下: 阅读全文
摘要:
很没意思的题 开始看A的人少,点进去发现简单题。。。 直接动态维护一下倍增数组 新的直径只可能是原直径或者新加入点和原来直径两个端点构成的路径 代码如下: 阅读全文
摘要:
考虑对于每一个i作为右端点,使得它这段和最大的j是[i-R,i-L]区间内sum[j-1]最小的 所以我们开一个堆来维护一个四元组信息(i,l,r,t) 表示右端点为i,左端点取值范围在[l,r]中,当前这段区间中sum最小值为t 显然t取了,这个四元组就被分裂成两个了,为(i,l,t-1,rmq) 阅读全文
摘要:
代码能力练啊练 写了道没有任何思维的题 代码如下: 阅读全文
摘要:
线段树简单题 对于线段树每个区间维护一个矩阵a[i][j]表示仅用这个区间内的数,从状态i得到状态j并且合法至少要删除几个 0对应没有,1对应“2”,2对应“20”,3对应“201”,4对应“2017” 合并矩阵a[i][j]=min(a[i][j],a[i][k]+a[k][j]) 代码如下: 阅读全文
摘要:
暑期的训练发现DP不行,万年写不对系列已经上线 这题其实类似dp问题中的整数划分问题 考虑用dp[i][j]表示分成了不同的i个数,和为j 考虑转移dp[i][j]=dp[i-1][j-i]+dp[i][j-i] 考虑意义,dp[i][j-i]表示给当前i组全部都加上1 dp[i-1][j-i]表示 阅读全文