摘要:
传送门 ##解题思路 设 \(i,j\) 相邻,前面的重量和为 \(x\)。 若 \(i\) 在上面更优,则 \(max(x-s[i],x+w[i]-s[j])<max(x-s[j],x+w[j]-s[i])\) \(x-s[i]\) 一定小于 \(x+w[j]-s[i]\), \(x-s[j]\) 阅读全文
摘要:
洛谷传送门 高维前缀和 一维二维前缀和 首先多维前缀和肯定可以像二维一样进行容斥求出,但是很显然复杂度爆炸。 所以我们使用另一种求法。 二维前缀和: for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ a[i][j]+=a[i-1][j]; } } for(i 阅读全文
摘要:
传送门 解题思路 最小值最大————很显然先二分最终答案,然后贪心进行切割: 从头开始判断每一行能否切成b块大于二分的数的蛋糕,若不能就不断向下加行。 而判断过程可以用二维前缀和优化。 AC代码 #include<cstdio> #include<iostream> #include<cstring 阅读全文
摘要:
##传送门 大难不死,必有后福 自从在空间里大骂后 十分钟过了两道调了两天的题…… ##解题思路 非常经典的一个对序列进行模拟退火的题。 求方差时直接用公式就行(平均数一开始可以预处理出来) 求分组后最小的方差需要用到dp。 dp[i][j]表示前i个数分j组的方差。 直接枚举k转移即可。 ##注意 阅读全文
摘要:
##传送门 ##解题思路 先用Floyd求一遍最短路, 然后对m个点之外的序列模拟退火,取前k个设置城堡,O(N^2)求出当前对小距离,判断并更新ans。 没什么注意的但是我rand()写在while外面了所以调了一个小时把我心态搞崩了草 ##AC代码 #include<cstdio> #inclu 阅读全文
摘要:
##传送门 ##解题思路 特别狗的一道题 根据重力势能最小时平衡(??),可以进行模拟退火。 其他的套板子行了。 然后我就写挂了~~(交了24次)~~ ##AC代码 #include<cstdio> #include<iostream> #include<cstring> #include<cmat 阅读全文
摘要:
##洛谷传送门 ##模拟退火 推荐一篇感觉写得很好的洛谷日报 补充一点就是可以加个判断(这个题因为有多组T不适用): while ((double)clock()/CLOCKS_PER_SEC<MAX_TIME) SA(); 注意这个题的输出格式特别狗…… ##AC代码 #include<cstdi 阅读全文
摘要:
##传送门1 ##传送门2 一维请出门右转。 ##二维前缀和 d[i][j]表示从 (1,1) 点到 (i,j) 点的和。 很显然: 求d数组:d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+a[i][j] 求(a,b)到(c,d)的和:d[c][d]-d[a-1][ 阅读全文
摘要:
##传送门 ##解题思路 总体思路:二分W,对于每个W求得一个y,根据y-s的正负调整l和r,并且每次更新ans。 如何求y? 可以扫一遍矿石,用a数组记录下符合条件的数量的前缀和,b数组记录下符合条件的v的求点缀和;再枚举每个区间加起来即可。 ##AC代码 #include<iostream> # 阅读全文
摘要:
##传送门 ##解题思路 比较巧的一道题。 把$y−x=z−y$化简一下得$x+z=2y$,这要求x和z一定要同为奇数或偶数。 所以很明显我们首先要对他们分类: 按照奇数偶数点 按照颜色 这样就化成了若干个集合,而我们需要快速求出每个集合对答案的贡献。 把数学式子列一下: \(\sum_{i=1}^ 阅读全文
摘要:
##传送门 ##解题思路 仔细阅读题目,发现按照顺序插入每一个节点,且按照二叉搜索树的规则。 于是满足这两个条件其实就是笛卡尔树。 但是注意这里的x是读入的数,y是读入的数的下标。 构建完笛卡尔树后,其先序遍历的x值就是最终的ans。 (按照样例画个图就很显然了) ##AC代码 #include<i 阅读全文
摘要:
##传送门 ##前置知识 单调栈 ##笛卡尔树 ###定义 每个节点都由一个键值二元组构成(x,y)。 要求构建一棵树,满足: x上是一个二叉搜索树(左儿子<根<右儿子) y上是一个小根堆 ###构建过程 于是我们可以按照x值从小到大将节点加入笛卡尔树中。 新加入的点now一定要放在某个节点的右儿子 阅读全文
摘要:
##传送门 ##解题思路 发现某谷有单调栈板子了,就在这里贴一份代码吧。 单调栈讲解 ##AC代码 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<alg 阅读全文
摘要:
##CF传送门 ##洛谷传送门 ##解题思路 注意每个叶子节点的修改是独立的,不会对后面造成影响。 所以我们先从根遍历一边,O(n)求出不改变之前根节点的取值。 然后再从根遍历一遍,求出每个儿子变化会不会对根节点造成影响: AND:若另一个儿子是0,则无影响,否则有影响 OR:若另一个儿子是1,则无 阅读全文
摘要:
##CF传送门 ##洛谷传送门 ##解题思路 考虑什么情况数字 \(i\) 会出现在所有连续子数列的 \(mex\) 值中: 当且仅当两个 \(i\) 之间包含了 \(1\to (i-1)\) 的全部数字。 假设我们已经判断出两个 \(i\) 之间包含了 \(1\to (i-1)\) 的全部数字,这 阅读全文