摘要:
构造新数组bi=ai-i 阅读全文
摘要:
题目链接 和过去的自己不期而遇 需要进行点边转化以限制1头牛至多只产生1的贡献 阅读全文
摘要:
题目链接 “大胆假设,小心求证”,其他队伍通过题目的时间,也可以为你的思考提供一些参考。 我们可以发现,最后的字符串一定是101010…或者010101…。这样的形式并不美观,我们考虑把它修饰得可爱一些。我们可以把偶数位置的数字都取反。这样,最后的字符串就是111111…或者000000…。 接着, 阅读全文
摘要:
左移7次即可 阅读全文
摘要:
题目链接 在赛场上你消耗了那么多时间还没通过,很大一部分原因在于,这本来是一个【贪心】的模型,你却要用“动态规划”增加思维和编码复杂度 假如没有边界限制,那贪心就可以得到最优解,正确性显然。现在有了边界限制,那从右往左调整一下就好了 阅读全文
摘要:
题目链接 “交互的本质是二分” 本题的询问次数卡得很严,必须保证每次都能让候选点集合严格缩小一半。因此三选二的时候不能任选,而要选较大的两个 阅读全文
摘要:
题目链接 “最少个数的士兵”和“最大流”不匹配,怎么办呢? 你的想法比较朴素。考虑正难则反,补集转化,先让所有格子都放置士兵,让“拿走的士兵”更多 论文的做法更加优雅。让“即对行有贡献,又对列有贡献”的士兵更多 同时,题解的想法也提醒你,没有必要建出每个格子对应的边,直接从相应的行向相应的列连边即可 阅读全文
摘要:
题目链接 注意可能出现dpx+1在模意义下为0的情况,此时需要额外维护0的个数而不能求逆元 记f[x]表示x子树内包含x的连通子图的个数,g[x]表示全树包含x的连通子图的个数,由于子树的限制,所有fx互斥 【子树互斥模型】 求出f[x]后换根DP求出g[x]。答案即为u-LCA(u,v)上f的和+ 阅读全文
摘要:
动态开点线段树的做法。虽然通不过1e6的数据,但至少能通过数据规模小一些的原题 点击查看代码 #include <bits/stdc++.h> using namespace std; struct t1 { int l,r,x; }t[1000000*40+1000000+5]; int tot; 阅读全文
摘要:
iota:用从起始值开始连续递增的值填充一个范围,命名来源于希腊字母。如: iota(p+1,p+n+1,1); vector:emplace_back:在容器末尾原位构造元素。如: vector<pair<int,int> >vr[1000005]; vr[r].emplace_back(i,k) 阅读全文