
HDU
文章平均质量分 87
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2017多校训练赛第三场 HDU 6058 (组合计数+思维)
多校就是这么喜欢出计数的题目…… 这题还是比较好想到的,当场就A了。要你求所有区间的第k大之和。最开始还以为是一道数据结构的题目,什么主席树平衡树树套树什么的,然后发现好像根本没必要,或者说起始那么做更不好做。 还是比较惯用的伎俩,我们肯定不能枚举出每一个区间,所以我们计算每一个数字作为区间第k大的贡献。对于每一个数字,我们只需要计算以他为区间第k大的区间的个数,然后用个数乘以这个数字再求和就是我们最后的结果。那么问题来了,如何求区间个数呢?我们考虑该数字是区间第k大,所以在原创 2017-08-01 21:05:16 · 602 阅读 · 3 评论 -
HDU 6203 ping ACM/ICPC 2017 Shenyang Online(LCA+贪心)
现在想来好简单,还是太菜了…… 大致题意:给你一个树形网络,然后再给出一些点对,意思是这些点对不能相互连通,然后问最少坏掉多少个点,能够满足这些不连通的性质。 一开始的想法是对于一个点对,然后把路径上所有的点都加一,然后对应删除点权最大的点,然后相应剪掉关联的点对造成的贡献。但是很明显,确定了点权最大的点,但是无法在可行的时间内确定该点关联哪些点对,于是就不知道该怎么做了。其实即使能够解决这个问题,也不一定能够对,因为当有多个点权都是最大的时候,并不是随便取就能满足最优值的。原创 2017-09-10 21:09:41 · 513 阅读 · 0 评论 -
HDU 5534 Partial Tree ACM/ICPC 2015 Changchun(完全背包)
有n个节点的树,但是还没有连边,现在要你去连边。然后对于一棵树,它的权值的计算与每个点的度有关,如果某个点的度是i,那么这个点的权值贡献就是f(i),其中f(1)~f(n-1)已经给出,然后问最后权值最大的树权值是多少。 看到这题的时候,我就感觉,不管怎么建树,只要能够保证每个点的度至少为一,那么总是存在一棵树满足你的度数分配要求。换句话说,我们要做的只是把所有的度分配下去,而且分配与点无关,即把度分为n个部分,每个部分不能为0。n-1条边就对应2n-2个度。 知道了,度数可原创 2017-09-08 09:05:37 · 327 阅读 · 0 评论 -
HDU 5536 Chip Factory ACM/ICPC 2015 Changchun(Trie)
人生第一道Trie…… 对于异或问题,用Trie求解最大最小值是一个常用套路。本来Trie不属于我的范畴的…… 本题求一个互不相同的i、j、k,使得最后结果(si+sj)^sk最大。暴力的方法枚举三个不同的i、j、k,据说现场赛这种O(N^3)的方法居然能过?!大力出奇迹啊…… 正解的话在模拟比赛中也想到了。一开始把所有的数字加入到Trie中,然后枚举i和j,把si和sj从Tire中删除,然后在Trie找与si+sj异或结果最大的数字,并返回结果,最后再把si原创 2017-09-08 09:19:31 · 397 阅读 · 0 评论 -
HDU 5449 Robot Dog ACM/ICPC 2015 Changchun Online(数学期望+LCA)
大致题意是,给你一棵n个节点的树,树上有k个宝石,编号0~k-1,现在从起点s放一条电子狗,电子狗在每个节点往各邻接点走的概率相同,问电子狗按编号顺序拿完所有宝石的期望步数。 这题的关键就是如何考虑这个期望步数,因为如果没有一个好的考虑方式,一直在乱走,情况很多无法求出期望。所以我们考虑,对于从一个点u到一个点v的期望步数,肯定与lca有关,大致可以分为,从u到lca的期望步数,再从lca到v的期望步数,两者之后即为答案。再进一步思考发现从父亲往儿子走和从儿子往父亲走是两种不同的情况。于是考原创 2017-09-07 08:42:00 · 764 阅读 · 0 评论 -
HDU 5445 Food Problem ACM/ICPC 2015 Changchun Online(二进制优化多重背包)
当时读题的时候就感觉这题很明显的多重背包,但是感觉条件好多就不敢想…… 其实,这个只要把问题拆成两个部分就行了。题意就是,每个点心有一定的能量、空间和数量,然后你的要求是使得总的大于p,然后你可以租一些车来运送这些点心,不同的车有不同的价格、容量和数量,问你在满足能量总数大于p的情况下,最小要花费多少。 确实如果看成一个整体去考虑,确实不好dp。于是拆成两个独立的问题,首先,总能量大于p最少需要多少空间,然后对于这个最少的空间,我又需要花费最小多少代价能够把这些东西装完。原创 2017-09-06 20:53:14 · 489 阅读 · 0 评论 -
HDU 5446 Unknown Treasure ACM/ICPC 2015 Changchun Online(Lucass+CRT)
可以说是一道裸题,求C(n,m)对p1*p2*……pn取模,这个n、m都可以到1e18级别,然后pi是1e5级别。 如果说只对一个质数p取模,而且质数不大,那么我们直接可以用Lucass定理拆分求组合数,这个我之前讲过了,我就不多说了。关键是,本题取模是对很多质数的乘积取模,故不能直接用Lucass定理。如果我们设最后答案为X,那么X=C(n,m)%(p1p2……pn)。根据同余的性质,我们可以有X%pi=C(n,m)%pi,这个很容易理解,于是我们X对于所有的pi的方程都写出来。则有:原创 2017-09-06 09:33:51 · 513 阅读 · 0 评论 -
HDU 5514 Frogs ACM/ICPC 2015 Shenyang(容斥原理)
有很多个青蛙在绕着一个圆圈跳,第i只青蛙每次能够跳ai步,然后起始点为0,问你把所有青蛙能够踩到的点的位置编号加起来结果是多少。 有了之前一道博弈题的经验,我们很快能够知道,如果一只青蛙每次跳的距离是ai,那么所有gcd(ai,m)的倍数的编号都能够被走到。于是就相当于求所有的gcd的倍数的和。问题很快就出现了,会出现重复。 计算倍数的和与计算倍数的个数很类似,于是很容易想到之前多校的TrickGCD那题,那题就是用莫比乌斯函数去容斥。但是这题m的范围很大,不可能求出莫比乌斯原创 2017-09-03 23:21:57 · 452 阅读 · 0 评论 -
HDU 3861 The King’s Problem(tarjan缩点+最小路径覆盖ISAP)
一道裸的图论题,算是长点见识。 首先相互连通的点要在同一部分,相当于缩点,用tarjan求连通分量缩点即可。 缩点之后就是一个DAG,在DAG上把所有的点分成最少的部分,然后每部分任意两点是单连通的。这就相当于是用最少的路径把所有的点给覆盖,最小路径覆盖问题。 关于DAG的最小路径覆盖问题,可以用二分图匹配的方法,把每一个点i分为i和i'。然后假设有边u->v,那么连边u->v'。然后跑二分图匹配,用n-最大匹配就是最小路径覆盖。 但是原创 2017-09-02 23:25:11 · 435 阅读 · 0 评论 -
2017多校训练赛第三场 HDU 6061(NTT模板)
题目容易理解,相当于求f(x-sigma(ai))。 难点在于卷积式子的推导和转换。具体见代码:原创 2017-08-25 22:50:25 · 749 阅读 · 0 评论 -
2017多校训练赛第九场 HDU 6162(LCA+Treap解法)
Ch’s giftTime Limit: 6000/3000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1091Accepted Submission(s): 412Problem DescriptionMr. Cui is working off-cam...原创 2017-08-25 10:48:44 · 489 阅读 · 0 评论 -
HDU 4609 3-idiots(FFT+组合计数)
人生第二道FFT~ 本题题意简单,就是给你一组边长,然后问你,从这组边里面任意选择三条边,能够组成三角形的概率是多少? 如果没有什么特殊的技巧直接取计算的话,非常的难做,而且暴力的话超时还不是超的一点点,所以我们考虑用统计的方法。我么考虑一个ans数组,ans[i]表示任意取两条边,它们的长度之和为i的方案数。如果已知这个ans数组,我们只需要O(N)的枚举第三条最长的边i,然后利用ans的前缀和数组sum,结果就是sum[maxlen]-sum[i]。那么现在就来考虑如果求原创 2017-08-24 20:12:09 · 489 阅读 · 0 评论 -
2017多校训练赛第四场 HDU 6070(二分答案+线段树+扫描线)
一道常规题,还是那句话,比赛的时候就是蠢…… 本题是问,区间内 (题目数目)/(区间长度)的最小值。不巧的是,这一类问题比较就没有遇到了,所以说比较蠢,没有想到最优比例生成树这个经典模型。最优比例生成树是今年寒假的时候就见到的模型,大致就是每条边有两个权值ai和bi,然后要你求一棵生成树,使得最后树的 所有ai之和/所以bi之和最大或者最小。解决的方法就是用二分答案,我们假设这个最后的比例是k,为了方便表示我们把ai之和表示为sa,bi之和表示为sb,那么有:sa/sb=k。然后我们设最优解原创 2017-08-04 20:37:01 · 559 阅读 · 0 评论 -
HDU 5869 ACM-ICPC Regional Dalian Online(离线统计+树状数组)
本来想做数论的题目的,没想到是一道离线统计的题目。果然统计加离线大法的力量就是强…… 大致题意就是,给出一个数列,然后有很多询问,每次问一个区间内它的所有子区间的gcd的值有多少种。一开始的话认为可能会有一些区间的性质,即对于区间[l,r]可以用1到r的种类数减去1到l-1的种类数得到结果。但是发现这个正确性不能保证,因为前一段有gcd为x的,后一段可能也有gcd为x的,这样可能会使得方案数偏少。 于是想到用离线处理的方法,从最左边开始,按顺序把每一个数字的贡献加入。然后对于原创 2017-08-17 13:49:52 · 378 阅读 · 0 评论 -
2017多校训练赛第九场 HDU 6162(离线处理+树链剖分+线段树解法)
离线处理的题目千千万万,但很多时候还是能够让你耳目一新…… 没有修改操作,很显然可以离线水。但是与普通的lca不同,这题要求是求点权在一个区间内的两点路径权值和。加了个值域,就足以让人头疼。但是,万能的我(not)们(me)总能想到方法解决。对于一个询问(x,y,l,r),如果我们把它拆成(x,y,l-1)和(x,y,r)会发生什么呢?没错,如果我能够分别求出这两个,那么把他们两个相减不久可以得到结果了吗。但是,即使如此,还是有一个最大值的限制,不过不要忘了,我们可是在离线处理啊。每个点都有原创 2017-08-24 22:40:07 · 542 阅读 · 0 评论 -
2017多校训练赛第四场 HDU 6071(最短路)
题目要求是只有四个点,然后连边成正方形,问从2号点出发,再回到2号点且走过的总距离大于K的最短的路径是多少。对于这个,我们考虑如果存在一条合法路径,那么我再走2*w也一定是合法路径,其中w表示与2相连的某条边的长度。即回到2之后再出去再回来,这样的路径一定合法。那么,如果走了某条路径回到了2,然后总距离不够的话,我们只需要加上几个2*w使得最后结果大于等于K即可。 那么如何使这个结果最小呢?我们考虑设置一个数组d[x][p]表示从2出发最后到达x点且费用对2*w取模结果为p时的最小花费。这原创 2017-08-03 22:44:40 · 3747 阅读 · 6 评论 -
HDU 5984 ACM-ICPC Regional QingDao(数学期望)
人生第一道数学期望程序,纪念一下…… 就是跟你一根棍子长度为L,你每次可以在任何一个点把它折断,同时拿走左边那段,对右边那段棍子继续重复刚刚的动作,知道剩下的棍子的长度小于d。然后问你在根除L和d的情况下,期望多少次能够使得不能继续把棍子截断。 本来好好的一道数学题,被大部分人做成了找规律的玄学题……鄙视(╬▔皿▔)凸找规律的人……原创 2017-08-03 09:54:17 · 1351 阅读 · 0 评论 -
HDU 5988 ACM-ICPC Regional QingDao(最小费用最大流)
去年青岛站regional原题,在两个人的情况下做了四道题,按照现场排名大概六十多…… 我记得小肥羊学长和我说过,regional很喜欢考网络流的题目。然后做了原题,果不其然。这道题就是一个网络流的题目,而且个人感觉比较裸。题目大致意思就是,在acm比赛中,选手要在比赛中吃饭,然后在某些供应点有一定数量的人还有一定数量的饭。当然了,可能出现供不应求的情况,此时的话选手就得走到别的供应点去拿饭吃。因此还给出了一些路径,对应路径还有容量,但是这路上会有其他选手的电脑,所以走的时候每一条路都会有一原创 2017-08-03 09:29:01 · 714 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6042 (母函数)
人生第一道母函数的题目,纪念一下…… 我就稍微说说母函数吧。母函数分为普通型母函数和指数型母函数,两个分别对应解决组合问题和排列问题。关于它的用法表示,这个自己看看百度百科吧,个人感觉百科已经说得很清楚了。大致意思就是可以通过母函数某一次项的系数来确定结果。 然后这题的话,总共有n个物品,第i个物品的体积为i,数量为ai。那么物品i对应的母函数就是1+x^i+x^2i+x^3i+……+x^ai。剩下的直接就看官方题解吧,够清楚了……原创 2017-08-02 09:57:51 · 1556 阅读 · 0 评论 -
2017多校训练赛第二场 HDU 6052(统计+思维)
又是一道统计的题目…… 题目虽说是统计期望,但其实就是用所有矩形的权值和除以总的矩形个数。至于总的矩形个数,很容易求,对于一个点(i,j),以它为右下角的矩形个数就是i*j,由此总的矩形个数就是sigma(sigma(i*j))1<=i<=n,1<=j<=m。原创 2017-07-29 18:31:53 · 608 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6041 I Curse Myself(仙人掌图生成树)
现在才来补这道题,是不是有点太慢了…… 题意比较简单,给你一幅图,让你求这幅图的生成树的带权值和,即最小生成树乘1,次小生成树乘2,次次小生成树乘3……然后k可以很大,图的点只有1000个。还有特别重要的条件,每一条边都最多在一个简单环中,所以说图是一个仙人掌图。原创 2017-07-29 13:47:27 · 627 阅读 · 0 评论 -
2017多校训练赛第二场 HDU 6053 TrickGCD(容斥原理/莫比乌斯反演)
最后五分钟A了这题……惊天地泣鬼神啊……一波三折,真是刺激! 最初的想法,由于gcd是大于2的,然后gcd肯定只和质数有关,所以直接枚举,以每一个质数作为gcd,然后分别求出每个质数作为gcd的方案数加起来即可,然后对于每一位,用a[i]/gcd,就可以得到该位置的可选方案数,然后每位乘起来即可。可是事实并没有那么简单,很容易发现,计算完质数2、3的方案数后,所有6的倍数的方案都被重复计算了一次,类似的重复还有很多。怎么解决这个问题呢?原创 2017-07-27 20:28:44 · 973 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6044 Limited Permutation(虚建笛卡尔树+超级读入挂)
本题的破题关键点在于区间满足的条件:if and only if(当且仅当)。所以说,对于一个数字i,它是区间[li,ri]的最小值,这个li和ri不能扩大或者缩小,即a[li-1]和a[ri+1]都比a[i]小。有了这个我们就可以知道,所有的区间,要么是相互包含的,要么没有交集,不会出现有相交的情况。这个如何解释呢?我们们用反证法,假设区间[li,ri]与[lj,rj]相交,对于li<lj<ri<rj的情况,根据当且仅当的条件,我们可以知道a[ri+1]<a[i],又a[j]<a[ri+1],所以a[j]原创 2017-07-27 11:19:20 · 1035 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6039 Gear Up(线段树+并查集)
大致题意:给你一些齿轮,有些齿轮是共边(即线速度相同),有些齿轮是共轴(即角速度相同),每个齿轮都有自己的半径而且大小都是2的次方,保证不会出现矛盾,然后总共有两种操作,一是改变某个齿轮的半径,二是询问如果给某一个齿轮一个角速度(大小也是2的次方),所有齿轮中角速度最大的角速度取自然对数后是多少。 根据物理知识,如果两个齿轮共边,那么有w1r1=w2r2,为了方便计算,我们不妨取log2(题目数据刚好是2的次方,然后log2是系统自带函数)。如此一来,我们就可以计算出每一个节点与某一个参考原创 2017-07-26 14:34:28 · 1539 阅读 · 0 评论 -
HDU 2829 Lawrence(四边形优化dp/斜率优化dp)
比较典型的问题,把n个节点分成m块,使得最后价值最小。 根据题意,很容易得出dp方程:dp[i][j]=dp[i-1][k]+sigma(sigma(a[l]*a[p]))(k<l<p<=j),两个sigma分别对l和p求和,其中dp[i][j]表示前j个点,分成i段的最小价值。转换一下式子,引入两个新数组可得:dp[i][j]=d[i-1][k]+c[j]-c[k]-s[k]*(s[j]-s[k]),其中c[i]表示a中从1~i任意两个数乘积的和,s[i]表示a的前缀和。我们发现,分别枚举原创 2017-07-25 09:40:39 · 535 阅读 · 0 评论 -
HDU 4863 Centroid of a Tree (树形dp)
少见HDU的题解网上居然少的可怜,仅有的几篇解释的都不太清楚…… 于是自己花了一个晚上的时间理解别人的代码,发现别人的代码虽然是对的,但是写的确实难以理解,所以我决定挑起这个重担,把这道题目解释清楚。 首先,这道题要求子树的重心与原来一样,然后如果原来是两个重心,那么子树同样也得是这两个重心。那么我们先考虑简单的情况,原来的重心假设有两个。由于有两个重心,那么以这两个重心为根的子树的节点数一定相等,即若把连接两个重心的边删除后,树会被分成两棵节点数目相同的树。这个很容易理解,原创 2017-07-24 12:49:03 · 480 阅读 · 0 评论 -
HDU 4960 Another OCD Patient (dp)
这题,说难也没有那么难…… 相当于就是要把一个数列合并,合并之后为原来各个数字的和,使得合并之后的数列变成回文而且代价最小。理解回文,这题就好做了。如果我们找到两个点i、j,1~i的和等于j~n的和,那么显然就存在一种解,即把1~i合并,把j~n合并。那么,我们就可以用预处理,把所有这些点对求出来,并按照左边的点从小到大排序。原创 2017-07-23 11:53:32 · 391 阅读 · 0 评论 -
HDU 5875 Function (取模+分治+线段树)
非常有意思的一道题目。 通过函数的关系式,很容易推出f(l,r)=a[l]%a[l+1]%...%a[r]。显然,对于l左边比a[l]大的数字取模并没有什么意义,所以我们只需要对比a[l]小的数字取模。进一步发现,随着取模的进行,又可以去掉很多点。即a[l]%第一个比a[l]小的数字=c,c%第一个比c小的数字……可以证明,一个数字取模到不能取模(等于0),最多进行logN次运算。下面给出证明:数字N,假设对a(N/2<a<N)取模,得到的结果为N-a,小于N/2;假设对a(a<N/2)取模原创 2017-07-21 21:32:34 · 387 阅读 · 0 评论 -
HDU 5361(最短路+并查集优化)
比较奇怪的最短路…… 每个人往离他距离大于等于l,小于等于r的点有连边,而且权值一样大。然后问从起点到达每个点的最短距离。 首先我们明确一点,肯定不能建图。因为我每个点的l、r可能很大,也就意味者,每个点连出去的边可以很多,边的数量可以到达N^2的级别。这也就意味着不能用spfa,因为边本身就不可能枚举。于是只能用dijkstra。这题用dijkstra还有一个优点就是,dijkstra中可以保证,如果一个点已经被更新过,那么这个点不可能再被更新,即每个点只能被更新一次。总共原创 2017-07-21 09:09:22 · 509 阅读 · 0 评论 -
HDU 5493 Queue(线段树+离线处理)
离线大法好! 首先我先比较系统的说说什么是离线法。所谓离线法,与在线处理对应,是把询问先全部存下来,然后不一定按照给出询问的顺序来回答,而是按照某种能够提高效率的顺序回答。最著名的例子莫过于莫队算法,离线的其本质就是对询问进行排序,然后求解。我前两天发的星球大战和统计整除对的题都用到了离线法,后面还有题目也会用到。原创 2017-07-18 21:50:52 · 428 阅读 · 0 评论 -
HDU 4456 Crowd (坐标变换+树状数组+离散化)
看到坐标变换,有没有想到什么?对了,就是WOJ那题! 记得当时那题,Soul Artist,是静态的求和,直接用一个坐标变换加上二维的前缀和数组即可。这题也是类似的,不过他是动态的单点修改,动态区间查询。那么这就要用到二维树状数组了。原创 2017-07-18 15:52:27 · 451 阅读 · 0 评论 -
HDU 4267 (树状数组)
又是树状数组的专题,好多都做过,以为没有什么能够难倒我,然而还是有些题目虽然做出来了但是废了点周折。 这题的话,就是区间修改单点查询,但是不同之处在于,在一个区间内,他不是全部都修改,而是隔几个的修改。例如说,当k=2的时候,对于区间[l,r],修改l、l+2,l+4,……然后k是给定的,满足1 <= k <= 10。原创 2017-07-16 18:32:17 · 392 阅读 · 0 评论 -
二维线段树(模板)+HDU 4819
好久没有研究数据结构了,今天看到了一个二位ST表的题目,心里突然就想到了二位线段树,于是决定写写,后来发现坑还是很深的…… 首先,我们很容易想到的方法是对于二维的,把原本的一维二叉线段树,变成一个二维的四叉线段树。这个的话更容易理解,也貌似很好写很短很漂亮,但是当然了,有很大的缺点就是速度很慢。我试过写了一个发现 HDU 4819 直接tle了,然后非常愤怒的放弃了这种方法,当然可能是我写错了。这里关于这种方式,我给一个链接,这里面配合了很多图片,讲得很好, 点击此处打开链接 但是代码风格和原创 2017-06-10 16:58:03 · 755 阅读 · 0 评论 -
矩阵(matrix)应用大总结(二)HDU1588+HDU 5950+HDU 5015
聪神选的题系列…… 这一系列可以说是数学系列咯,正好补一补。 这几道题目都是矩阵的题目,本来呢觉得自己之前也学过见过挺多矩阵的,还自己做过总结,做这些题目应该没什么大问题,但是还是感觉有很多新东西。原创 2017-06-04 21:15:04 · 452 阅读 · 0 评论 -
HDU 3037 组合数求法(模板)(Fermat's Law + Lucass's Law)
本来说六月份可能要暂时告别心爱的领域,但是既然有大神出题并且在旁边可以给你解答,有什么理由不重拾刀枪呢,达芬奇可不相信眼泪啊~ 不废话了,之前在西安的时候有一道数学题,队友退出来了公式,但是当时并不会快速的计算组合数,以至于一直A不了题目,这个可以说是导致那次比的不好的原因吧。今天聪神给我总结了一下组合数的求法,果然有我不知道的快速求法。原创 2017-06-03 15:05:33 · 522 阅读 · 0 评论 -
HDU 5603 树状数组+逆向思维
很久以前遇到的一道题,大概是在武汉的时候的一次校内选拔?然后当时在酒店下午迷迷糊糊的看了,一下,瞬间被三个3*1e5吓哭了…… 然后紧接着又被第二天的武汉华中区邀请赛虐哭了……数据结构什么的还是很灵活多变的,也是博大精深…… 这题的话,看到都知道用的是数据结构,然后庞大的数据量着实让人头疼。看了题解之后也不胜唏嘘。原创 2017-05-07 23:03:45 · 504 阅读 · 0 评论 -
斜率优化dp初探
可以说,dp是一个庞大的世界,这个从我刚接触dp的时候,我的老师就是这么告诫我的。事实也正是如此,dp模型变化多端,各种优化也是层出不穷。 斜率优化就是dp的一种优化,它基于数形结合的原理,把dp问题利用图像中的斜率进行加速,配合使用单调队列,可以把时间复杂度从O(N^2)降到O(N)。 这种优化方法也是非常常用的一种方法,在比赛中也比较常见。希望能够好好掌握……原创 2017-04-05 13:12:45 · 1095 阅读 · 3 评论 -
HDU 4638 Group (莫队算法)
题目大意:把对应询问区间内的数字分成很多个组,要求每个组内的数字的id必须是连续的。假设某个组的数字数为k,则该组的价值是k*k,让你输出总价值最大的分法。 其实根本不用怎么管什么小组的价值,很容易发现,组数越少,总价值必然最大。那么问题就转化为了,把某段区间内所有数分组,问最少组数是多少。自然而然的,我们想到了区间万能算法——莫队算法。 对于每一个id,我们设置一个布尔型的num数组,若num[i]==1,则表示id为i的数字在当前区间中出现过,反之则未出现。然后,每一次转原创 2017-03-03 15:54:33 · 673 阅读 · 1 评论 -
HDU 5528 Count a*b ACM/ICPC 2015 Changchun(数论)
非常棒的一道数论题,而且还是一道金牌题,A了几乎就是金牌…… 至于具体推到姿势,由于符号难写,我就用某个大神的手迹来说明吧,大神写的真的很好。原文地址:http://blog.csdn.net/firstlucker/article/details/49336427 下面,我解释一下画横线那一步。之前已经是求到了sigma(gcd(a,x)),相当于1~x中所有数字与x的gcd之和。BTW,关于这个可以再说一篇文章,P原创 2017-09-08 21:22:56 · 569 阅读 · 0 评论 -
HDU 5890 Eighty seven ACM/ICPC 2015 Shenyang Online(DP+bitset优化)
说实话,人生第一次用bitset。 也不是特别为了练bitset,反正省赛的时候因为没有想到用bitset差点哭出来…… 这题就是,有n张卡片,卡片上面有一些数字,然后每次你抽出最多三张牌不能用,然后问是否有可能从n张牌中挑10张牌,使得他们的总和为87。 首先,我们考虑正常的dp,我们考虑dp[i][j][x]表示取了考虑了前i个数字,从中取j个数字,和为x是否可能。显然有转移方程dp[i][j][x]=dp[i-1][j-1][x-a[i]],然后这之中的原创 2017-09-05 23:08:35 · 403 阅读 · 0 评论