
XCPC
文章平均质量分 64
ICPC,CCPC
Happig丶
我的孤独,虽败犹荣
展开
-
2020 CCPC 秦皇岛 K. Kingdom‘s Power(树形DP)
传送门题目大意给出一棵根节点为111的树,其中树根上面有无穷的士兵,每分钟我们能调取一队士兵走一条边,如果该节点没有被占领那么会占领该节点,问占领所有节点需要的最少时间。解题思路首先要能简单证明如下几个关键想法:对于某节点uuu,它要么被其兄弟子树上的士兵折返回来占领,要么就从根节点下来一队新的士兵占领。一队士兵到达节点uuu的子节点vvv后一定会继续向下走,要么停在叶子节点上,要么等到uuu的整个子树遍历完成后可能前往uuu的兄弟节点。对于每个节点来说,从根节点下来的士兵的路径原创 2021-03-03 20:00:57 · 810 阅读 · 1 评论 -
2018 ICPC 南京区域赛 A - Adrien and Austin(对等博弈)
传送门题目大意给出nnn个排列好位置不能变的石子,标号分别为[1,n][1,n][1,n],两个人玩游戏,每次最多能取kkk个连续的石子且不能不取,给定n,kn,kn,k,输出第几个人获胜。解题思路第一个人取任何数量的石子,都会将集合分为不连续的两部分,这两部分可以看做尼姆博弈的特殊情况——对等博弈,这时第二个人只要能将这两个集合取成相等的两部分,第一个人必输。因此第一个人一定会想办法在第一次取后就能分成相等的两个集合,那么分析之后只有一种情况第一个人会输,也就是nnn为偶数且k=1k=1k=1时原创 2021-01-28 21:26:40 · 286 阅读 · 1 评论 -
2019 ICPC银川区域赛 G - Pot!!(线段树维护动态RMQ)
传送门题目大意若ppp为质数,定义potp(n)pot_p(n)potp(n)为nnn分解质因数ppp的指数。给定一个初始全为111的序列aaa,有两种操作:MULTIPLY l r:将区间[l,r][l,r][l,r]都乘上x (2≤x≤10)x~(2\leq x \leq 10)x (2≤x≤10)MAX l r:求出区间[l,r][l,r][l,r]的maxl≤i≤r{maxp∣ai{potp(ai)}}max_{l \leq i \leq r}\{max_{原创 2021-01-25 20:34:56 · 224 阅读 · 0 评论 -
2019 ICPC 南昌区域赛 E - Bob‘s Problem(贪心+MST)
传送门题目大意给出一个图,每条边要么是白色(1)要么是黑色(0),现在我们需要从中选出一个联通子图,使得边权值和最大,且最多只能选kkk条白边。解题思路显然对于黑边直接全选,然后将白边存起来,因为白边能选的数量有限,我们要从大到小排序。第一次遍历先保证图的连通性(也就是跑MST),第二步遍历贪心选即可。注意并查集判断图是否联通,要对每个点最后再跑一次find()find()find(),防止还有没有路径压缩的点。#include <bits/stdc++.h>using nam原创 2021-01-20 22:04:06 · 254 阅读 · 0 评论 -
2018 ICPC 北京区域赛 D - Frog and Portal(构造+斐波那契性质)
传送门题目大意一只青蛙要从河这边跳到河对岸,一共200个石头,每次可以跳一个或者跳两个,这样跳法的总数目显然是斐波那契数列f[201]f[201]f[201],但是当我们得到这些之后原创 2021-01-14 21:22:56 · 221 阅读 · 0 评论 -
2018 ICPC 北京区域赛 I - Palindromes(规律+大数+模拟)
传送门题目大意回文数字是指合法的字符串数字,然后是回文字符串。输出第k(k≤10100000)k(k \leq 10^{100000})k(k≤10100000)个回文字符串。解题思路kkk这么大,显然是找规律的题目,那么不难发现回文数的个数应该按照位数来看,然后找到每个区间:位数为111:[0,9][0,9][0,9]共101010个;包含的个数区间为[1,10][1,10][1,10]位数为222:[11,99][11,99][11,99]共999个;包含的个数区间为[11,19][11原创 2021-01-13 19:26:01 · 214 阅读 · 0 评论 -
2018 ICPC 北京区域赛 B - Heshen‘s Account Book(字符串模拟)
传送门题目大意给出若干行字符串,其中每个字符串可能由字母或者数字组成,现在我们需要输出所有的合法数字以及每行合法数字的个数,合法数字是指没有前导0且字符串中不含有字母。然后题目还给出一个条件是如果当前行的结尾和下一行的开头都是合法数字,那么他们是被当做拼起来的字符串且归属于上一行。解题思路很多细节!首先大体的思路是得到一共有多少行,因为如果下一行只有一个字符串且和上一行能够拼接,因此先将所有的具体的行得到#include <bits/stdc++.h>using namespac原创 2021-01-13 18:03:49 · 245 阅读 · 0 评论 -
2018 ICPC 北京区域赛 A - Jin Yong’s Wukong Ranking List(有向图判环)
传送门题目大意给出若干组a ba~~ba b关系,代表a>ba>ba>b,如果所有的大于关系都没问题那么输出000,否则输出第一组出错误的两个人。解题思路第一眼确实会想到并查集,但是并查集并不好写,实际上如果我们把大于关系看做一条从a→ba \rightarrow ba→b的有向边,即如果出现非法情况显然是出现了环。使用bfs暴力判环即可,更推荐的做法是拓扑排序判环。//// Created by Happig on 2020/1原创 2021-01-13 09:52:45 · 192 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 - J Sum(思维+欧拉筛)
传送门题目大意现在给出无平方数的定义,就是一个数唯一分解后因子的幂次不能大于111。但是本题问的是一个数如果分为两个无平方数的乘积,求有多少种情况分析实际上无平方数就是莫比乌斯函数μ(n)!=0\mu(n)!=0μ(n)!=0的情况。对于一个数nnn,能分解为两个无平方数的乘积当且仅当nnn唯一分解的幂次中不大于222。然后我们发现对于给出质因子,无非就是分到第一组或者第二组累乘,如果该质因子的幂次为111,显然需要总的方案数会乘以二;如果幂次为222,只能各分一个,相当于无贡献本题给出的范围明原创 2020-09-18 21:37:46 · 154 阅读 · 1 评论 -
2019 ICPC 徐州区域赛 - C <3 numbers(素数密度)
题目链接看题目第一眼想到了区间素数,觉得是板子题,但是看了范围发现写不了,int数组最多存到2e7,再大就爆,卡了好久在别人的提醒下才做出。题解是根据素数分布规律,素数越往后越分散。我回头自己推了一下,假设x=1,当y=48时,素数刚好占这个区间的三分之一,也就是按规律推广到一般情况,当y-x+1>48,就肯定是Yes。如果不是,考虑到数据范围到1e9,因此使用区间素数筛选即可。代...原创 2019-12-08 21:12:27 · 410 阅读 · 0 评论 -
2020 CCPC 秦皇岛 E -Exam Results(尺取/树状数组)
传送门题目大意给出nnn个学生,每个学生都有两个分数,可以任选一个作为最终的分数。然后给定一个阈值ppp,设最终所有学生的最高分为xxx,那么所有学生的分数yyy满足y≥x∗py \geq x*py≥x∗p则通过考试,问最多能有多少名学生通过考试。解题思路首先这题不能贪心写,具体原因分析之后不难得知。我们考虑将所有学生的两种成绩合并之后然后从小到大排序,那么我们不难发现一个重要信息——最终最高分的取值范围是所有人最低分的最大值到最高分的最大值。然后发现问题转化成了对于给定的最高分xxx和通过线p∗原创 2020-11-03 16:39:19 · 1019 阅读 · 0 评论 -
2020 CCPC 秦皇岛 G - Good Number(数学+分块)
传送门题目大意一个数xxx被定义为Good numberGood~~numberGood number当且仅当⌊xk⌋\lfloor \sqrt[k]{x} \rfloor⌊kx⌋能整除xxx。对于给定的n,kn,kn,k,求出[1,n][1,n][1,n]中有多少Good numberGood~~numberGood number。解题思路因为开kkk次方的算递减的非常快的,对于intintint范围内的原创 2020-11-03 15:34:45 · 722 阅读 · 0 评论 -
2020 CCPC网络赛 HDU - 6889 Graph Theory Class(分块打表/min_25筛)
传送门题目大意给出nnn个顶点和编号[1,n][1,n][1,n],现在定义两个点i,ji,ji,j的边权为lcm(i+1,j+1)lcm(i+1,j+1)lcm(i+1,j+1),求最小生成树解题思路分块打表本来以为这是一道图论题,但是打表之后半个小时发现了规律:实际上最后的答案就是[3,n+1][3,n+1][3,n+1]的和再加上[3,n+1][3,n+1][3,n+1]的素数和,然后就被卡住了,期间想到了分块打表,结果忘记了区间素筛,只想到了米勒罗宾纯暴力(赛后确实尝试了,五个小时出表,原创 2020-10-06 19:50:20 · 418 阅读 · 5 评论 -
2018 ICPC 焦作区域赛 Keiichi Tsuchiya the Drift King(几何+思维)
传送门题目大意一个人在一个给定角度和半径的弯道漂移,规定漂移时右前轮必须紧挨弯道,问赛道的长度最小需要多长?思路这题写了将近四个小时,没出,原因是我们被上图的ddd较大的情况蒙蔽了,当d>αd>\alphad>α求出来的结果之所以是因为前侧连接圆心和左后轮连接圆心的角度是固定的,需要考虑ddd较小的情况,具体解释参见以下博客//// Created by Happig on 2020/10/10//#include <bits/stdc++.h>#incl原创 2020-10-11 21:35:52 · 197 阅读 · 0 评论 -
2018 ICPC 焦作区域赛 Resistors in Parallel(找规律+大数)
传送门题目大意给出若干个原创 2020-10-12 07:42:33 · 235 阅读 · 1 评论 -
2018 ICPC 南京区域赛 J - Prime Game(质因数分解)
传送门题目大意给出nnn个数,定义mul(l,r)=∏i=lraimul(l,r) = \prod_{i=l}^r a_imul(l,r)=∏i=lrai,fac(l,r)fac(l,r)fac(l,r)为mul(l,r)mul(l,r)mul(l,r)内不同的质因子个数,求∑i=1n∑j=infac(i,j)\sum_{i=1}^n \sum_{j=i}^n fac(i,j)∑i=1n∑j=infac(i,j)。解题思路对于这样需要操作每个区间的问题,常见的思路是固定左端点或者固定右端点原创 2020-11-11 15:20:54 · 475 阅读 · 1 评论 -
2018 ICPC 南京区域赛 G - Pyramid(差分法求通项公式)
传送门题目大意给出一个递推的三角形矩阵,问如果可以包含斜着放置的正三角形,当阶数为nnn时求正三角形的总个数解题思路明显的找规律,找出并确定了第四、五项后,先丢到了BM板子里跑,结果跑出了一个系数很大的递推式;然后队友尝试用待定系数法解,搞了一个多小时没搞出来,直接放弃了。搜题解发现,原来这是一个高阶的等差序列,可以使用差分法求它的前缀和SnS_nSn的公式,然后根据Sn−Sn−1S_n-S_{n-1}Sn−Sn−1即可解出通项公式,只是中间的运算量比较大,需要多项式除法分解多项式,过程不再原创 2020-09-21 17:15:00 · 606 阅读 · 0 评论 -
2019 ICPC 南京区域赛 - C Digital Path(多段图DP)
题目链接前言:时隔八个多月,终于学了DP,前来补题首先看到这个题,容易想到从最左列到最右列的最短(长)路的问题,明显是DP。唯一的区别是本题可能有多个起点,因为是求长度大于等于444的序列个数,那么我们设d(i,j,k)d(i,j,k)d(i,j,k)代表当前坐标(i,j)(i,j)(i,j),以它为起点的长度为kkk的序列个数,大于444的也归为444中。然后我一开始写的dfs是这样的:void dfs(int x,int y){ if(vis[x][y]) return; vis原创 2020-07-10 15:54:52 · 862 阅读 · 3 评论 -
2019 ICPC Greater New York Region I - RationalBase(思维+进制转换)
题目链接1.题目大意:给出两个质数p、q,将一个十进制数写成a0+a1*(p/q)+a2*(p/q)2+…+at*(p/q)m,实际上就是求十进制数的(p/q)进制表示2.第一眼以为需要浮点数取模fmod(),后来发现把p/q当成一个浮点数是行不通的。还是自己思维太死板:此题解法和一般的进制转换问题大致相同,只不过每次总数不仅要除以p还要乘上q,才能逐位取出系数n = a0 + (p/...原创 2020-04-27 17:49:35 · 469 阅读 · 0 评论 -
2019 ICPC Greater New York Region C - PassTheBuck(概率)
题目链接1.题目大意:n个人开始传球,每次要么把球传递给相邻的人,要么自己保留(保留就会赢得游戏),现在需要求给定传球的起点,问终点的人获胜的概率2.第一次做概率题就被这种无线传递的情况给吓住了,但是看了看题解,实际上就是当某轮的概率小于1e-8时直接结束游戏即可。设置两个数组,一个表示当前轮每人得到球的概率,另一个表示下一轮每个人得到球的概率,然后第一个数组每轮结束后更新为第二个数组,再...原创 2020-04-27 12:07:06 · 435 阅读 · 0 评论 -
2019 ICPC Greater New York Region J - Unicycles (规律+递推+矩阵快速幂)
题目链接1.题目大意:给出如图所示那种正n边形然后在中心添加一个点构成,现在需要找到一种unicycle,定义为第n个图的生成树再连接一条边,问n边形有多少种unicycle?2.比赛时没推到规律,发了题解还是不知道规律是什么,我这种空间想象力不强的真的没有一点办法,先看题解怎么说吧:最难的地方在M(i)的基础上添加一个点推M(i+1),我在纸上画了半天也不懂这是什么。但是一旦推出公式...原创 2020-04-27 11:10:24 · 607 阅读 · 0 评论 -
2019 ICPC Asia Taipei - Hsinchu Regional
C. Are They All Integers?(暴力/思维)题目链接1.题目大意:给出一个序列判断序列中任意一个三元组是否满足(ai-aj)/ak均为整数2.首先数据范围很小,可以直接暴力,时间复杂度O(n3)3.但是如果数据更大了无法暴力,那么我们对此类问题必须研究一下以防不测。若任取三个数 a≤b≤c,如果 a != b,则 (b−a) / c 一定不为整数。 若任取三个数 a...原创 2020-04-03 10:51:14 · 957 阅读 · 0 评论 -
2019 ICPC 沈阳区域赛 - L Flowers(二分答案)
Recently Jack becomes much more romantic. He would like to prepare several bunches of flowers.Each bunch of flowers must have exactly M flowers. As Jack does not want to be boring, he hopes that flowe...原创 2020-03-10 10:49:44 · 844 阅读 · 5 评论 -
2019 ICPC 沈阳区域赛 - A Leftbest(set的应用)
LeftbestJack is worried about being single for his whole life, so he begins to use a famous dating app. In this app, the user is shown single men/women’s photos one by one, and the user may choose be...原创 2020-03-08 11:34:51 · 438 阅读 · 2 评论 -
2019 ICPC 银川区域赛 - B So Easy(思维)
题目链接本题有两种方法,一个是将过程逆过来求解,另一个是根据矩阵的性质找规律方法一:由于每次都操作了一行或者一列,先不管-1所在的行和列,将其他所有的行,所有的列,减去该行(列)最小的那个数。这样之后-1所在的行和列均变成了只操作该行和该列的次数,也会发现其他位置都是0,随便加上两个(非-1所在位置)就是答案可以发现这样一个规律:不管进行多少次操作,该矩阵中任取一个二元子矩阵,其两条对角线...原创 2019-12-18 11:36:11 · 755 阅读 · 0 评论 -
2019 ICPC 徐州区域赛 - F The Answer to the Ultimate Question of Life, The Universe, and Everything.(打表)
题目链接题目x的范围只有0-200,显然是让你打表的。但你打表的效率决定了你做题的速度,显然,如果开一个三重循环暴力计算,即使计算机算的很快,但没有几个小时是出不完结果的接下来看我们如何优化了,明白人都知道,先写一个二重循环,接下来查找第三个数即可。查找怎么才高效?显然需要二分查找,另外鉴于-5000-5000内的立方数需要重复计算,可以用一个map存起来,然后我们只要查值即可,这里用哈希m...原创 2019-12-18 12:41:22 · 1454 阅读 · 0 评论 -
2019 ICPC 徐州区域赛 - E Multiply(Pollard-Rho质因数分解)
题目链接这个题其实并不太难的,就是应用到质因数分解和求n!对于某个质因数能分解出多少个关于n!的质因数分解:例如求在8!中2的个数:首先我们先计算出2的倍数的个数:8/2=4其次我们计算出4的倍数的个数: 8/4=2最后计算出8的倍数的2的个数: 8/8=14+2+1,一共7个2出现了即:f(x)=[n/(x1)]+[n/(x2)]+[n/(x3)]+…(直到x的某次幂大于n...原创 2019-12-15 15:45:52 · 627 阅读 · 0 评论 -
2019 ICPC 南京区域赛 - H Prince and Princess(博弈+思维)
题目链接题意:有a个只说真话的人(其中一位是公主),b个只说假话的人,c个回答可以为真可以为假的人。向这些人进行询问,可以进行三种询问,分别为询问回答者的身份,其他任意一个人的身份或谁是公主。博弈论嘛,模拟即可。其实发现问什么问题不重要,只要a>b+c,就一定YES,问的人数就是2*(b+c)+1。但这还不够,仔细观察下面这句话: They will never refuse t...原创 2019-12-13 08:40:41 · 1261 阅读 · 0 评论 -
2019 ICPC 南京区域赛 - A A Hard Problem(找规律)
题目链接这道题是个签到题,却给我带来了很多教训。队友都不在自己做题,刚开始推了前七个,以为是区间内素数个数加一,头一铁直接这么去做了(也思考了后面的区间,但是都被自己自以为正确的结论冲昏了脑袋,后面也推错了),导致签到题一个多小时没写出来。感觉打比赛,沉下心最重要,再则是敢于推翻自己的结论并且虚心接受队友的意见。题意就是让你找规律,推了前十几个,发现刚好是2,3,3,4,4,5,5,6,6,...原创 2019-12-12 15:28:24 · 752 阅读 · 0 评论 -
2019 ICPC 南昌区域赛 - G Eating Plan(技巧+暴力)
题目链接这题卡点就设在,取模的998857459竟然是个合数(蒟蒻第一次见),分解因子后会发现它最大的那个因子是2803,然后这题首先要区间阶乘处理嘛,很明显大于等于2803的数,都是998857459的倍数,阶乘后再取模都是0,因此只要求前面2802个阶乘即可。然后就是暴力写了,求出每个阶乘,再用结构体保存值和id,最后双重循环求每个子段对应的最小和。最后对每个查询线性找答案即可。代码...原创 2019-12-11 21:13:00 · 684 阅读 · 0 评论 -
2019 ICPC 南昌区域赛 - C And and Pair(思维+组合数学)
题目链接开始推了样例,首先肯定要去找i,以第二个样例来看,若要满足i&1010=i,我们从左向右按位来看,则i的第一位可能是1或者0,只有这样做完运算后这一位才不会变。然后是第二位,我们知道i的这一位必须是0,否则该位就发生了改变。然后得出结论。求i时,S对应的每一位若为1该位则有两种,若为0则该位只有一种。因此可以求出所有的i(还知道,这里求出的i肯定都是小于等于S的)。然后求j,先...原创 2019-12-11 10:48:16 · 784 阅读 · 3 评论 -
2019 ICPC 徐州区域赛 - A Cat(异或性质)
题目链接首先一个关于本题最重要的结论是:每个偶数和与它相邻且大于它的那个奇数异或之后结果一定为1。此外还需要知道异或运算具有交换律和结合律,任何数和它本身异或之后为0,任何数和0异或值不变解题思路:然后这道题就差不多是模拟了,当区间长度超过4之后一定能把4k(k为任意数)的数异或约成0。然后就是分情况考虑,区间长度小于4直接暴力,大于四了,按左区间和右区间奇偶性分四个情况讨论。(写的代码略啰...原创 2019-12-10 19:32:57 · 737 阅读 · 0 评论 -
2019 ICPC 银川区域赛 - I Base62(大数+进制转换)
题目:As we already know, base64 is a common binary-to-text encoding scheme. Here we define a special series of positional systems that represent numbers using a base (a.k.a. radix) of 2 to 62. The symb...原创 2019-11-30 17:39:42 · 734 阅读 · 1 评论