题目描述 数据范围 解法 由于大于4的素数只有可能由奇数和偶数的和得出. 所以根据数的奇偶性可以分出两类数奇数和偶数. 奇数之间不会相互匹配,偶数之间也不会相互匹配. 那么原问题转化为二分图最大匹配. 网络流即可. 代码 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std;…
题解 分析 因为只有奇数和偶数配对才有可能得出质数, 暴力求出每一对\(a_i+a_j\)为质数,将其中的奇数想偶数连一条边. 二分图匹配,匈牙利算法. #include <cmath> #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <queue> const…
题目描述 数据范围 解法 枚举根之后,使用大除法. 代码 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> #define ll long long using namespace std; const char* fin="equation.in"; const char* fout=&qu…
题目描述 解法 搜索. 代码 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; const char* fin="mahjong.in"; const char* fout="mahjong.out"; const int inf=…
题目描述 流行的跳棋游戏是在一个有m*n个方格的长方形棋盘上玩的.棋盘起初全部被动物或障碍物占满了.在一个方格中,'X'表示一个障碍物,一个'0'-'9'的个位数字表示一个不同种类的动物,相同的个位数字表示相同种类的动物.一对动物只有当它们属于同一种类时才可以被消去.消去之后,他们所占的方格就成为空方格,直到游戏结束.要消去一对动物的前提条件是:这对候选动物所在的方格必须相邻,或它们之间存在一条通路.棋盘上一个方格只和其上下左右的方格相邻.一条通路是由一串相邻的空方格组成.路的长度则是通路中空方…
题目 流行的跳棋游戏是在一个有mn个方格的长方形棋盘上玩的.棋盘起初全部被动物或障碍物占满了.在一个方格中,'X'表示一个障碍物,一个'0'-'9'的个位数字表示一个不同种类的动物,相同的个位数字表示相同种类的动物.一对动物只有当它们属于同一种类时才可以被消去.消去之后,他们所占的方格就成为空方格,直到游戏结束.要消去一对动物的前提条件是:这对候选动物所在的方格必须相邻,或它们之间存在一条通路.棋盘上一个方格只和其上下左右的方格相邻.一条通路是由一串相邻的空方格组成.路的长度则是通路中空方格的数…
题目 给定M个二元组(A_i, B_i),求X_1, ..., X_N满足:对于任意(A_i, B_i),有|X_{A_i} - X_{B_i}| = 1成立. 分析 显然,对于二元组(x,y),X_{x}.X_{y}相差1, 而对于二元组(x,y)和(y,z),X_{x}.X_{y}相差1,X_{z}.X_{y}相差1,而X_{x}和X_{z}有可能相等,有可能差2. 我们对于相差1的染不同的颜色,否则染相同的颜色,有冲突就输出"NO". 发现,因为只有两种颜色,那么一种颜色输出1,…
JZOJ [NOIP2016提高A组集训第16场11.15]兔子 题目 Description 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连.换句话讲,这些兔子窝之前的路径构成一张N个点.M条边的无向连通图,而度数大于2的点至多有1个. 兔子们决定把其中K个兔子窝扩建成临时避难所.当危险来临时,每只兔子均会同时前往距离它最近的避难所躲避,路程中花费的时间在数值上等于经过的路径…
JZOJ [NOIP2016提高A组集训第16场11.15]SJR的直线 题目 Description Input Output Sample Input 6 0 1 0 -5 3 0 -5 -2 25 0 1 -3 0 1 -2 -4 -5 29 Sample Output 10 Data Constraint 题解 题意 给出\(n\)个条直线的解析式,问这些直线能组成多少个三角形 题解 发现直接求解不容易求 想到可以先求出最大数量再减去不合法的 最大数量\(C_n^3\),不合法的有两种…
题目 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 分析 如果暴力枚举每个人被分到哪个组或不分,O(2^20)显然会超时. 我们换一种思路, 每次只枚举一半, 将前后半部分分开枚举后半部分,枚举出每种的和以及有没有被选的状态. 枚举和相同的前后部分,如果这种状态没有被选过,就ans+1,然后将这种状态打个标记,这种状态就不再产生贡献. #include <cmath> #incl…
Description 在幽暗的地灵殿中,居住着一位少女,名为古明地觉.据说,从来没有人敢踏入过那座地灵殿,因为人们恐惧于觉一族拥有的能力——读心.掌控人心者,可控天下. 咳咳.人的记忆可以被描述为一个黑块(B)与白块(W)的序列,其中情感值被定义为序列中黑块数量与白块数量之比.小五口在发动读心术时,首先要解析人的记忆序列,因此,需要将序列分割为一些段,并且要求每一段记忆序列的情感值都相等.下面给出两个例子:BWWWBB -> BW + WWBB (Ratio=1:1)WWWBBBWWWWWWW…
题目描述 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 数据范围 40%的数据满足:1<=M(i)<=1000: 对于100%的数据满足:2<=N<=20,1<=M(i)<=100000000 解法 40% 枚举每一位选或不选,设当前选的所有数的和为sum,然后使用背包求出当前每个可能的总和. 如果其中有sum/2,那么说明这种选法合法,使答案+1: 10…
题目链接: http://172.16.0.132/senior/#main/show/4879 题目: 在幽暗的地灵殿中,居住着一位少女,名为古明地觉.据说,从来没有人敢踏入过那座地灵殿,因为人们恐惧于觉一族拥有的能力——读心.掌控人心者,可控天下. 咳咳.人的记忆可以被描述为一个黑块(B)与白块(W)的序列,其中情感值被定义为序列中黑块数量与白块数量之比.小五口在发动读心术时,首先要解析人的记忆序列,因此,需要将序列分割为一些段,并且要求每一段记忆序列的情感值都相等.下面给出两个例子:BWW…
题目 YJC最近在学习图的有关知识.今天,他遇到了这么一个概念:随机游走.随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次.YJC很聪明,他很快就学会了怎么跑随机游走.为了检验自己是不是欧洲人,他决定选一棵树,每条边边权为1,选一对点s和t,从s开始随机游走,走到t就停下,看看要走多长时间.但是在走了10000000步之后,仍然没有走到t.YJC坚信自己是欧洲人,他认为是因为他选的s和t不好,即从s走到t的期望距离太长了.于是他提出了这么一个问题:给一棵n个点的树,问所有点对(i…
题目 mhy12345学习了二分图匹配,二分图是一种特殊的图,其中的点可以分到两个集合中,使得相同的集合中的点两两没有连边. 图的"匹配"是指这个图的一个边集,里面的边两两不存在公共端点. 匹配的大小是指该匹配有多少条边. 二分图匹配我们可以通过匈牙利算法得以在O(VE)时间复杂度内解决. mhy12345觉得单纯的二分图匹配算法毫无难度,因此提出新的问题: 现在给你一个N个点N-1条边的连通图,希望你能够求出这个图的最大匹配以及最大匹配的数量. 两个匹配不同当且仅当存在一条边在第一个…
好久没有写过题解了--现在感觉以前的题解弱爆了,还有这么多访问量-- 没有考虑别人的感受,没有放描述.代码,题解也写得歪歪扭扭. 并且我要强烈谴责某些写题解的代码不打注释的人,像天书那样,不是写给普通人看的. 原题点这(JZOJ) 描述 Description YJC最近在学习图的有关知识.今天,他遇到了这么一个概念:随机游走.随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次.YJC很聪明,他很快就学会了怎么跑随机游走.为了检验自己是不是欧洲人,他决定选一棵树,每条边边权为1,选…
题目描述 他是一名普通的农电工,他以一颗无私奉献的爱岗敬业之心,刻苦钻研业务,以娴熟的技术.热情周到的服务赢得了广大客户的尊敬和赞美.他就是老百姓称为"李电"的李春来. 众所周知,李电很喜欢YY.一天,他又YY 了奇怪的东西.他假设他自己成了神,然后他说:"出来吧,矩阵."然后一个N _M 的矩阵从天而降.他为了不要让矩阵太大而使得自己眼花缭乱,所以他将M 固定在了3.但是,一天之后,他想继续他之前的YY,继续玩他的矩阵,但是他的记忆力太差了,所以他不记得他原来的矩…
题目描述 NiroBC终于找到了人生的意义,可是她已经老了,在新世界,没有人认识她,她孤独地在病榻上回顾着自己平凡的一生,老泪纵横.NiroBC多么渴望再多活一会儿啊! 突然一个戴着黑色方框眼镜,方脸,穿着高腰裤的长者,乘着圣洁的祥云,飞进了NiroBC的简陋的小屋. 长者说:"你渴望再多活一段时间,再多创造人生的价值吗?" "愿意!"NiroBC毫不犹豫地回答道. "生命是宝贵的,不能随便续.你能说出人生的价值究竟是什么吗?只有说对了,我才能给你延续生命…
题目描述 雪之国度有N座城市,依次编号为1到N,又有M条道路连接了其中的城市,每一条道路都连接了不同的2个城市,任何两座不同的城市之间可能不止一条道路.雪之女王赋予了每一座城市不同的能量,其中第i座城市被赋予的能量为Wi. 如果城市u和v之间有一条道路,那么只要此刻雪之女王的能量不小于|Wu-Wv|,这条道路就是安全的.如果城市u和v之间存在两条没有重复道路的安全路径(其中每一段道路都是安全的),则认为这两座城市之间有着良好的贸易关系. 最近,雪之女王因为情感问题,她的能量产生巨大的波动.为了维…
=v= 因为外来的入侵,国王决定在某些城市加派士兵.所有城市初始士兵数量为0.当城市 被加派了k名士兵时.城市i的所有子城市需要被加派k+1名士兵.这些子城市的所有子城市需要被加派k+2名士兵.以此类推. 当然,加派士兵的同时,国王也需要不断了解当前的情况.于是他随时可能询问以城市i为根的子树中的所有城市共被加派了多少士兵. 你现在是国王的军事大臣,你能回答出国王的每个询问么? = = 对于50%的数据,1<=n<=1000,1<=p<=300 对于100%的数据,1<=n&…
题目描述 数据范围 解法 考虑逐次加入每一条直线. 对于当前已加入的直线集合L,现在要新加入一条直线l. 那么它产生的贡献,与平行线有关. 对于任意三条直线,如果其中任意两条平行,那么将不做贡献. 所以给原直线的斜率排序,然后O(n)逐次加入,就能快速求答案了. 代码 #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h&g…
题目描述 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连.换句话讲,这些兔子窝之前的路径构成一张N个点.M条边的无向连通图,而度数大于2的点至多有1个. 兔子们决定把其中K个兔子窝扩建成临时避难所.当危险来临时,每只兔子均会同时前往距离它最近的避难所躲避,路程中花费的时间在数值上等于经过的路径条数.为了在最短的时间内让所有兔子脱离危险,请你安排一种建造避难所的方式,使最后一只到…
题目描述 数据范围 解法 由于同一个点,同一个圆盘最多只会走一次. 把(i,j)当作一个点,表示第i个点,放第i个圆盘. 那么就可以使用最短路. 时间复杂度为O(n4∗k). 事实上存在冗余圆盘,一个相对某个圆盘又贵又小的圆盘即是冗余圆盘. 给圆盘排序,那么令(i,j)只给(k,l)连一条边使得l最小,(i,j)给(i,j+1)连一条边. 那么任意一条原图中的边就可以分解为上述两类边. 那么边数就降到n3. spfa的时间复杂度为O(n3∗k). 如果使用dijstra的时间复杂度为O(n3∗l…
题目描述 YJC最近在学习图的有关知识.今天,他遇到了这么一个概念:随机游走.随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次.YJC很聪明,他很快就学会了怎么跑随机游走.为了检验自己是不是欧洲人,他决定选一棵树,每条边边权为1,选一对点s和t,从s开始随机游走,走到t就停下,看看要走多长时间.但是在走了10000000步之后,仍然没有走到t.YJC坚信自己是欧洲人,他认为是因为他选的s和t不好,即从s走到t的期望距离太长了.于是他提出了这么一个问题:给一棵n个点的树,问所有点对…
题目描述 YJC最近在学习字符串的有关知识.今天,他遇到了这么一个概念:最长公共回文子序列.一个序列S,如果S是回文的且分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共回文子序列.YJC很聪明,他很快就学会了如何求最长公共回文子序列.他现在想把问题规模扩大一些,于是他提出了这么一个问题:给一个长度为n(1≤n≤100000)的字符串a和一个长度为m(1≤m≤20)的字符串b,求a和b的最长公共回文子序列的长度.YJC发现他不会做了,于是他来问你这个…
题目描述 YJC最近在学习树的有关知识.今天,他遇到了这么一个概念:最近公共祖先.对于有根树T的两个结点u.v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u.v的祖先且x的深度尽可能大.YJC很聪明,他很快就学会了如何求最近公共祖先.他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少.这个数字n层的满k叉树指一棵带标号的有根树,深度为i(0≤i 数据范围 ​对于30%…
题目描述 mhy12345学习了二分图匹配,二分图是一种特殊的图,其中的点可以分到两个集合中,使得相同的集合中的点两两没有连边. 图的"匹配"是指这个图的一个边集,里面的边两两不存在公共端点. 匹配的大小是指该匹配有多少条边. 二分图匹配我们可以通过匈牙利算法得以在O(VE)时间复杂度内解决. mhy12345觉得单纯的二分图匹配算法毫无难度,因此提出新的问题: 现在给你一个N个点N-1条边的连通图,希望你能够求出这个图的最大匹配以及最大匹配的数量. 两个匹配不同当且仅当存在一条边在第…
题目描述 某日mhy12345在教同学们写helloworld,要求同学们用程序输出一个给定长度的字符串,然而发现有些人输出了一些"危险"的东西,所以mhy12345想知道对于任意长度n的小写字母字符串,不包含危险串的字符串个数 数据范围 对于10%的数据,|str|=1 对于另30%的数据,n<=5 对于另30%的数据,危险串不存在相同字符 对于100%的数据,0<=|str|<=100,0<=n<=10000 解法 动态规划. 设f[i][j]表示到第…
题目描述 mhy12345学习了树的直径,于是开始研究图的半径,具体来说,我们需要在图中选定一个地方作为中心,其中这个中心有可能在路径上. 而这个中心的选址需要能够使得所有节点达到这个中心的最短路里面最大值最小(也就是说离中心最远的结点距离尽可能小),求出这个最大值的最小值,作为图的半径. 数据范围 N<=200,W<=100000,M<=19900 数据有梯度 分析与演绎 原题所求:选取一个实点,使得图上所有结点到这个实点的最长距离最短. 由于实点既可以取在边上,也可以取在结点上,所以…
题目描述 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取一些原子,排成一列.然后,她会将原子序列分成一些段,并将每段进行一次核融. 一个原子有两个属性:质子数和中子数. 每一段需要满足以下条件: 1.同种元素会发生相互排斥,因此,同一段中不能存在两个质子数相同的原子. 2.核融时,空需要对一段原子加以防护,防护罩的数值等于这段中最大的中子数.换句话说,如果这段原子的中…