算法
Uletay
这个作者很懒,什么都没留下…
展开
-
【矩阵乘法】Fibonacci前n项和
题目描述大家都知道Fibonacci数列吧,f[1]=1,f[2]=1,f[3]=2,f[4]=3...也就是f[n]=f[n-1]+f[n-2]。现在,问题很简单,输入n和m,求前n项和取模m。输入输入n和m1<=n<=2 000 000 0001<=m<=1 000 000 010输出输出前n项和取模m。样例输入5 1000样例...原创 2019-08-12 15:14:26 · 460 阅读 · 0 评论 -
【线段树】区间求和
题目描述给定一数列,规定有两种操作,一是修改某个元素,二是求区间的连续和。输入输入数据第一行包含两个正整数n,m(n<=100000,m<=500000),以下是m行,输出每行有三个正整数k,a,b(k=0或1, a,b<=n).k=0时表示将a处数字加上b,k=1时表示询问区间[a,b]内所有数的和。对于每个询问输出对应的答案。样例输入10 20...原创 2019-08-01 10:16:56 · 901 阅读 · 0 评论 -
【哈希】Seek the Name,Seek the Fame
题目描述给定若干个长度小于等于400000的字符串,在每个字符串中求出所有既是前缀又是后缀的子串长度。例如:ababcababababcabab,既是前缀又是后缀的有:ab,abab,ababcabab,ababcababababcabab。输入输入有多组,每行一个字符串。输出对于每组输入,输出每个符合条件的子串的长度样例输入ababcababababcabab...原创 2019-07-23 14:24:05 · 261 阅读 · 0 评论 -
【哈希】Power String
题目描述给定若干个长度小于等于1e6的字符串,询问每个字符串最多由多少个相同的子串重复连接而成。如:ababab,最多由3个ab连接而成。输入输入有多组,每行一个只有小写字母组成的字符串。以"."为结束符输出对于每组输入,输出一行,表示答案。样例输入abcdaaaaababab.样例输出143题解这题之前有KMP的方法,哈希的着手点在于记录...原创 2019-07-23 13:21:33 · 564 阅读 · 0 评论 -
【扩展欧几里得】青蛙的约会
题目描述两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为...原创 2019-07-27 12:16:58 · 66 阅读 · 0 评论 -
【Dijkstra】单源最短路径(洛谷P4779)
题解#include<iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;const int INF=0x7f7f7f7f;const int maxn=1e5+10;int tot=0,head[maxn*4],dist[max...原创 2019-08-05 11:00:05 · 142 阅读 · 0 评论 -
【哈希】Oulipo
题目描述给出两个串S1,S2(只有大写字母),求S1在S2中出现了多少次。例如S1=“ABA”,S2=“ABABA”,答案为 2。输入T组数据,对每组数据输出结果。每组数据保证strlen(S1)<=10^4,strlen(S2)<=10^6。输入输入T,表示T组数据接下来每行一个S1,每行一个S2。输出输出T行,表示每组的答案。样例输入3BAPC...原创 2019-07-23 10:37:43 · 257 阅读 · 0 评论 -
【倍增法lca】祖孙询问
题目描述已知一棵n个节点的有根树。有m个询问。每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系。输入输入第一行包括一个整数n表示节点个数。 接下来n行每行一对整数对a和b表示a和b之间有连边。如果b是-1,那么a就是树的根。 第n+2行是一个整数m表示询问个数。 接下来m行,每行两个正整数x和y。输出对于每一个询问,输出1:如果x是y的祖先...原创 2019-07-31 21:18:54 · 355 阅读 · 0 评论 -
【倍增法lca】dis
题目描述给出n个点的一棵树,多次询问两结点之间的最短距离。(边是双向的)输入测试数据第一行为2个整数N和M(1<n<=10000,0<m<=20000).N表示点数,M表示询问次数。下来n-1行,每行3个整数x,y,k,表示点x和点y之间存在一条边长为k(0<k<=100).再接下来m行,每行2个整数x,y,表示询问点x到点y的最短距离输...原创 2019-07-31 21:16:14 · 879 阅读 · 0 评论 -
【KMP】似乎在梦中见过的样子(未完)
题目描述“Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约.这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了使这一次 Madoka 不再与 QB签订契约,Homura 决定在刚到学校的第一天就解决 QB.然而,QB 也是有许多替身的(但在第八话中的剧情显示它也有可能是无限重生的),不过,意志坚定的 Homura 是不会...原创 2019-07-22 22:10:25 · 283 阅读 · 0 评论 -
【中国剩余定理】曹冲养猪
题目描述自从曹冲搞定了大象以后,曹操就开始琢磨让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲很不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。举个例子,假如有16头母猪,如果建了3个猪圈,剩下1头猪就没有地方安家了;如果建造了5个猪圈,但是仍然有1头猪没有地方去;如果建造了7个猪圈,还有2头没有地方去。你作为曹总的私人秘书理...原创 2019-07-26 16:59:49 · 1164 阅读 · 0 评论 -
【扩展欧几里得】同余方程
题目描述求关于x的同余方程ax≡1(mod b)的最小正整数解。输入每组输入数据只有一行,包含两个正整数a, b,用一个空格隔开。数据规模:对于40%的数据,2≤b≤1,000;对于60%的数据,2≤b≤50,000,000;对于100%的数据,2≤a, b≤2,000,000,000。输出每组输出只有一行,包含一个正整数x0,即最小正整数解。...原创 2019-07-26 16:54:50 · 152 阅读 · 0 评论 -
【倍增法lca】聚会
题目描述Y岛风景美丽宜人,气候温和,物产丰富。Y岛上有N个城市,有N-1条城市间的道路连接着它们。每一条道路都连接某两个城市。幸运的是,小可可通过这些道路可以走遍Y岛的所有城市。神奇的是,乘车经过每条道路所需要的费用都是一样的。小可可,小卡卡和小YY经常想聚会,每次聚会,他们都会选择一个城市,使得3个人到达这个城市的总费用最小。 由于他们计划中还会有很多次聚会,每次都选择一个地点是很烦人的事情...原创 2019-07-31 14:18:43 · 360 阅读 · 1 评论 -
【倍增法lca】点的距离(链式前向星)
题目描述给定一棵有n个结点的树,Q个询问,每次询问点x到点y亮点之间的距离输入第一行一个n,表示有n个节。接下来有n-1行,每行2个整数x,y表示x,y之间有一条连边。然后一个整数Q,表示有Q次询问,接下来Q行每行2个整数x,y表示询问x到y的距离。输出输出Q行,每行表示每个询问的结果样例输入61 21 32 42 53 622 65 6样...原创 2019-07-31 14:16:03 · 674 阅读 · 0 评论 -
【KMP】Periods of Words
题目描述一个串是有限个小写字符的序列,特别的,一个空序列也可以是一个串. 一个串P是串A的前缀, 当且仅当存在串B, 使得 A = PB. 如果 P A 并且 P 不是一个空串,那么我们说 P 是A的一个proper前缀. 定义Q 是A的周期, 当且仅当Q是A的一个proper 前缀并且A是QQ的前缀(不一定要是proper前缀). 比如串 abab 和 ababab 都是串abababa的周...原创 2019-07-22 15:55:39 · 84 阅读 · 0 评论 -
【差分约束】糖果
题目描述幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求。幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。输入输入...原创 2019-08-05 14:19:41 · 606 阅读 · 0 评论 -
【差分约束】intervals
题目描述一个整数集合Z有n个区间,每个区间有3个值,ai,bi,ci代表,在区间[ai,bi]上至少有ci个整数属于集合Z,ci可以在区间内任意取不重复的点。现在要满足所有区间的约束条件,问最少可选多少个点。输入第一行一个整数n,表示区间个数以下n行描述区间,第i+1行,三个整数ai,bi,ci,由空格隔开,其中 0 <= ai <= bi <= 50000 且...原创 2019-08-05 19:45:13 · 346 阅读 · 0 评论 -
【欧拉回路】欧拉回路(dfs+链式前向星)
题目链接:https://loj.ac/problem/10105题解对欧拉回路概念的理解看的这个,讲的够直接了当:https://blog.csdn.net/qq_36551189/article/details/80905345首先要弄清楚,结构体edge中weight权值保存的是这条边在题目中的编号,然后edge的下标从2开始的目的是,由于存在有向图和无向图的情况,对于无向图来说...原创 2019-08-06 13:42:49 · 587 阅读 · 0 评论 -
【矩阵乘法】Fibonacci第n项
题目描述大家都知道Fibonacci数列吧,f[1]=1,f[2]=1,f[3]=2,f[4]=3.......也就是f[n]=f[n-1]+f[n-2]。现在,问题很简单,输入n和m,求第n项取模m。输入输入n,m。1<=n<=2 000 000 000 。1<=m<=1 000 000 010 。输出输出第n项取模m样例输入5 10...原创 2019-08-12 14:19:02 · 493 阅读 · 0 评论 -
【矩阵乘法】矩阵A×B
题目描述矩阵A规模是n×m,矩阵B规模是m×p,现在需要你求A*B输入输入n,m。然后输入n×m的矩阵。输入p,然后输入m×p的矩阵。1<=n,m,p<=100-10000<=矩阵元素<=10000输出输出相乘后的n×p的矩阵样例输入2 31 2 33 2 121 12 23 3样例输出14 1410 10...原创 2019-08-12 14:10:06 · 3694 阅读 · 0 评论 -
【SG函数】HDOJ1848
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848sg[x] != 0时,它的后继一定有为零的,也就是sg[i-f[j]] 有一个为0的,那么只要选择这个对应的 f[j],就能让对手陷入必输状态。sg[x] == 0时,表示它的子节点都不为零,也就是sg[i-f[j]] 没有一个为0的,那么当无论从f数组选哪个数,都无法造成让对手必输...原创 2019-08-20 21:01:58 · 140 阅读 · 0 评论 -
【尼姆博弈】POJ2234
题目链接:http://poj.org/problem?id=2234Bouton定理:先手能够在非平衡尼姆博弈中取胜,而后手能够在平衡的尼姆博弈中取胜。#include<iostream>using namespace std;int main(){ int n; while(cin>>n) { int ans=0,a; for(int i=...原创 2019-08-20 20:59:51 · 122 阅读 · 0 评论 -
【尼姆博弈】HDOJ1847
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1847这题3是一个必败点,当只剩3张牌时对手只能拿1或2,那就一定能拿到最后的牌。#include<iostream>using namespace std;int main(){ int n; while(cin>>n) { if(n%3==0) ...原创 2019-08-20 20:58:33 · 124 阅读 · 0 评论 -
【巴什博弈】Public Sale
这题相比上一题需要注意一点就是当n>m时第一次募捐的金额可以在n-m范围之间,要全部输出。#include<iostream>using namespace std;int main(){ int n,m; while(cin>>m>>n) { if(n>=m) { for(int i=m;i<n;i++) ...原创 2019-08-20 20:48:14 · 136 阅读 · 0 评论 -
【巴什博弈】HDOJ2188悼念512汶川大地震遇难同胞——选拔志愿者
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2188巴什博弈的模板题,代公式就可以了。a代表目标捐款额,b代表每次能捐的最大额度。那么如果当a是b+1的整数倍时,先捐的林先生一定输,因为林先生只能捐1-b之间的数,那么徐队只要每次补够b+1的金额就能保证赢。相对应的,如果a对b+1取余不为0时先捐的林先生一定赢,林先生第一次先捐这个余数,然后每...原创 2019-08-20 20:39:19 · 106 阅读 · 0 评论 -
【AC自动机】P3796 【模板】AC自动机(加强版)
题目链接:https://www.luogu.org/problem/P3796这题相比简单版就稍微调整一下,用ans数组存储单词出现的次数,然后最后比较次数大小输出次数最多的那几个字符串就行了,注意的是这题不用记录点是否被访问过,因为要统计出现的次数。#include<iostream>#include<cstring>#include<strin...原创 2019-08-14 21:34:02 · 164 阅读 · 0 评论 -
【AC自动机】洛谷P3808 【模板】AC自动机(简单版)
题目链接:https://www.luogu.org/problem/P3808AC自动机是看http://blog.c0per.org/2018-10/ac/和https://www.luogu.org/blog/juruohyfhaha/ac-zi-dong-ji看懂的,理解怎么操作不难,但是最主要要理解的是为什么这样子操作。首先AC自动机是在字典树的基础上加了一些类似kmp的思想...原创 2019-08-14 17:33:02 · 261 阅读 · 0 评论 -
【差分约束】Cashier Employment
题目描述 德黑兰的一家每天24小时营业的超市,需要一批出纳员来满足它的需求。超市经理雇佣你来帮他解决一个问题————超市在每天的不同时段需要不同数目的出纳员(例如,午夜只需一小批,而下午则需要很多)来为顾客提供优质服务,他希望雇佣最少数目的纳员。超市经历已经提供一天里每一小时需要出纳员的最少数量————R(0),R(1),...,R(...原创 2019-08-06 15:48:31 · 629 阅读 · 0 评论 -
【线段树】一个简单的整数问题(未完)
题目描述你有N个整数,A1,A2,...,AN。 你需要处理两种操作。 一种操作是在给定间隔中为每个数字添加一些给定数字。 另一种是要求给定间隔中的数字总和。输入第一行包含两个数字N和Q.1≤N,Q≤100000。第二行包含N个数字,A1,A2,...,AN的初始值。 -1000000000≤AI≤1000000000。接下来的Q行中的每一行代表一个操作。“C a b c”表示将...原创 2019-08-02 10:18:43 · 247 阅读 · 0 评论 -
【线段树】最高分是多少
题目描述老师想知道从某某同学到某某同学当中,分数最高的是多少。现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。输入输入包含多组测试数据。每组输入第一行是两个正整数N和M(0<N<=30000,0<M<5000),分表代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为...原创 2019-08-02 10:16:41 · 181 阅读 · 0 评论 -
【线段树】区间查询
题目描述食堂有N个打饭窗口,现在正到了午饭时间,每个窗口都排了很多的学生,而且每个窗口排队的人数在不断的变化。现在问你第i个窗口到第j个窗口一共有多少人在排队?输入输入的第一行是一个整数T,表示有T组测试数据。每组输入的第一行是一个正整数N(N<=30000),表示食堂有N个窗口。接下来一行输入N个正整数,第i个正整数ai表示第i个窗口最开始有ai个人排队。(1<=a...原创 2019-08-02 10:14:12 · 125 阅读 · 0 评论 -
【KMP】Power Strings
题目描述Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcdef". If we think of concatenation as multiplication, exponentiation by ...原创 2019-07-22 15:01:59 · 140 阅读 · 0 评论 -
【KMP】Radio Transmission
题目描述给你一个字符串,它是由某个字符串不断自我连接形成的。但是这个字符串是不确定的,现在只想知道它的最短长度是多少。输入第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.输出请输出最短的长度样例输入8cabcabca样例输出3题解#include<iostream>#i...原创 2019-07-22 13:28:13 · 164 阅读 · 0 评论 -
【贪心】Cormen − The Best Friend Of a Man
Recently a dog was bought for Polycarp. The dog's name is Cormen. Now Polycarp has a lot of troubles. For example, Cormen likes going for a walk.Empirically Polycarp learned that the dog needs at le...原创 2019-07-20 19:56:14 · 112 阅读 · 0 评论 -
【乱搞】Sanatorium
Vasiliy spent his vacation in a sanatorium, came back and found that he completely forgot details of his vacation!Every day there was a breakfast, a dinner and a supper in a dining room of the sanat...原创 2019-07-20 19:46:51 · 140 阅读 · 0 评论 -
【搜索】松鼠吃果子
题目描述 有N个一种松鼠喜欢吃的果子由下向上串排成一列,并标号1,2,...N。一只松鼠从最下果子开始向上跳,并且第i次跳可以一次跳过i*i*i除以5的余数+1个果子(=i*i*i%5+1),并把脚下的果子吃了,如果上面有果子,在重力作用下,都将向下掉下一格。如第1次跳从第一个果子上跳过1*1*1%5+1=2个果子,可跳到第3个果子上,并把第3个果子吃了;第2次从第4个果子上...原创 2019-07-20 19:37:08 · 272 阅读 · 0 评论 -
【斜率优化DP】任务安排
题目描述在一台机器上有一系列N个作业要处理。作业的编号从1到N,因此序列为1,2,...,N。作业序列必须分为一个或多个批次,其中每个批次由序列中的连续作业组成。处理从时间0开始。批次从第一批开始逐个处理,如下所述。如果批次b包含编号小于批次c的作业,则批次b在批次c之前处理。批处理中的作业在机器上连续处理。处理完批次中的所有作业后,机器立即输出该批次中所有作业的结果。作业j的输出时间是包含j...原创 2019-07-20 12:48:21 · 190 阅读 · 0 评论 -
【Kruskal】北极通讯网络
题目描述北极的某区域共有n座村庄(1≤n≤500),每座村庄的坐标用一对整数(x,y)表示,其中0≤x,y≤10000。为了加强联系,决定在村庄之间建立通讯网络。通讯工具可以是无线电收发机,也可以是卫星设备。所有的村庄都可以拥有一部无线电收发机, 且所有的无线电收发机型号相同。但卫星设备数量有限,只能给一部分村庄配备卫星设备。不同型号的无线电收发机有一个不同的参数d,两座村庄之间的距离如...原创 2019-07-24 16:40:03 · 261 阅读 · 0 评论 -
【并查集】构造完全图
题目描述最小生成树P.S.S在宿命的指引下找到了巫师Kismi。P.S.S希望Kismi能帮自己变成一个完全图。Kismi由于某些不可告人的原因,把这件事交给了你。PS: 可以保证,这个最小生成树对于最后求出的完全图是唯一的。输入第一行N表示树T的点数。接下来N-1行: Si, Ti, Di;描述一条边( Si,Ti)权值为 Di。保证输入数据构成一棵树。输出一个数,表...原创 2019-07-24 16:33:50 · 255 阅读 · 0 评论 -
【快速幂】越狱
题目描述监狱有连续编号为1到n的n个房间,每个房间关押一个犯人。有m种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人信仰的宗教相同,就可能发生越狱。求有多少种状态可能发生越狱。输入输入两个整数m和n。对于全部数据,1≤m≤108,1≤n≤1012。输出可能越狱的状态数,对100003取余。样例输入2 3样例输出6提示...原创 2019-07-29 10:51:14 · 230 阅读 · 0 评论