04 2019 档案
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 先把所给的压缩形式的字符串转成二进制 然后对获得的01数组做一个前缀和(a[i][j]=以(i,j)为右下角,(1,1)为左上角的矩形内的数字的和) 这样就能O(1)复杂度获得一个长度为x的正方形的区间和了。 这样。我们直接暴力从1..n
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 设最后行分成了x行,列分成了y列。 那么答案就是floor(n/x) floor(n/y) 然后x+y 2=k //即平均分配x行、y列 我们可以枚举floor(n/x)的值 这个值其实就是n整除x 我们现在证明n/x的结果最多只可能有2
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 用floyd思想。 求出来这条新加的边影响到的点对即可。 然后尝试更新点对之间的最短路就好。 更新之后把差值从答案里面减掉。 【代码】 cpp include define ll long long using namespace std
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 算出来每个盘子要占用多少角度。 然后乘n看看是不是小于等于2π就好 (精度最好定在1e 7) 【代码】 cpp include define ll long long define double long double using nam
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 我们最后要的是一条最长的路径。 这条路径的权值和是所有点的权值和 所有边的权值和且这个值最大。 显然如果我们在某一条边上的累计的权值和=0) 所以如果我们求的是最大的权值和 边权和的话,那么求出来的路径一定不会有中间某个地方走着走着没油的
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 dp[i][j][k]表示前i列,有j个联通块下,最后一列的状态为k的方案数 k如果为1的话,表示最后一列两个块不一样,k如果为0表示一样 枚举最后一列的情况转移就好 【代码】 cpp include using namespace st
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 树的最长链是一定会经过两个叶子节点的。 我们可以构造一棵树,让最后的最长链一定是由经过根节点的两条链组成。 然后让这两条链的长度尽可能短就好。 那么创建k个叶子节点,然后从左往右依次加上去就好,即让每一条叶子节点到根节点的路径都竟可尽可能
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 注意只能改变a不能改变b 然后只要让a[i],b[i],a[n i 1],b[n i 1]这4个字符能凑成两对、全都一样就可以了 分类讨论下就好 【代码】 cpp include define ll long long using nam
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 枚举最大值和最小值在什么地方。 显然,只要包含最小值的区间,都让他减少。 因为就算那个区间包含最大值,也无所谓,因为不会让答案变小。 但是那些不包含最大值的区间却能让差值变大。 所以没有问题。 【代码】 cpp include defin
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 二分最后轮了几圈。 二分之后直接o(N)枚举具体要多少时间即可。 注意爆long long的情况。 可以用对数函数,算出来有多少个0 如果大于17直接缩小点就好。 【代码】 cpp include define ll long long
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 把a[i]处理成前缀和 离散化. 枚举i从1..n假设a[i]是区间和的a[r] 显然我们需要找到a[r] a[l] 【代码】 cpp include define ll long long using namespace std; co
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 找到出口到每个点的最短距离。 设你到出口的最短距离为temp 那么如果某个人到终点的距离temp,那么他们肯定不可能在某个时刻和你遇到 因为如果可以在某个时刻与你遇到的话,那他可以接下来跟着你走,那么他到终点的距离肯定是和你到终点的距离是
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 我们可以把这个行船的过程分解成两个过程 1.船经过时间t被风吹到了某个地方 2.船用这t时间尝试到达终点(x2,y2) 会发现如果时间t能最终能到达(x2,y2)的话 对于任意的时间t1 t,t1也能到达。 因为对于t后面的时间,比如t+
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 统计叶子节点个数m 把每条和叶子节点相邻的边权设置成s/cnt就可以了 这样答案就是2 s/m(直径最后肯定是从一个叶子节点开始,到另外一个叶子节点结束) 证明: 设dis(i,j)表示节点i和节点j之间的权值和 设a[1],a[2]..
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 两个点的子图他们的"密度"是比所有联通生成子图都要大的 "只要胆子大,遇到什么问题都不怕!" 【代码】 cpp include define rep1(i,a,b) for (int i = a;i = b;i ) define ll l
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 二分。 枚举每一个上升区的起始位置作为起点(这样做肯定是最优的),然后如果没有掉在地上的话就尽量往右二分(只有上升区之间的间隙会让他往下掉) 用前缀和处理出来每个上升区的长度,这样就能根据前缀和处理出来从第i个上升区到第mid个上升区之间
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 第一个人攻击一次需要1/x秒 第二个人攻击一次需要1/y秒 这两个数字显然都是小数。 我们可以二分最后用了多少时间来攻击。 显然这个是有单调性的,攻击时间越多的话,攻击的次数也就越多。 假设二分出来攻击的时间是mid 那么攻击的次数就是
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 如果找到最大的n使得1+2+...+n 【代码】 cpp include define ll long long using namespace std; const int N = 1e5; ll a,b; ll n; int tag[
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 如果这个回文串的左半部分,字母全是一样的。 那么显然不可能再分出来了,因为不管怎么分怎么排列,最后肯定都只能和原串一样。 所以无解 其他情况下,都有解。 可以保证答案是 【代码】 cpp include using namespace s
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 把数组排个序, 显然优先用大的且小于枚举的数字a[i]的数字变成a[i] 那么肯定有一个范围j. 然后a[j~i 1]都能在k花费以内变成a[i] 然后考虑i++ 这个时候肯定最好的情况还是a[j~i]都能变成a[i] (至少j不会变小,
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 其实就是让你最后这n个数字的和最大。 加上的x没有关系。因为肯定都是加上n个x 所以直接加上就可以了 主要在于如何选取j 显然我们要找到一个位置j. 然后pre[j]+aft[j]的值最大(pre[j]=1+2+3+...+j 1,aft
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 先求出来强连通分量。 每个联通分量里面,显然在联通块的尽头(没有出度)放一个捕鼠夹就ok了 【代码】 cpp include using namespace std; define lson l,m,rt= b;i ) define mp
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 计算出来每个字母出现的次数。 把字典序大的奇数出现次数的字母换成字典序小的奇数出现次数的字母贪心即可。 注意只有一个字母的情况 然后贪心地把字典序小的字母放在前面就好 【代码】 java include define rep1(i,a,b
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 1000以内就有非常多组互质的数了(超过1e5) 所以,直接暴力就行...很快就找完了 (另外一开始头n 1条边找1和2,3...n就好 【代码】 java include define ll long long using namesp
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 火车从1,2,3...n 1的方式绕圈走。(即每次从i走到i+1) 有一些点有货物需要装载,但是每个点只能装上去一个货物。 每个货物都有目标点卸货点(卸货的时候不限量) 问你假设火车起点为s(s=1,2,3...n)时,完成所有点的装货卸货任务需要的最小
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 写一个函数判断当前局面是否有人赢。 然后枚举上一个人的棋子下在哪个地方。 然后把他撤回 看看撤回前是不是没人赢然后没撤回之前是不是有人赢了。 如果是的话 那么就是满足要求的啦吸吸吸 【代码】 java include define ll
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 会发现如果a[i]=a[j] 那么b[i]~b[j]都是相同的,等于b[i] 而b[i]等于b[i 1]+1或者b[i] 有两种可能 所以对于两个相同的a[i]之间的区间。 只要在区间开始的时候乘个2就行。 如果不在任何一起相等的区间里面
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 因为gcd(a,b)=x 所以设a = n x b = m x 又有a b/gcd(a,b)=lcm(a,b)=y 则n m x = y 即n (m x)=y 所以枚举y的因子n 算出对应的y/n是否为x的倍数 如果是的话,则算出n,m的
阅读全文