该文被密码保护。 阅读全文
posted @ 2018-08-15 16:53 longint 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 其实就是一道暴力题目 考虑x部落和y部落,如果x人数多swap(x,y) 然后考虑算贡献 枚举x部落中的每一个人 ans=对于每一个人y中比这个人弱的个数*val[x]+比它强的人和(前缀和一下) 显然这是会被卡的 但是只要加个map记录一下已经算过的x,y就行了 代码如下: 阅读全文
posted @ 2018-08-12 22:32 longint 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 很没意思的题 开始看A的人少,点进去发现简单题。。。 直接动态维护一下倍增数组 新的直径只可能是原直径或者新加入点和原来直径两个端点构成的路径 代码如下: 阅读全文
posted @ 2018-08-11 19:29 longint 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 考虑对于每一个i作为右端点,使得它这段和最大的j是[i-R,i-L]区间内sum[j-1]最小的 所以我们开一个堆来维护一个四元组信息(i,l,r,t) 表示右端点为i,左端点取值范围在[l,r]中,当前这段区间中sum最小值为t 显然t取了,这个四元组就被分裂成两个了,为(i,l,t-1,rmq) 阅读全文
posted @ 2018-08-11 19:26 longint 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 代码能力练啊练 写了道没有任何思维的题 代码如下: 阅读全文
posted @ 2018-08-11 19:23 longint 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 线段树简单题 对于线段树每个区间维护一个矩阵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]) 代码如下: 阅读全文
posted @ 2018-08-11 19:21 longint 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 暑期的训练发现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]表示 阅读全文
posted @ 2018-08-09 21:51 longint 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给你一个 n阶方阵 An,判断它是否满足: 其中n<=2500 题解:两个特判题目中给的比较清楚很简单的可以判定掉 考虑如何构造ai,j<=max(ai,k,ajk) 显然的我们索性让i,j之间连一条ai,j的边 然后跑一遍最大生成树 求出两点之间的最大值,看看是否与给定的ai,j矛盾即 阅读全文
posted @ 2018-05-31 19:33 longint 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题解:显然这是一个无限背包的问题 有一个套路 显然关于a进行排序 我们用dis[i]表示用a[2],a[3]...a[n]构成的最小的值%a[1]==i 然后求解问题就很简单了考虑[l,r]相当于前缀(r)-前缀(l-1)显然一个前缀很好求因为构成的和%a[1]意义下只可能是0~a[1]-1所以枚举 阅读全文
posted @ 2018-05-31 19:21 longint 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定n个数,问有多少子序列使得子序列中的数&起来=0 做法:显然的容斥题目 ans=2^n-1-(至少1位为1-至少两位为1+至少3位为1......) 我们考虑用dp[i]表示包含i这个状态的数有多少个 显然我们可以枚举所有可能的有1的状态 for i=1 to 1e6 do begin 阅读全文
posted @ 2018-05-26 12:34 longint 阅读(137) 评论(0) 推荐(0) 编辑