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\),不合法的有两种…
题目描述 Dpstr最近迷上了推冰块.冰地是一个n行m列的网格区域,第i行第j列的格子记为(i,j),也就是左上角为(1,1),右下角为(n,m).每个格子可能是冰面.障碍物.减速带三者之一.其中,冰地外围(即第0行.第n+1行.第0列.第m+1列)的所有格子均有障碍物.除此之外,冰地内共有k个障碍物和减速带,其余格子为冰面. 初始时,有一个冰块位于(1,1)处.Dpstr每次可以选择上.下.左.右四个方向之一推动该冰块,推动后该冰块将一直沿此方向移动,直到冰块所在的格子为减速带,或冰块沿运动方…
题目 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 分析 如果暴力枚举每个人被分到哪个组或不分,O(2^20)显然会超时. 我们换一种思路, 每次只枚举一半, 将前后半部分分开枚举后半部分,枚举出每种的和以及有没有被选的状态. 枚举和相同的前后部分,如果这种状态没有被选过,就ans+1,然后将这种状态打个标记,这种状态就不再产生贡献. #include <cmath> #incl…
题目描述 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 数据范围 40%的数据满足:1<=M(i)<=1000: 对于100%的数据满足:2<=N<=20,1<=M(i)<=100000000 解法 40% 枚举每一位选或不选,设当前选的所有数的和为sum,然后使用背包求出当前每个可能的总和. 如果其中有sum/2,那么说明这种选法合法,使答案+1: 10…
题目 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.核融时,空需要对一段原子加以防护,防护罩的数值等于这段中最大的中子数.换句话说,如果这段原子的中…
题目描述 数据范围 解法 三分找出极值,两个二分找出极值的范围. 代码 #include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #define ll long long using namespace std; const char* fin="linear.in"; const char* fou…
题目描述 经过旷久的战争,ZMiG和707逐渐培养出了深厚的感♂情.他们逃到了另一块大陆上,决定远离世间的纷争,幸福地生活在一起.钟情707的neither_nor决心要把他们拆散,他要动用手中最大杀器之一--超时空传送仪来分开ZMiG和707.ZMiG和707所在的大陆可以被描述成N个点M条边的有向无环图.707和ZMiG自带魔法防御,neither_nor只可以用超时空传送仪把707传送到一个点,再把ZMiG传送到一个能到达707所在点的点,然后为ZMiG指定一条寻找707的路径,他当然想把…
题目描述 ZMiG成功粉碎了707的基因突变计划,为了人类的安全,他决定向707的科学实验室发起进攻!707并没有想到有人敢攻击她的实验室,一时间不知所措,决定牺牲电力来换取自己实验室的平安. 在实验室周围瞬间产生了一个无限大的力场护盾,它看上去无懈可击!不过ZMiG拥有惊人的双向观察能力,经过他的反复观察,找到了这个护盾的N个弱点,他本想逐一击破,却发现一股神秘力量阻止了他的行为.原来他身处力场之中,受到了两股神秘力量的影响,这两股力量来自两个不同的方向并形成了一个小于180度的角,ZMiG每…
题目描述 邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的基因进行研究从而达到他的目的. 707获取了人类的基因信息并尝试对基因进行实验.他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为"源头基因"人类身上与源头基因完全匹配的片段越多,这个人就越容易被控制.于是707就开始了他邪恶的计划-- 作为人类卫士的射…
题目描述 数据范围 解法 二分答案. 对于一个答案mid,要求出区间平均数小于mid的个数ans. 给所有数减去mid,那么问题转化为求出所有区间和为负数的个数. 对于一个区间[l,r],如果sum[r]-sum[l-1]<0,那么这个区间和就为负数. 算出前缀和后,利用归并排序对逆序对计数. ans即为这个计数器的值. 代码 #include<iostream> #include<stdio.h> #include<string.h> #include<m…
题目描述 数据范围 解法 在暴力枚举的基础上,当n的系数在[0,m/gcd(n,m))时,得到的c是不重复不遗漏的. 设n的系数为x,m的系数为y. 不重复不遗漏性 设x=m/gcd(n,m)+i,那么xn+ym=(m/gcd(n,m)+i)*n+ym=m*(y+n/gcd(n,m))*m+i*n.显然,i<n,所以肯定与前面的重复. 当i<0也即x<m/gcd(n,m)时,显然不存在这个问题. 代码 #include<iostream> #include<stdio.…
题目描述 Dpstr学习了动态规划的技巧以后,对数的分解问题十分感兴趣. Dpstr用此过程将一个正整数x分解成若干个数的乘积:一开始令集合A中只有一个元素x,每次分解时从A中取一个元素a并找出两个大于1且互质的整数p,q,要求pq=a,然后将a分解成两个元素p和q,也就是从A中删去a并加入p和q.Dpstr把正整数x用该过程能分解的次数的最大值称为x的分解数. 例如66的分解数为2,因为最多分解2次.一种分解过程为:一开始A={66},第1次将66分解为11×6,此时A={11,6},第2次将…
题目描述 Dpstr开了个饮料连锁店,连锁店共有n家,出售的饮料种类相同.为了促销,Dpstr决定让每家连锁店开展赠送活动.具体来说,在第i家店,顾客可以用ai个饮料瓶兑换到bi瓶饮料和1个纪念币(注意不足ai个饮料瓶则不能兑换).一家店可以兑换多次,兑换得到的饮料瓶还可以继续用于兑换. 小C买了s瓶饮料,他想知道用这s瓶饮料最多可以兑换到多少个纪念币. 数据范围 对于30%的数据,0≤n≤10,0≤s≤20: 对于50%的数据,0≤n≤1,000,0≤s≤100,000: 对于100%的数据,…