给定 \(n\) 个数 \(a_i\),操作 \(3\) 次,每次选择一个区间,给区间内每个数增加 \(\rm len\) 的倍数的值。
使得所有数为 \(0\)
\(1\le n\le 10^5\)
\(\rm Sol:\)
考虑这样操作,先操作 \([1,n]\),再操作 \([1,1]\) 和 \([2,n]\),注意到当 \(n\ne 1\) 时有 \(n-1\) 和 \(n\) 互质,所以可以构造得到解。
给定 \(n\) 个堆石头,每堆有 \(a_i\) 个石子,Alice 和 Bob 轮流操作,每次操作为:选择与对方上一轮操作选择的不同的一堆石头,拿走其中一个石子。(第一轮任意)
求 Alice 和 Bob 谁必胜。
\(n\le 100,a_i\le 100\)
\(\rm Sol:\)
注意到如果存在一堆石头满足 \(\sum a_i<2\times a_x\),那么 Alice 可以一直拿这堆石头。所以 Alice 获胜。
否则由于假设 Alice 操作后变成了这种情况,那么 Bob 必胜,所以双方都会避免这个情况发生,所以所有石头都会被取完,那么根据 \(\sum a_i\) 的奇偶性判定答案即可。
题意很复杂。
大概先画一下你的行动路线,发现大概是一条链上挂了一点环,然后最后一个环可以不走回来的这样的一个东西。
所以就可以考虑 dp 了,设 \(f_i\) 表示当前到位置 \(i\),将 \([1,i]\) 中所有怪都消灭的方案。
那么转移有两种:
然后边界情况会需要一点特判比较麻烦,所以可以直接认为 \(f_0=-d\)(相当于增加了一段起点)
然后对于 \(f_n\) 单独转移一下即可,第二种转移显然可以拆开记录前缀 \(\min\)
给定 \(n,k,L\) 表示有一个大小为 \(L\times L\) 的矩形,内部有 \(n\) 个点,每个点有一个颜色 \(c_i\),位于 \((x_i,y_i)\),保证 \(1\le c_i\le k\) 且每种颜色至少有一个点,你需要求有多少个矩形满足其内部含有所有颜色的点。
\(k\le n\le 2000,L\le 10^9\)
\(\rm Sol:\)
将元素进行离散化现在我们的矩形大小为 \(n\times n\) 了。
考虑一维的情况如何处理,对于每个 \(l\) 维护 \(f(l)\) 表示最小的 \(r\) 使得 \([l,r]\) 合法。那么此时贡献为 \((L-r+1)\)
处理 \(f(l)\) 可以预处理每个颜色的下一个位置,取 \(\max\) 即可。
接下来考虑处理二维的情况,我们枚举矩形的一个边界(某一行),然后先对这一行做一维的处理,然后考虑将其拓展为二维的情况,每次在某个位置插入一个颜色 \(c\),这会使得答案改变,影响的区间 \([pre_c,i]\) 这个区间内的答案可能会变小。然而我们计算答案为取 \(\max\) 所以难以解决。
不妨反过来考虑,先处理出最终的答案,然后逆着处理,每次删除一个新颜色 \([pre_c,i]\) 的答案会取 \(\max\),然后每次查询一次全局贡献和。显然这是可以使用线段树维护的,然而直接取 \(\max\) 要写某科技树?所以好像不是很好做。
事实上观察到 \(f(l)\) 是单调的,所以直接写一个线段树二分找到对应区间,然后执行区间覆盖即可,复杂度为 \(\mathcal O(n^2\log n)\)
不过离散化后处理感觉很难写,代码先咕咕咕着。
给定一棵 \(n(n\rm ~is ~even)\) 个点的树 \(T\) 以及常数 \(k\)。现生成一张 \(n\) 个点的完全图 \(G\),对于每对点 \((u,v)\) 连接一条边权为 \(\textrm{dist}(u,v)\) 的边。
你需要求这张图的一个完美匹配使得边权和恰好为 \(k\);输出一组方案或确定不存在解。
完美匹配的定义是:一组边集,满足每个点都恰好被覆盖一次。
\(n\le 10^5,k\le n^2\)
\(\rm Sol:\)
题目太神仙了,先咕咕咕着。
原文:https://www.cnblogs.com/Soulist/p/13653490.html