「BJOI2018」求和】的更多相关文章

「BJOI2018」求和 传送门 观察到 \(k\) 很小而且模数不会变,所以我们直接预处理 \(k\) 取所有值时树上前缀答案,查询的时候差分一下即可. 参考代码: #include <algorithm> #include <cstdio> #define rg register #define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w&…
题解 对于50个k都维护一个\(i^k\)前缀和即可 查询的时候就是查询一段连续的区间和,再加上根节点的 代码 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define space putchar(' ') #define enter putchar('\n') #define mp make_pair #define MAXN 300005 #defi…
「BJOI2018」链上二次求和 https://loj.ac/problem/2512 我说今天上午写博客吧.怕自己写一上午,就决定先写道题. 然后我就调了一上午线段树. 花了2h找到lazy标记没有清空.我tm清空了有没有标记没清空标记本身. 又花25min找到某个乘法爆int了.int真的淡疼,要不是longlong自带巨无霸常数,这辈子都不想用int. 一个上午就没有了. //Achen #include<bits/stdc++.h> #define For(i,a,b) for(in…
题面 题解 转化一下可以变成所有小于等于r的减去小于等于l - 1的 然后我们求小于等于x的 显然是 \(\sum_{i = 1}^{n} \sum_{j = 1}^{min(i,x)} sum[i] - sum[i - j]\) 对于\([x,N - x]\)前缀和被加了\(x\)遍 对于\([1,N - x]\)前缀和被减了\(x\)遍 对于\([1,x - 1]\)前缀和被加了下标那么多遍 对于\([N - x + 1,N]\)前缀和被减了N - 下标遍 然后要维护什么就很清楚了 \(\s…
题解 具体就是列一个未知数方程\(dp[i]\)表示有\(i\)滴血的时候期望多少轮 \(dp[i] = 1 + \sum_{j = 1}^{i + 1} a_{i,j}dp[j]\) \(dp[n] = 1 + \sum_{j = 1}^{n} a_{i,j}dp[j]\) \(a_{i,j}\)表示从\(i\)滴血到\(j\)滴血的概率 可以高斯消元? 但是发现这个似乎和递推形式只差一点点 \(a_{i,i + 1} dp[i + 1] = -1 - \sum_{j = 1}^{i - 1}…
题解 设\(f[p][a][b]\)表示询问了\(p\)次,答案是\(a,b\)是否会被猜出来 然后判断如果\(p = 1\) 第一个问的\(Alice\),那么\([s,\sqrt{nm}]\)约数只有一个,\(f[p][a][b] = 1\)否则为\(0\) 如果第一个问的\(Bob\),那么\(a + b - 2 * S <= 1\)那么\(f[p][a][b] = 1\)否则为\(0\) 剩下的按照\(p\)这次操作询问谁,且然后从可能的数对里找\(f[p - 1][i][j]\)为\(…
题面 题解 推结论大题--然而我推不出什么结论 奇环显然是NO 如果一个联通块里有两个分离的环,也是NO 如果一个联通块里,点数为n,边数为m m <= n的时候,是YES m >= n + 2的时候,肯定是NO m = n + 1的时候 如果只存在一个双联通分量的话,取出这个双联通分量,存在两个点点度为3 他们之间有3条路径,如果其中两条为2的话答案是YES,否则是NO 代码 #include <bits/stdc++.h> #define fi first #define se…
题解 每次开这样的数据结构题感想都大概是如下两点 1.为什么别人代码长度都是我的1/2???? 2.为什么我运行时间都是他们的两倍???? 简单分析一下,我们关注一个区间是否合法只关注这个区间有多少个1,有多少个0 有偶数个1,一定合法,因为3的二进制是11,我们只需要111111拼起来一定除得开3 只有一个1,一定不合法,因为必然质因数只有2 有奇数个且大于一个1,没有0,一定不合法,我们两两消掉11,最后会剩下一个除不开的1 有奇数个且大于一个1,有一个0,一定不合法,我们两两消掉11,最后…
传送门 Description 有\(m+1\)个数,第一个数为\(p\),每轮:选一个数\(+1\),再依次选\(k\)个数\(-1\) 要求如果第一个数\(=N\),不能选它\(+1\),如果第一个数\(=0\),不能选它\(-1\) 如果没有可选的数,跳过该次选择 问使得第一个数\(=0\)的期望步数 \(N\le1500\),\(Case\le10\) Solution 设\(f_i\)表示当第一个数为\(i\)时期望多少轮变为\(0\) \[ f_i=1+\sum_{j=1}^{i+1…
题意 你现在有 \(m+1\) 个数:第一个为 \(p\) ,最小值为 \(0\) ,最大值为 \(n\) :剩下 \(m\) 个都是无穷,没有最小值或最大值.你可以进行任意多轮操作,每轮操作如下: 在不为最大值的数中等概率随机选择一个(如果没有则不操作),把它加一: 进行 \(k\) 次这个步骤:在不为最小值的数中等概率随机选择一个(如果没有则不操作),把它减一. 现在问期望进行多少轮操作以后第一个数会变为最小值 \(0\). \(1 \leq p \leq n \leq 1500\) ,\(…