CCPC
文章平均质量分 85
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
HDU 6006 Engineer Assignment(状态压缩dp)
看到数据范围这么的小,想了想搜索还是差了一点,于是就只能是状压了…… 大致题意是,有n个项目,每个项目都涉及到一些领域,然后有m个专家,每个专家也都精通一些领域。规定每个专家只能参与一个项目,可以在一个项目中负责多个领域,然后每个项目一定得保证所有的领域至少都有一个人精通才能完成。问最后最多能够完成多少个项目。 我们发现专家总共只有10个,然后项目也最多只有10个,所以我们可以定义dp[i][s]表示对于前i个项目,我选用专家的状态为s的时候最多能够完成的项目个数。这里s是一原创 2017-10-07 23:35:47 · 436 阅读 · 0 评论 -
2019 CCPC江西省赛 C HDU 6569 Trap(容斥原理 + 组合计数)
大致题意:给你一些边长,问你这些边长可以构成几个不同的等腰梯形且梯形的四条边的gcd为1。首先,我们考虑如果没有这个gcd为1的限制,这题应该怎么做。由于总共只有两千条边,所以我们很容易想到至少用N^2的算法去做。显然,我们可以枚举梯形的腰和其中一个底,这里我们不妨枚举梯形长的那个底。知道这两个之后,我们就要考虑,如何快速的求出第三条边的选择方案。这里,我们约定梯形的腰长为c,...原创 2019-07-22 19:26:57 · 760 阅读 · 0 评论 -
HDU 6274 Master of sequence(二分答案 + 树状数组)
大致题意:给你两个数列{ai}和{bi}。每次有三种操作,对于第一种是改变某个ai,第二种是改变某个bi,第三种是让你求满足的最小的t。首先,这种求满足条件的最小值,肯定是二分答案无疑了。然后我们看这个S(t)的表达式子,一个很显然的想法是把分子拆分成为两个部分,一个是bi/ai和t/ai,另一个是bi%ai和t%ai。然后相减也是两部分相减,可以看出,最后的结果就是前一部分之差,然后后面一部分如果之差大于等于0,那么结果不变,否则还要再减去一个1。然后,本题看到了一个特殊的条件,ai的范围只会到1000,原创 2018-09-01 10:09:47 · 994 阅读 · 0 评论 -
HDU 6445 2018CCPC网络赛1008 Search for Answer(费用流 + 构图)
大致题意:给你一个竞赛图,告诉你一个记数方法,也即所有边同向的四元组加一,所有相邻两边方向相反的四元组减一。现在让你最大化这个结果。说实话,不看题解应该很难想到是一个费用流……题解给的也真是简单,个人感觉还可能有错?我们可以这么考虑,观察它给的计数算法,我们可以发现,他的总的循环次数是。于是我们不妨假设每一次循环都产生贡献,然后减去那些实际上不产生贡献和产生负贡献的东西。考虑什么样的情况下不会产生贡献,我们发现如果一个点,我选择了任意两条它的出边以及对应的点,那么不管第四个点是什么,显然构成的四元组一定不会原创 2018-08-28 16:33:20 · 603 阅读 · 0 评论 -
HDU 6439 2018CCPC网络赛 Congruence equationI(杜教筛 + 莫比乌斯反演 + 伯努利数)
大致题意:给你一个长度为k的序列a。对于序列c,当 时,;当时,取[0,m)中任意一个数字。令 表示满足 的序列c的方案数。现在让你求 。首先,根据裴蜀定理,满足的条件是,那么我们不妨分为两种情况处理。对于的数字,假设他们的gcd为g,那么剩下的数与g的gcd就要是1。设的项有k个,加上这个m,设这k+1个数字的gcd为d,那么gcd(d,g)要等于1。由于这k+1个数字里面有一个定值m,所以这个d一定是m的因子。我们令f(d)表示这k+1个数字的gcd为d的方案数。那么开始第一次莫比乌斯反演,有:原创 2018-08-28 10:03:40 · 1095 阅读 · 0 评论 -
HDU 6231 K-th Number CCPC2017 Harbin(二分答案)
其实这题非常的不应该,非常非常不应该,因为自己做过类似的题目。17年湖南多校,大笨龙那题:传送门 但是都说了赛场上有毒,没怎么想,而且还想偏了,去想HDU多校赛那题了……然后就没有然后了…… 回顾一下这个思想,关于第K大的判定问题,我们通常可以用二分答案加上模糊化处理。即,我们二分枚举最后的答案,然后把所有的数字模糊化处理,就是把数字分为大于等于答案的和小于答案的。大于的表示为1,小于的表示为0。问题模糊化之后就可省去很多时间了。 比如说这题的,把所有的区间第原创 2017-11-11 23:30:24 · 625 阅读 · 0 评论 -
HDU 6241 Color a Tree CCPC2017 Harbin(二分答案+上下界判定)
CCPC哈尔滨,是一个二分答案专场…… 此题二分,B题二分,还有一个分数规划的二分…… 这是一个非常值得借鉴的二分答案的题目。大致题意:给你一棵树,然后让你对树上的节点进行黑白染色。然后染色有一些要求,对于A类要求,要求在x的子树中,至少有y个节点被染成了黑色;对于B类要求,要求在树的所有节点除了x以及其子树节点外,至少有y个节点被染成了黑色。初始状态树是白色的,现在问你,最少给多少个节点染成黑色之后,能够满足所有的A、B类要求。 其实遇到这种至多至少,然后询原创 2017-11-13 19:33:51 · 1425 阅读 · 0 评论 -
HDU 5542 The Battle of Chibi(dp+树状数组)
按照惯例,比赛期间应该停止刷题…… 但是经过上次的失败经历我发现,手感这种东西还是很重要的,不然关键时候卡题…… 于是今晚重新刷一套CCPC,结果发现自己状态神勇,几乎是自己一个人在3小时10分钟内A了6题……虽说水题有好几道,但怎么说至少没有卡手,后面的这两道稍微算上中档题的dp也几乎是一次过样例。 废话说多了,看看这道题。就是给你一个序列,问你长度为m的严格上升序列总共有多少种。方案数问题,dp也是很明显的,有转移方程dp[i][j]=Σdp[k][j-1原创 2017-10-26 23:15:45 · 280 阅读 · 0 评论 -
HDU 6230 Palindrome CCPC2017 Harbin(Manacher+树状数组+离线处理)
在哈尔滨的第一场比赛真的是像发疯了一样,在水题上纠结了近四个小时……当时真菜…… 现在回过头来看,这道题目还是非常的巧妙的。首先,我们要清楚的明白,这个回文的性质,例如:abcbabc,有两个对称中心'c'和'a',然后第二个对称中心的长度要恰好为两个对称中心的距离。转换成符号表示就是,i<j,j-i==len[j]且j-i<=len[i]。更确切的说就是,第二个对称中心要落在第一个对称的范围内,而且第二个对称中心的长度要恰好为两个对称中心的距离。 如果之前知道Manache原创 2017-11-11 22:57:45 · 1187 阅读 · 0 评论 -
HDU 6003 Problem Buyer(鸽笼原理)
别看这题过的人少,但是确实是一道典型的思维题…… 大致题意是,首先给你一个题库,告诉你题库里面每一个题目的难度的范围。然后你要出m个题目,给你每一个题目的难度系数,要求你从题库中选取对应符合要求的题目,即要求的难度系数在题库中题的难度范围之内。现在,问你如果我要任意在题库中选取k个题目,最后都能从这选出的k个中跳出满足条件的不同的m个问题,问这个最小的k是多少,如果不存在则输出IMPOSSIBLE! 先说一下自己虽然可能会超时,但是很大胆的想法。首先,判断能否取出m个问题,我原创 2017-10-10 22:37:26 · 1281 阅读 · 0 评论 -
HDU 5943 Kingdom of Obsession(二分图匹配+数论)
大致题意是给你从n开始的s个连续的数字,例如n=15,s=3,那么对应16、17、18三个数字。然后,每个数字的可行放法是放在它的因子对应的位置上,例如8可以放到第1、2、4、8个位置上。问你是否存在一种摆法使得这s个数字能够合法的排成从1~s的一列。 一开始觉得是一个找规律的题目,但是仔细分析之后可以发现这之中还是可以体现一些算法的。对于一个数字i它可以放到它的约数对应的位置上,然后每个位置和数字一一对应,很容易发现这是一个匹配问题。如果数字能放到1~s的某一个位置,那么就连一条边,最后跑原创 2017-10-16 07:52:29 · 294 阅读 · 0 评论 -
HDU 5942 Just a Math Problem(数论+容斥原理)
很裸的一道数论题,但是故事还是不少的。 先说说自己脑洞大开的想法。首先,说说自己脑洞大开的思路。根据题目的公式,我们很容易发现,很多数字的g(i)函数值其实是相等的,所以说我们统计的时候就可以统计每一个g(i)数值的贡献。相当于,我们就要求出有多少中质数的组合,然后对于每一种质数的组合,我们只需要计算有多少个数字拥有这样的组合形式。由于1e12的数据范围,最多含有11个质数,所以我们可以用dfs枚举所有的质数组合,紧接着再枚举每个质数的次方。在15s的时间内,对于sqrt(n)的小质数来说,原创 2017-10-15 00:01:46 · 612 阅读 · 0 评论 -
ZOJ 3981 Balloon Robot CCPC2017 Qinhuangdao(推公式+离线处理)
现在回想起来,真的不应该去用C++强撸那道应该用Java做的大整数的题目了…… 大致题意就是,有一个发气球的机器,然后有n个人,m个座位排成了一个圆圈,总共AC了p道题目,然后机器人每次从某一个位置开始移动,每次花1个时间单位移动一格。每次机器人走到一个人旁边,它就会把这个人已经A的所有题目对应的气球发给他。对于每一道题目,产生的不高兴值是发气球的时间,减去对应A题的时间。然后问,如何选取这个出发点使得总的不高兴值最大。 首先,我们考虑如果发气球机器的起始位置是x,那么对于一原创 2017-10-31 20:56:55 · 599 阅读 · 0 评论 -
HDU 5970 最大公约数(找规律)
最讨厌找规律的题目了,本来还想好好做一道数论题。 一开始,我自己假设先不考虑c。那么就变成了ΣΣi/gcd*j/gcd=Σj/gcd*Σi/gcd,如此一来,由于m比较小,我就可以枚举j,然后对应求出j所有的因子作为gcd,gcd确定之后再根据容斥来统计i/gcd的和。具体统计方法和15年沈阳regional的frog那题类似,用n的因子来进行暴力的容斥。但是很显然这样子很难把c的影响带进来,而且这里的c还要向下取整,更加的麻烦。 于是打表找规律,首先很容易知道f(i,j)=原创 2017-10-06 16:21:25 · 925 阅读 · 0 评论 -
HDU 5967 小R与手机(Link Cut Tree 基环树森林)
基环树森林…… 当时还没有意识到是这个东西,直到WA了一发之后。联系起之前做的那道BZOJ 2759,这两题其实很是相似。 在此我就再总结一下如何处理这种基环树森林。首先,不用说的,用LCT。然后我们连接的时候要提前判断两点是否在同根树中。如果在的话,说明再连上这条边之后就会形成一个环,而实际上为了保持树的结构,我们并不能真的去相连,用一个数组表示虚边。当我们断开或者改变某个点的前驱之后,这个保存的虚边就可以发挥作用了。如果切断的点的实根(非splay根)含有虚边,那么切断的原创 2017-10-06 10:15:51 · 642 阅读 · 0 评论 -
HDU 5965 扫雷(dp/状态压缩dp)
中文题。 有个3*N的地图,告诉你第二行的情况,问你有多少种情况放地雷。 自己自始至终的想法:状态压缩。由于任意一个第二行格子的情况只与前一个的格子控制范围的后四个有关,所以我么可以用一个4位的二进制数来表示某个位置是否放了地雷。定义dp[i][j]表示处理到第i列,且第i列所控制的后四个格子的状态是j的时候的方案数。那么就可以很自然的得到状态转移方程:dp[i][j]=Σdp[i-1][x],其中这个x表示上一个可以合法转移的状态。这里关于这个状态的枚举,我们可以枚举上一个原创 2017-10-05 18:49:27 · 409 阅读 · 0 评论 -
HDU 6706 2019CCPC网络赛 1005 huntian oy(杜教筛)
大致题意:告诉你n、a和b,让你求 中间那个gcd(i^a-j^a,i^b-j^b)这个看起来很吓人,其实你打表会发现其实它等于i-j,那么就变成了求 这个显然可以拆成两个部分 第一...原创 2019-08-24 16:07:24 · 536 阅读 · 0 评论