ACM
文章平均质量分 68
各种算法学习记录和解题补题记录
Mintind
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 942 (Div. 2) A-D2
Codeforces Round 942 (Div. 2) A-D2原创 2024-05-07 22:53:46 · 570 阅读 · 0 评论 -
【树链剖分】模板+树剖lca
树链剖分将整棵树剖分为若干条链,使它组合成线性结构,然后用其他的数据结构维护信息。本文讨论常见的重链剖分各定义来自OI Wiki 树链剖分重子节点子节点中子树最大的子结点轻子节点表示剩余的所有子结点重边从这个结点到重子节点的边轻边到其他轻子节点的边若干条首尾衔接的重边构成重链[fa(x)] 表示节点 [x] 在树上的父亲。[dep(x)] 表示节点 [x] 在树上的深度。[siz(x)] 表示节点 [x] 的子树的节点个数。[son(x)] 表示节点 [x] 的 重儿子。原创 2024-04-15 16:44:08 · 284 阅读 · 0 评论 -
AC自动机(跟算法提高课学的
每个节点x对next[x]的答案做贡献,所以可以沿着树的底层节点往上跳,顺序就是深度遍历反过来,所以可以直接用队列的逆序(妙啊,要是我已经用stl的queue再用vector倒一次了)每个单词s出现多少次实际上就是树上有多少前缀以s为后缀,这样不好算所以可以每个“后缀”对“前缀”节点做贡献,也就是以x为结尾的后缀会对以next[x]结尾的前缀做贡献。讲的很清楚,基本上把算法提高课这一节的内容,从KMP到AC自动机到优化版都讲明白了(虽然我还不是很懂但讲的比我好比我详细,强推!原创 2023-11-09 15:07:13 · 187 阅读 · 0 评论 -
蓝桥杯2023年省A(一波三折的)【买瓜】折半搜索+剪枝+排序
我的理解是,在搜第二段的时候,前面已经出现很多凑到m的情况,使ans变小了,所以第二段会被剪得更狠;那有没有办法让第一段多剪掉一点呢,就让第一段都是大数,sum容易超过m,就会多多被剪了。不直接搜i+1,而是根据还需要的斤数在剩下的瓜里二分(因为已经排序了嘛),大于还需要的斤数的瓜可以不用考虑。一开始觉得像dp,试着写了,显然过不了,但我实在觉得搜索也过不了啊,去看题解,发现使用了。折半搜索就是先搜一半,记录下答案,再搜一半,最后把答案整合在一起。菜死我算了,真在赛场上碰到这种题我就拿个30分吧(默哀。原创 2024-03-13 21:55:12 · 187 阅读 · 0 评论 -
[蓝桥杯 2023 省 A] 网络稳定性
判断询问是否已成立的方法也很简单,只需查询该询问中的另一个端点是否在我们将要合并的连通块内即可,时间复杂度 O(α(n))。会不会影响该做法的正确性呢?化简题意后发现,这题本质是将边按边权从大到小排序后依次插入原图,询问两个点在什么时候会连通,允许离线。利用启发式合并的思想,我们将每个询问挂在它的两个端点上,在合并两个联通块时,处理较小的连通块中的询问。查询时,查 u 和 v 的 LCA 的权值即可,即为最大连通路径上的最小连通权值。因为按权值从大到小遍历,已经通过权值大的边,使得点之间尽可能连通了。原创 2024-04-15 16:47:05 · 397 阅读 · 0 评论 -
洛谷P5651 基础最短路练习题
洛谷P5651 基础最短路练习题,简单分析后直接bfs原创 2023-02-20 21:02:27 · 168 阅读 · 0 评论 -
华为杯“华南理工大学程序设计竞赛(同步赛) A KNN算法
如果目标值在序列中有多个,lower_bound返回的是第一个目标值的迭代器,而upper_bound返回的是最后一个目标值的下一个迭代器。思路挺好想的,二分枚举答案,判断距离为mid时是否满足范围内刚好有k个点。,l+r是会爆int的,所以l、r、mid都要开long long。lower_bound返回的是第一个大于等于目标值的迭代器。upper_bound返回的是第一个大于目标值的迭代器。l和r的初值其实就是答案的可能取值,由于坐标范围是。的点的下标(也就是最后一个坐标小于等于。但是赛场了调了很久…原创 2024-04-25 21:16:21 · 366 阅读 · 0 评论 -
启发式合并学一学
但是我们发现,对于每个节点v,最后一棵子树是不用清空的,因为做完那棵子树后可 以把其结果直接加入v的答案中。整体思路就是用cnt数组记录子树中颜色出现的次数,但是计算完一棵子树需要清空,最后计算重儿子的子树不需要清空。就是加了一个桶来记录cnt的状况,以此来维护子树上的最大值和最小值,一棵子树最大值=最小值即是平衡的。当然是所含节点最多的一棵咯,我们称之为“重儿子”但是每做完一棵子树就需要清空ap,以免对其兄弟造成影响。其实感觉这样快不了多少……而这样做它的祖先时就要把它重新搜一遍,浪费时间。原创 2024-03-13 14:11:58 · 312 阅读 · 1 评论 -
AtCoder Regular Contest 176(ARC176)A、B
既然固定一个x + y = k能选出n个格子,并且保证每行每列一个,那么能不能选出m个不同的k,达到每行每列m个呢?给一个n×n的方格,给出m个坐标(x,y)×m,在方格中选择一些格子填入1,要求填完后每行有m个1,每列有m个1,并且之前给出的坐标对应方格中也是1,输出一种可能的方案。可以让行坐标x+列坐标y(模n)固定,x遍历0~(n - 1)时,y也遍历0~(n - 1)。) % n,x遍历0~(n - 1),y = (k - x + n) % n。),显然k = (x。),选上k = (x。原创 2024-05-06 20:29:37 · 748 阅读 · 0 评论 -
第 46 届 ICPC 亚洲区域赛(上海)补题 GI
当size(x)为偶时(即子树上边数为奇),就需要留一条边(与{x, fa[x]}或者其他留下的边成一组),其他边分组,记这样的方案数为dp[x]f[i][j][k]表示从1-i中选,用了j次加倍,S和T的t值之和的差+2600为k时,能获得的v值之和最大值。当size(x)为奇时(即子树上边数为偶),那么可以子树中两两分组,记这样的方案数为dp[x];把s条边两两分组,即先在s中取2个,再在s - 2中取2个…最后除以s/2的排列。那么计算dp[x]时,不仅要x的所有儿子的方案相乘,还要将留下的边分组。原创 2024-04-26 10:41:20 · 574 阅读 · 0 评论 -
导弹拦截
洛谷 P1158 导弹拦截经过 1111年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为 0 0时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入...原创 2018-10-04 21:11:15 · 826 阅读 · 0 评论 -
洛谷 P1043 数字游戏
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int a[110];int n,m;int t;long long maxn=-1<<30,minn=1<<30;原创 2018-11-25 10:55:28 · 319 阅读 · 1 评论 -
数楼梯
洛谷 P1255 数楼梯题目描述楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编一个程序,计算共有多少种不同的走法。输入输出格式输入格式:一个数字,楼梯数。输出格式:走的方式几种。终于知道为什么爬楼梯就是斐波那契数列了…按照递归思想,走n级楼梯先走第1级楼梯,而第一步走法就两种,一步一格或一步两格. 于是爬n级楼梯=一步一格+爬n-...原创 2018-08-26 22:09:56 · 2610 阅读 · 0 评论 -
导弹拦截
洛谷 P1020 导弹拦截题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是 \le 50000≤50000的正整数),计算...原创 2018-11-03 23:15:14 · 157 阅读 · 0 评论 -
联通块
联通块【题目描述】一个n * m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0。问有多少个四连通的黑色格子连通块。四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每个黑色格子能通过四连通的走法(上下左右),只走黑色格子,到达该联通块中的其它黑色格子。【输入】第一行两个整数n,m(1≤n,m≤100),表示一个n * m的方格图。接下来n行,每行m个整数,分...原创 2018-10-11 00:04:56 · 3145 阅读 · 2 评论 -
双重回文数
洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes题目描述如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数。编一个...原创 2018-08-16 14:38:02 · 1745 阅读 · 0 评论 -
洛谷 P1168 中位数
洛谷 P1168 中位数题目描述给出一个长度为N的非负整数序列Ai,对于所有1 ≤ k ≤ (N + 1) / 2,输出A1, A3, …, A2k-1的中位数。即前1,3,5,…1,3,5,…个数的中位数。输入输出格式输入格式:第1行为一个正整数N,表示了序列长度。第2行包含N个非负整数Ai(Ai≤ 10^9)输出格式:共(N + 1) / 2行,第i行为A1, A3, …, A...原创 2019-01-06 20:24:58 · 814 阅读 · 3 评论 -
放苹果
洛谷 P2386 放苹果题目背景(poj1664)题目描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法)输入输出格式输入格式:第一行是测试数据的数目t(0 <= t <= 20),以下每行均包括二个整数M和N,以空格分开。1<=M,N<=10输出格式:对输入...原创 2018-08-30 20:03:07 · 188 阅读 · 0 评论 -
Mayan游戏
题目略我们把空白看成0,那么共有4种移动方法x优先于y,可以通过循环实现1优先于-1,看下面我们必须保证第一个搜到的就是最优解,搜到解就return空白,跳过不在右边界,右移右边界且左边为0(若左边不是空,从左边格子右移更优),左移不在左右边界且左边为0(因为这种前面没办法右移完成),左移接下来看代码我这里的dfs(nn)是指进行第nn次移动所以在memcpy之前一定...原创 2018-12-23 21:02:26 · 230 阅读 · 0 评论 -
填涂颜色
P1162 填涂颜色#include <iostream>#include <cstdio>using namespace std;int n;int x=0,y=0;int a[35][35],b[35][35];int xx[4]={1,-1,0,0};int yy[4]={0,0,1,-1};struct T{ int x,y;}c[1001]...原创 2018-10-28 15:57:32 · 575 阅读 · 0 评论 -
最小函数值
#include #include #include using namespace std;struct T{int m,mi,i;}x[10005];int A[10005],B[10005],C[10005];int l=0;void put(T d){int now,next;x[++l].m=d.m;now=l;while(now&amp;amp;gt;1){next=...原创 2018-10-20 17:39:07 · 1307 阅读 · 0 评论 -
k皇后
洛谷 P2105 K皇后题目描述小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后。他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的。(Ps:一个皇后会攻击到这个皇后所在的那一行,那一列,以及两条对角线)输入输出格式输入格式:第一行三个正整数 n,m,K,表示棋盘的行列,以及小Z摆放了K个皇后。接下来K行,每行两个正整数x,y,表示这个皇后被摆...原创 2018-08-26 19:59:31 · 741 阅读 · 0 评论 -
nyoj 47 过河问题
过河问题题目描述:在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。输入描述:第一行是一个整数T(1&...原创 2018-12-23 15:36:48 · 390 阅读 · 0 评论 -
字符变换
洛谷 P1032 字串变换题目描述已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则):A1 -> B1A2 -> B2 规则的含义为:在 A中的子串 A1可以变换为 B1 ,A2可以变换为B2 …。例如:A=‘abcd’BB=’xyz’变换规则为:‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’则此时,A可以经过一系...原创 2019-01-01 22:46:50 · 1101 阅读 · 0 评论 -
大整数开方
#include #include #include using namespace std;const int SIZE=200;struct T{int len,num[SIZE];};//num[1]表示个位,num[2]表示十位T times(T a,T b){T ans;memset(ans.num,0,sizeof(ans.num));for(int i=1;...原创 2018-10-11 00:01:55 · 920 阅读 · 0 评论 -
超有爱的并查集~(转)
作者:飘过的小牛来源:CSDN原文:https://blog.csdn.net/niushuai666/article/details/6662911版权声明:本文为博主原创文章,转载请附上博文链接!例子就是杭电上的畅通工程:http://acm.hdu.edu.cn/showproblem.php?pid=1232首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇...转载 2018-11-07 23:20:01 · 155 阅读 · 0 评论 -
回文日期
洛谷 P2010 回文日期题目描述在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。牛牛习惯用 88 位数字表示一个日期,其中,前 44 位代表年份,接下来 22 位代表月 份,最后 22 位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表 示方法不会相同。牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。现 在,牛牛想知道:在他指...原创 2018-08-15 16:15:24 · 1794 阅读 · 0 评论 -
关灯
例4.35 关灯一条街道上有无数盏灯,每盏灯有自己的独立开关.管理员找若干个人按顺序一个一个从街道的一侧进入,每个人看到亮着的灯就熄灭,直到看到第一盏关着的灯,将其点亮,完成任务. 如果所有的灯质量完好,那么第m个人走过后,有多少灯被点亮过?分析:灯的状态只有亮灭两种,我们用0表示灭,1表示亮,模拟10个人走过街灯的过程.状态 灯的情况 被点亮过的灯数初始...原创 2018-08-15 15:43:05 · 1187 阅读 · 0 评论