- 博客(7)
- 收藏
- 关注
原创 Codeforces 625D Finals in arithmetic(构造)
解析:k位的数字n可能是有k位的a得来也可能由k-1位的a得来。 先将n视为字符串s[1....k] 以a是k位为例,设p为进位,l,r为左右端点 起始l = 1,r = n,p = 0 若p = 0,s[l..r] = a...b 那么a[r]+a[l] = b,再将a与b做差,差值只能为0和1,如果是其他值,则不能形成,如果是0,说明a[l+1]+a[r-1] 若p = 1,s[l
2016-05-31 16:41:55 504
原创 Codeforces 650C Table Compression (并查集+拓扑排序)
解析:不看tags都意识不到用图论。 一个位置对应一个节点,对于每行每列,值相同的用并查集union一起,值不相同的,值小的节点指向值大的节点。 压缩后节点的值是到该节点的最长的链的长度,可以通过拓扑排序求得。 [code]: #include #include #include #include using namespace std; const int maxn = 1e6
2016-05-31 16:14:30 314
原创 Codeforces 637D Running with Obstacles (贪心)
解析:查看每对相邻的障碍,如果距离大于s,那么可以落地并在下一个障碍前起跳。对每次落地和起跳加以判断即可。 [code]: #include using namespace std; typedef long long LL; const LL MOD = 1e9+7; int n,m,a[205]; LL dp[2][205][1005]; void sol(){ int i,
2016-05-31 15:55:19 317
原创 Codeforces 626F Group Projects (DP)
官方题解很详细 This is a dynamic programming problem. Notice that the total imbalance of the groups only depends on which students are the maximum in each group and which are the minimum in each group.
2016-05-31 15:50:22 568
原创 CodeForce 626E Simple Skewness (贪心+三分)
题目:给出n个数字,求出一个子集,使得其平均数与中位数的差值最大。 解析:首先将a[1...n]从大到小排序,在固定中位数的位置后,子集的构成必然是在中位数位置的两侧选取相同个,显然,每侧要尽量选取较大的值。 可以发现,选取的个数与平均数具有凸函数性质,所以通过三分找到临界点。整体复杂度O(nlogn)。 [code]: #include using namespace std; co
2016-05-31 10:47:46 285
原创 CodeForces 659G Fence Divercity (DP)
解析:设dp[i][j]为考虑前i个Fence,cut的部分包含第i个Fence,第i个Fence处理后的高度为j的方案数。 则首先 1 如果j 反之,dp[i][j] = 1; 得到转移方程后显然不能直接用,因为空间和时间都特别大,但是我们注意到,对于每一个i,我们只需要维护3个前缀和就可以完成方程的转移。 设s[i][j] = dp[i][1]+dp[i][2]+...+dp[i][
2016-05-31 10:40:50 371
原创 Codeforces 665E Beautiful Subarrays (Trie树)
题意:找出异或和>=k的连续子序列个数。 官方题解:http://codeforces.com/blog/entry/44466 [code]: #include #include using namespace std; typedef long long LL; const int maxn = 1e6+5; const int ML = 30; struct Nod{ in
2016-05-04 15:36:10 293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人