2017HDU多校赛
文章平均质量分 89
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
2017多校训练赛第三场 HDU 6058 (组合计数+思维)
多校就是这么喜欢出计数的题目…… 这题还是比较好想到的,当场就A了。要你求所有区间的第k大之和。最开始还以为是一道数据结构的题目,什么主席树平衡树树套树什么的,然后发现好像根本没必要,或者说起始那么做更不好做。 还是比较惯用的伎俩,我们肯定不能枚举出每一个区间,所以我们计算每一个数字作为区间第k大的贡献。对于每一个数字,我们只需要计算以他为区间第k大的区间的个数,然后用个数乘以这个数字再求和就是我们最后的结果。那么问题来了,如何求区间个数呢?我们考虑该数字是区间第k大,所以在原创 2017-08-01 21:05:16 · 550 阅读 · 3 评论 -
2017多校训练赛第九场 HDU 6170 Two String(dp)
最近发现,如果dp好能够快速解决很多问题,于是来补一波…… 这个题其实有点类似最长公共子串的dp,但是又略微有点不同。我们还是一样,设dp[i][j]表示第一个串取前i位,第二个串取前j位是否能够完成匹配。根据题意,如果第i位和第j位相等或者第j位为‘.',那么可以直接从前一位转移过来,有转移方程:dp[i][j]=dp[i-1][j-1]。 然后就是重点讨论一下当第j位为’*‘的时候。这个符号表示它前一位可以重复n次,这个n可以是0,而当n为0的时候相当于去掉两位(第j位和原创 2017-09-18 22:59:46 · 451 阅读 · 0 评论 -
2017多校训练赛第四场 HDU 6078 Wavel Sequence(dp+优化)
第四场多校,到现在才补…… 又是类似最长公共子串类型的dp。大致题意是给你两个序列a和b,然后问你能够选出多少个f和g映射,使得a[fi]==b[fi],而且a[f1]、a[f2]、a[f3]……a[fn]是波浪序列。 很容易想到的一个递推是dp[i][j][t]=Σdp[x][y][t^1](a[i]==b[j]且a[x]==b[y],同时满足波浪性),其中dp[i][j][t]表示序列a取到第i位,序列b取到第j位,而且当前是波峰(t==1)或者波谷(t==0)时的方案数原创 2017-09-19 19:44:18 · 514 阅读 · 0 评论 -
2017多校训练赛第二场 HDU 6051 (数论)——By alpc_wh
If the starlight never fade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 122 Accepted Submission(s): 65 Problem Description We will gi...原创 2017-07-29 23:00:53 · 890 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6039 Gear Up(线段树+并查集)
大致题意:给你一些齿轮,有些齿轮是共边(即线速度相同),有些齿轮是共轴(即角速度相同),每个齿轮都有自己的半径而且大小都是2的次方,保证不会出现矛盾,然后总共有两种操作,一是改变某个齿轮的半径,二是询问如果给某一个齿轮一个角速度(大小也是2的次方),所有齿轮中角速度最大的角速度取自然对数后是多少。 根据物理知识,如果两个齿轮共边,那么有w1r1=w2r2,为了方便计算,我们不妨取log2(题目数据刚好是2的次方,然后log2是系统自带函数)。如此一来,我们就可以计算出每一个节点与某一个参考原创 2017-07-26 14:34:28 · 1487 阅读 · 0 评论 -
2017多校训练赛第二场 HDU 6053 TrickGCD(容斥原理/莫比乌斯反演)
最后五分钟A了这题……惊天地泣鬼神啊……一波三折,真是刺激! 最初的想法,由于gcd是大于2的,然后gcd肯定只和质数有关,所以直接枚举,以每一个质数作为gcd,然后分别求出每个质数作为gcd的方案数加起来即可,然后对于每一位,用a[i]/gcd,就可以得到该位置的可选方案数,然后每位乘起来即可。可是事实并没有那么简单,很容易发现,计算完质数2、3的方案数后,所有6的倍数的方案都被重复计算了一次,类似的重复还有很多。怎么解决这个问题呢?原创 2017-07-27 20:28:44 · 916 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6041 I Curse Myself(仙人掌图生成树)
现在才来补这道题,是不是有点太慢了…… 题意比较简单,给你一幅图,让你求这幅图的生成树的带权值和,即最小生成树乘1,次小生成树乘2,次次小生成树乘3……然后k可以很大,图的点只有1000个。还有特别重要的条件,每一条边都最多在一个简单环中,所以说图是一个仙人掌图。原创 2017-07-29 13:47:27 · 595 阅读 · 0 评论 -
2017多校训练赛第二场 HDU 6052(统计+思维)
又是一道统计的题目…… 题目虽说是统计期望,但其实就是用所有矩形的权值和除以总的矩形个数。至于总的矩形个数,很容易求,对于一个点(i,j),以它为右下角的矩形个数就是i*j,由此总的矩形个数就是sigma(sigma(i*j))1<=i<=n,1<=j<=m。原创 2017-07-29 18:31:53 · 584 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6042 (母函数)
人生第一道母函数的题目,纪念一下…… 我就稍微说说母函数吧。母函数分为普通型母函数和指数型母函数,两个分别对应解决组合问题和排列问题。关于它的用法表示,这个自己看看百度百科吧,个人感觉百科已经说得很清楚了。大致意思就是可以通过母函数某一次项的系数来确定结果。 然后这题的话,总共有n个物品,第i个物品的体积为i,数量为ai。那么物品i对应的母函数就是1+x^i+x^2i+x^3i+……+x^ai。剩下的直接就看官方题解吧,够清楚了……原创 2017-08-02 09:57:51 · 1533 阅读 · 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 · 3685 阅读 · 6 评论 -
2017多校训练赛第九场 HDU 6162(离线处理+树链剖分+线段树解法)
离线处理的题目千千万万,但很多时候还是能够让你耳目一新…… 没有修改操作,很显然可以离线水。但是与普通的lca不同,这题要求是求点权在一个区间内的两点路径权值和。加了个值域,就足以让人头疼。但是,万能的我(not)们(me)总能想到方法解决。对于一个询问(x,y,l,r),如果我们把它拆成(x,y,l-1)和(x,y,r)会发生什么呢?没错,如果我能够分别求出这两个,那么把他们两个相减不久可以得到结果了吗。但是,即使如此,还是有一个最大值的限制,不过不要忘了,我们可是在离线处理啊。每个点都有原创 2017-08-24 22:40:07 · 510 阅读 · 0 评论 -
2017多校训练赛第四场 HDU 6070(二分答案+线段树+扫描线)
一道常规题,还是那句话,比赛的时候就是蠢…… 本题是问,区间内 (题目数目)/(区间长度)的最小值。不巧的是,这一类问题比较就没有遇到了,所以说比较蠢,没有想到最优比例生成树这个经典模型。最优比例生成树是今年寒假的时候就见到的模型,大致就是每条边有两个权值ai和bi,然后要你求一棵生成树,使得最后树的 所有ai之和/所以bi之和最大或者最小。解决的方法就是用二分答案,我们假设这个最后的比例是k,为了方便表示我们把ai之和表示为sa,bi之和表示为sb,那么有:sa/sb=k。然后我们设最优解原创 2017-08-04 20:37:01 · 523 阅读 · 0 评论 -
2017多校训练赛第九场 HDU 6162(LCA+Treap解法)
Ch’s gift Time Limit: 6000/3000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1091Accepted Submission(s): 412 Problem Description Mr. Cui is working off-cam...原创 2017-08-25 10:48:44 · 463 阅读 · 0 评论 -
2017多校训练赛第三场 HDU 6061(NTT模板)
题目容易理解,相当于求f(x-sigma(ai))。 难点在于卷积式子的推导和转换。具体见代码:原创 2017-08-25 22:50:25 · 720 阅读 · 0 评论 -
2017多校训练赛第一场 HDU 6035 Colorful Tree (dfs+正序统计)
这题,好像是没做出的所有题目中,最容易做出来的题目,但是当时真的静不下心啊…… 统计所有路径上的颜色数量,直接枚举所有的路径条数显然不行,比较惯用的计算方法是统计每一个点对最后结果的贡献。这里题解是用了补集的思想,反过来求,我给出一种另外的思路,不反着做,直接正着统计和。 首先,我们规定,对于同一条路径上的两个相同的颜色,我们只统计dfs序靠前的那个。然后,对于一个点i,我们可以分成两种情况讨论。第一种情况,我们只计算i的子树范围内的方案数,这个还是比较容易计算的,其中一部分原创 2017-07-26 19:44:36 · 575 阅读 · 0 评论