摘要: ```cpp 【题目描述】: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子 阅读全文
posted @ 2019-07-16 15:59 prestige 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P3627 cpp 本题可以将图中强连通分量缩点后再跑最长路即可。 Code: include include include define N 500005 using namespace std; struct e 阅读全文
posted @ 2019-07-16 15:59 prestige 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1407 cpp 本题建图时: 夫妻之间:女孩指向男孩 情人之间:男孩指向女孩 然后Tarjan求强连通分量,对于一对夫妻,如果两人在同一个强连通分量里,那么这对婚姻就是不安全的,反之,则是安全的。 Code: in 阅读全文
posted @ 2019-07-16 15:58 prestige 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P2341 阅读全文
posted @ 2019-07-16 15:19 prestige 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P2863 cpp 本题直接用tarjan求出图中节点数大于一的强联通分量个数,然后输出即可。 Code: include include include include include include include 阅读全文
posted @ 2019-07-16 15:16 prestige 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P4391 cpp 本题中n next[n]即为字符串最小长度的循环节。 Code: include include include include include include using namespace st 阅读全文
posted @ 2019-07-16 15:11 prestige 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题面:http://poj.org/problem?id=1961 cpp 本题的重点在于如果一个串是周期串的话,那么每次错位的位置应该是一个循环节。所以当i next[i]=x i时,此时next[i]就是一个循环节。 Code: include include include include i 阅读全文
posted @ 2019-07-16 15:09 prestige 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题面:http://poj.org/problem?id=2406 cpp 本题中的可能的最短循环节即为KMP中的next[len 1],若len next[len 1]能被len整除,则有最短循环节,否则输出1。 Code: include include include using namesp 阅读全文
posted @ 2019-07-16 15:08 prestige 阅读(75) 评论(0) 推荐(0) 编辑
摘要: ```cpp int[] getNext(String ps){ next[0]= 1; int j=0; int k= 1; while(j 阅读全文
posted @ 2019-07-16 15:08 prestige 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P2024 阅读全文
posted @ 2019-07-16 15:07 prestige 阅读(124) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 幼儿园里有N个小朋友,1xhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候lkhgww需要满足小朋友们的K个要求。幼儿园的糖果总数是有限的,1xh 阅读全文
posted @ 2019-07-16 15:04 prestige 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1892 cpp 本题可以把朋友并在一起,用一个数组记录敌人,然后把敌人的敌人和自己并在一起即可。 Code: include include include include include include incl 阅读全文
posted @ 2019-07-16 15:04 prestige 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1955 cpp 本题可以把等于的并在一起,碰到不等于的就判断是否矛盾。由于数据比较大,注意要离散化。 Code: include include include include include include in 阅读全文
posted @ 2019-07-16 15:04 prestige 阅读(152) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 当排队等候喂食时,奶牛喜欢和它们的朋友靠近些。FJ 有N头奶牛,编号从1到N,沿一条直线站着等候喂食。奶牛排在队伍中的顺序和它们的编号是相同的。因为奶牛相当苗条,所以可能有两头或者更多奶牛站在同一位置上。如果我们想象奶牛是站在一条数轴上的话,允许有两头或更多奶牛拥有相同 阅读全文
posted @ 2019-07-16 15:03 prestige 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P3106 cpp 本题三次建图: 先将GPS1的图存入邻接表。跑一遍dijkstra 然后将GPS2的图再存入邻接表。再跑一遍dijkstra 最后将2次跑过的dijkstra,得到的最短路后所发出的警告数(分别不在 阅读全文
posted @ 2019-07-16 15:01 prestige 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P2966 cpp 本题直接枚举过路草地收费最大点,然后跑n遍dijkstra即可。 Code: include using namespace std; const int N=255; int n,m,q,p[N] 阅读全文
posted @ 2019-07-16 15:01 prestige 阅读(89) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 给定一张无向图,求图中一个至少包含 3个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题。在本题中,你需要输出最小环的边权之和。若无解,输出 “No solution.”。图的节点数不超过 100。 【输入描述】: 第一行两个正整数 n 阅读全文
posted @ 2019-07-16 15:00 prestige 阅读(241) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: N只奶牛(编号为1…N)在进行一个特别的接力赛跑,这个比赛特别之处在于,若干只奶牛可以同时跑。 在t=0时刻,牛1开始沿着跑道跑,L_1秒后跑完一圈重新到达起点线。通常,牛i跑完一圈需要的时间为L_i秒。当牛1重新越过起点线的瞬间,它会通知另外M_1只奶牛立即起跑。通常 阅读全文
posted @ 2019-07-16 14:47 prestige 阅读(97) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 有N个股票经济人可以互相传递消息,他们之间存在一些单向的通信路径。现在有一个消息要由某个人开始传递给其他所有人,问应该由哪一个人来传递,才能在最短时间内让所有人都接收到消息。若不存在这样一个人,则输出disjoint。 【输入描述】: 第一行为n,代表总人数,当n=0时 阅读全文
posted @ 2019-07-16 14:45 prestige 阅读(112) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: N个虫洞,M条单向跃迁路径。从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间。虫洞有白洞和黑洞之分。设一条跃迁路径两端的虫洞质量差为delta。 1.从白洞跃迁到黑洞,消耗的燃料值减少delta,若该条路径消耗的燃料值变为负数的话,取为0。 2.从黑洞跃 阅读全文
posted @ 2019-07-16 14:44 prestige 阅读(330) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 平面上有n个点,每个点的坐标均在 10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现在的任务是找出从一点到另一点之间的最短路径。 【输入描述】: 输入文件共n+m+3行,其中:第一 阅读全文
posted @ 2019-07-16 14:15 prestige 阅读(115) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。 【输入描述】: 多组数据:每组数据描述如下: 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示 阅读全文
posted @ 2019-07-16 14:11 prestige 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P3147 cpp 本题设f[i][j]表示左端点为j,能合并出i这个数字的右端点的位置 由于位置为j的数和位置为f[i 1][j]的数可以合成一个i 1 那么位置为f[i 1][j]的数和位置为f[i 1][f[i 阅读全文
posted @ 2019-07-16 14:05 prestige 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P3205 阅读全文
posted @ 2019-07-16 14:04 prestige 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P4170 cpp 本题设f[i][j]为将i~j染色所花的最小染色次数 那么当i==j时,f[i][j]=1 当i!=j&&s[i]==s[j]时,可以看做是在第一次涂时多涂一格 那么就有f[i][j]=min(f[ 阅读全文
posted @ 2019-07-16 14:03 prestige 阅读(125) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 我们给出了“正则括号”序列的归纳定义: 空序列是一个正则括号序列, 如果S是一个正则括号序列,则(s)和[s]是正则括号序列, 如果A和B是正则括号序列,则AB是正则括号序列。 没有其他序列是正则括号序列。 例如,下列都是正则括号序列: (), [], (()), () 阅读全文
posted @ 2019-07-16 14:02 prestige 阅读(310) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。 如: []是匹配的 ([])[]是匹配的 ((]是不匹配的 ([)]是不匹配的 【输入描述】: 第一行输入一个正整数N,表示测试数据组数(Ni时f[i 阅读全文
posted @ 2019-07-16 14:02 prestige 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1040 cpp 本题即一个在树上做的区间dp,只不过中间枚举的断点k即为当前dp到的树的根节点,然后将当前区间分为两段,即为树上的左子树和右子树,不过要注意这里的k可以取到端点值,即k的取值范围为[i,j]因为一棵 阅读全文
posted @ 2019-07-16 13:50 prestige 阅读(146) 评论(0) 推荐(0) 编辑
摘要: ```cpp Description 在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个程序,计算出将N堆石子合并成一堆的最小得分。 Input 第一行为一个正整数N (2≤N≤100); 以 阅读全文
posted @ 2019-07-16 13:49 prestige 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1063 cpp 本题应先将数组拓宽一倍,这样就实现了环,之后枚举起始端点和区间长度,这样就能够算出结束端点,再利用转移方程f[l][r]=max(f[l][r],f[l][j]+f[j+1][r]+a[l] a[j 阅读全文
posted @ 2019-07-16 13:49 prestige 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P2782 阅读全文
posted @ 2019-07-16 13:48 prestige 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1108 阅读全文
posted @ 2019-07-16 13:48 prestige 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1510 阅读全文
posted @ 2019-07-16 13:47 prestige 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1052 cpp dp方程很好推:f[i]=min(f[i],f[i j])+stone[i]; 但是要离散化,即将中间的距离mod 2520(1~10的最小公倍数) Code: include include us 阅读全文
posted @ 2019-07-16 13:46 prestige 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1896 cpp 经典的状压dp,dp方程:f[i][j][k]+=f[i 1][j num[k]][l]; 还有位运算的判断也很重要 Code: include include include include in 阅读全文
posted @ 2019-07-16 13:46 prestige 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1801 阅读全文
posted @ 2019-07-16 13:44 prestige 阅读(161) 评论(0) 推荐(0) 编辑
摘要: ```cpp 【题目描述】: 学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。 现在有n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n 编号,i 号同学的接水量为wi。接水开始时,1 到m 号同学各占一个水龙头,并同时打开水 阅读全文
posted @ 2019-07-16 13:44 prestige 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1168 阅读全文
posted @ 2019-07-16 13:43 prestige 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1631 cpp 本题的n²个和为 A[1]+B[1] include include include include include include include using namespace std; con 阅读全文
posted @ 2019-07-16 13:43 prestige 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 题面:https://www.luogu.org/problemnew/show/P1090 cpp 先把初始果子放进优先队列维护,再将合并后的果子也扔进堆即可。 Code: include include include include include include include includ 阅读全文
posted @ 2019-07-16 13:42 prestige 阅读(130) 评论(0) 推荐(0) 编辑