随笔分类 - 思维
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你两个数组a,b; b数组是1..n的一个排列。 现在给你两种操作: add l,r将a[l..r]都加上1 query l,r 询问$∑^r_l\frac{ai}{bi} $ 其中a[i]/b[i]是下取整。 n 【题解】 很优秀的题 我们可以在线段
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 会发现如果x是reallynumber那么x+1也会是reallynumber.... (个位数+1,各位数的和+1了但是整个数也+1了。而且如果发生了进位的话,各个数码的和只会更小。。 因此这个reallynumber肯定有一
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 注意这k个序列每个都是排列。 如果在每个序列中都满足y出现在x之后的话。 那么我们从x连一条有向边至y (有一个序列不满足就不连 (这就表明最后的序列中x可以紧接着y 最后显然会形成一个有向无环图。 在这个图上求最长链就好了。
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你n个数字 让你删掉最小的数字 使得: 剩余的数字中 "最大的数字"小于等于"最小的数字 2" 【题解】 把数据从小到大排序。 显然只有删掉最小的数字或者最大的数字才可能改变最大数字和最小数字的比例 那么我们枚举最后的结果产生的那一刻最小的数字是什么。
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 首先。 这张图是无向无权图。 因此任意两点之间的最短路可以通过N^2的bfs轻易算出来。 即得到d[N+10][N+10] 考虑s[0] t[0]的最短路以及s[1] t[1]的最短路 如果d[s0][t0] l0或d[s1][
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 把x..y这条路径上的点标记一下。 然后从x开始dfs,要求不能走到那些标记过的点上。记录节点个数为cnt1(包括x) 然后从y开始dfs,也要求不能走到那些标记过的点上。记录节点个数为cnt2(包括y) 答案就为n (n 1)
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 如果点与点之间的距离都是1的话。 那么T次方之后的矩阵上a[1][n]就是所求答案了。 但是这一题的边权可能会大于1 但最多为10 很容易想到拆点。 我们把每个点又重新分为9个点。 x1,x2,x3..x9 然后对于所有的i,从
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 先建立一棵字典树。 显然,某一些节点上会被打上标记。 问题就转化成求所有标记的深度的和的最小值了。 (标记可以上移,但是不能在同一位置 则我们用树形动规的方法。 从底往上递归处理。 考虑以x为根的一棵子树。 如果这个节点被打上了
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 设长度为L的所有区间里面,石头的个数的最小值为k 设取到k的区间为l,r 那么k就为最多能通过的青蛙个数。 假设k再大一点。比如为k+1 那么所有的k+1只青蛙, 肯定会在某个时刻都落在l,r这个长度为L的区间 (无法直接跳过这
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 如果是一个k string的话。 考虑最后的串假设形式为sss..ss(k个s) 则s中出现的字母,整个串中最后出现的次数肯定为k的倍数。 如果某个字母出现的次数不为k的倍数。 那么直接输出 1 否则。 我们把每个字母出现的次数
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 如果点的个数 【代码】 cpp include define LL long long define rep1(i,a,b) for (int i = a;i = b;i ) define all(x) x.begin(),x.
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 二分+网络流 先处理出所有的人到所有的门的最短路dis(x,y) 二分所用的时间mid 则把所有的门都分成mid个。 表示1..mid这些时间这个门可以通过一个人。 然后建立一个超级源点S S和所有的人各连一条边,边权为1 然后
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 这道题要求的是一个最长反链长度 (点集中任意两点之间都不能到达,且点的个数最多) 最长反链长度=最小链覆盖(也即最小路径覆盖) 最小路径覆盖可以用以下方法求得。 首先,把每个点都x分成两个点x1,x2 (x1放在左边,x2都放在
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 因为所有人工资同时递减。 所以可以设置一个变化值delta. 然后每个人的初始值为k 则把k delta加入伸展树中。 会发现delta变化之后。 伸展树中每个人的工资就仍然是原先的值+delta 比如 I 2000 delta
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 链表,启发式合并。 把x变成y,和y全都变成x. 不论是前者还是后者。连续段的个数都是相同的,不影响结果。 那么我们把x,y中出现次数少的变成出现次数多的就好了。 每次只要O(小的数字的个数)就能完成合并。 (扫描一遍所有的'x
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 $x^2%n=1$ $x^2 1 = k n$ $(x+1) (x 1) % n == 0$ 设$n=a b$ 对于所有的a,b(a 【代码】
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 注意是1..n的排列。 设b的位置为i. 设i右边的数字,比b大的为1,比b小的为 1. (i左边的位置数字也一样设置成1和 1 则处理出pre[i..j]表示i..j这一段(1和 1)的和。 然后存在map中 做散列表。 然后
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 显然的滑动窗口题。 (尺取法 如果l..i这一段已经有k种珍珠了。 那么就尝试把l++; (即把l这个影响尝试去掉一下 如果不足k种珍珠了,那么就把l++撤销。 否则l++照常 (离散化一下数据 【代码】 cpp include
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 k%i=k (k/i) i 则∑k%i = n k ∑(k/i) i 因为k/i是整除运算。 所以会有某一段连续的i,它们的k/i的值都是相同的 那么 这一段连续的i用等差数列求和公式O(1)搞一下就好。 (然后i可以直接跳到上
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 dfs序 进入的位置设为1出去的设为 1则某个点进去的位置的dfs序的前缀和就是这个点到根节点的路径数。 (可以巧妙的把那些分叉路径去掉。 修改成公路后。就把下面的那个点(深度高的)的进入和出去的值都设置为0 用线段树维护区间和
阅读全文

浙公网安备 33010602011771号