
多校
文章平均质量分 76
wjw1340
这个作者很懒,什么都没留下…
展开
-
HDU6127 Hard challenge【几何】
题意:平面上有许多点,过原点,作一条线把它们分为两个部分,求两边权重和的乘的最大值思路:求每个点对于x轴的角度,以y轴为初始线分为两边(可能有点在y轴,加个精度判断),排序,每次扫一个点,看这点去到了哪一边,更新ans#include#include#include#include#include#include#include#include#includ原创 2017-08-16 21:38:59 · 216 阅读 · 0 评论 -
HDU6053 TrickGCD【数学】
题意:B≤A,B中所有元素gcd≥2,求B的方案数思路:枚举所有gcd≤min(A[i]),对于 每个A[i],求它有几个gcd的倍数,把它们累乘,最后方案数累加。但要去掉重复的数,比如6是2、3的倍数,用莫比乌斯反演,来每个gcd前乘个系数。n最大1e5,取gcd n,遍历A n,O(n^2)超时的节奏。这个用一个前缀和 和 快速幂优化。比如gcd是2,A中元素用原创 2017-07-28 14:06:57 · 331 阅读 · 0 评论 -
HDU6047 Maximum Sequence【STL】
题意:求a[n+1]~a[2*n]的和,这些值得计算方法是,每次用b数组取值,a[i] = MAX(a[k]-k) (bj ≤ k ≤ i-1)思路:我们用优先队列存下a[i]-i 和他们的位置,每次取最大的值的位置,没有了就向前取,这样就保证每次取到的是最大的,放在a[i]最优。#includeusing namespace std;const int MAX=250原创 2017-07-27 20:40:31 · 199 阅读 · 0 评论 -
HDU6040 Hints of sd0061【STL】
题意:用给的A、B、C算出n个值,每次求第Bi小的数思路:直接sort的话,会超时。这里用到STL中的函数nth_element ( arr.begin() ,arr+n,arr.end() ),这个时间复杂度是线性的调用函数后保证比第n小的数小的都在前面,比它大的数在后面。想想也是没必要全部排好,就求那一个就好。给B排序后(用间接排序),从后面往前求。#i原创 2017-07-27 20:05:24 · 321 阅读 · 0 评论 -
HDU6071 Lazy Running【最短路】
题意:一共4个点,从2出发,回到2,求大于等于k的最短路思路:如果存在回到2的路径为k的路,那k+2w的路径一定存在,那只要求d[2][p]的最短路,p为路径长%2w。把这些值加2w加到超过k,取最小值。#include#include#include#include#include#include#include#include#include#incl原创 2017-08-07 10:05:52 · 232 阅读 · 0 评论 -
HDU6180 Schedule
题意:有许多任务,给你开始时间和结束时间。问最少几台机器可以完成,最小工作时间(每台机器的时间是第一个任务的开始时间到最后一个任务的结束时间)思路:先来看这么一个问题,多次给一段区间内的数加上某个数,问最大的数是几,比如给[3,5]加上2,最方便的做法是,给开始3打上个记号2,给结束5后的数6,打记号上-2。求一遍前缀和,中间最大的sum就是最大的数。回到这个问题,最少几台机器,假原创 2017-08-25 19:36:53 · 366 阅读 · 0 评论 -
HDU6165 FFF at Valentine【BFS】
题意:一个有向图,问任意两点间是否存在一条路可到达另一个点(A->B 或 B->A 有一条路即可)思路:官方题解,真是巧妙原创 2017-08-22 20:58:33 · 215 阅读 · 0 评论 -
HDU6178 Monkeys【DFS】
题意:给定一棵树,要使至少两只猴子连在一起(没有一个被孤立),最少保留几条边。猴子可以随意放在哪个点,一个点最多一个。思路:在树中找,两个点,一条边的情况,最多有几条(最大匹配)。这样边最少。猴子不够放的话,每多一只,多放一条边。对于一个点,只要它的儿子中有一个点没有匹配,它就和那个点,组成一对。PS:还卡读入,算是学到了。留个模板#includeusing na原创 2017-08-26 02:25:57 · 241 阅读 · 0 评论 -
HDU6162 Ch’s gift【LCA】
题意:给定一棵树,求两个点之间路径上的点权和,点权在一定范围内才有效,否则为0思路:开始T了一发双向BFS,后来想到有个算法叫LCA,可惜没学过,现场学,还用错一个模板,用的是二分搜索找LCA的模板。我是每次加上新到的点的权(范围内),二分这个,更新的点,不一定是路径上的。应该用一步一步往上走的模板,赛后才想到,为时已晚。每个点有一个深度,找两个点的LCA时,大家先走到一个深度,再原创 2017-08-22 19:23:22 · 811 阅读 · 1 评论 -
HDU6033 Add More Zero【数学】
题意:10^k ≥ 2^m -1,求k的整数思路:由于2^m 除了开始的1,其他末尾都是2、4、6、8,减一不影响进位。log10(2^m) = mlog(2) ,取整数就好#includeusing namespace std;int main(){ int kase = 1,n; while(scanf("%d",&n)!=EOF) {原创 2017-07-27 18:53:32 · 291 阅读 · 0 评论 -
HDU6055 Regular polygon【哈希】
题意:给了很多整数点,找能组成的正多边形的个数。思路:在整数点上的正多边形,就只有正方形了。把每个点都存下来,遍历每两个点,看看与它们组成正方形的另外两个存不存在。最后ans/4。#include#include#include#include#include#include#include#include#include#include#inclu原创 2017-07-27 19:40:37 · 280 阅读 · 0 评论 -
HDU6129 Just do it【规律】
题意:有一个序列,重复m次操作。操作:新的Ai是A1到Ai(前缀)的异或思路:手写几项(借了张图),写得时候两个相同元素不要舍去,统计它的次数(不然看不出规律)每个元素其实是个组合数(杨辉三角),偶数没有贡献,奇数就异或上,当 x&y == y,C(x,y)是奇数,考虑每一项开头元素的奇偶,若是奇数,它自己开始往后,都要贡献上一个数,往后一项贡献的元素序号也加一原创 2017-08-16 21:41:17 · 263 阅读 · 0 评论 -
HDU6092 Rikka with Subset【DP】
题意:已知体积和方案数,求背包内的各个物品的体积思路:我们一般用一维数组的DP求方案数memset(dp,0,sizeof dp);dp[0] = 1;for(int i = 1; i <= n; i++) //物品数,a[i]为物品体积 { for(j = v; j >= a[i]; j--) dp[j] += dp[j-a[i]];} 现在我们知道方案数,那原创 2017-08-09 21:02:53 · 231 阅读 · 0 评论 -
HDU6060 RXD and dividing【DFS】
题意:一颗树,把2~n点分成k部分,求1到k部分连通的最大权重思路:考虑每条边的贡献,u -> v(v连向1),这条边将被用min(sz(u),k),sz是以u为根子树的点的数量#include#include#include#include#include#include#include#include#include#include#include原创 2017-08-02 20:43:13 · 243 阅读 · 0 评论 -
HDU6058 Kanade's sum【模拟】
题意:找所有区间的第k大值,没有第k大就是0,求和思路:我们需要一个链表,记录每个位置左右比他大的数的第一个位置。n从大到小枚举,我们用set存放比它大的数的坐标,查找距离它最近的位置,更新链表。我们在这个位置左右找比它大的k-1个值,那这个位置就是第k大的。找到这些区间即可。#include#include#include#include#include#inc原创 2017-08-02 20:57:51 · 257 阅读 · 0 评论 -
HDU6069 Counting Divisors【数学】
题意:求d(i)的累加和,d是i的因子数。思路:设n=p1c1p2c2...pmcm,则d(nk)=(kc1+1)(kc2+1)...(kcm+1)d(n^k)=(kc_1+1)(kc_2+1)...(kc_m+1)枚举不超过r\sqrt{r}的所有素数p,去删p的倍数。用b[i] = 0,表示是素数。质数的倍数置1,然后分解这个数,用c[i]表示这个数被除完前面的原创 2017-08-03 19:11:18 · 256 阅读 · 0 评论 -
HDU6073 Matching In Multiplication【拓扑】
题意:每个左边的点有两条边连到右边,一个完美匹配的权重等于匹配边的价值累乘,求权重和思路:官方题解写的挺清楚的。官方题解:首先如果一个点的度数为1,那么它的匹配方案是固定的,继而我们可以去掉这一对点。通过拓扑我们可以不断去掉所有度数为11的点。那么剩下的图中左右各有m个点,每个点度数都不小于2,且左边每个点度数都是2,而右侧总度数是2m,因此右侧只能是每个点度数都是2。原创 2017-08-04 11:07:21 · 251 阅读 · 0 评论 -
HDU6034 Balala Power!【贪心】
题意:给你许多字符串,让你给这些字母赋值(0-25),把字符串转化成26进制数,不能有前导0,但可以是“0”。求累加和思路:把字母在哪一位都记下来,开始我是用num数组,把这些字母直接累加26^cnt (cnt为第几位),这num显然是要炸得,WA了十几遍。正解应该是把字母的位数都存下来,num[26][100005]。满26就进位。最大的乘25,依次减少。#inc原创 2017-07-26 21:51:25 · 201 阅读 · 0 评论 -
HDU6043 KazaQ's Socks【规律】
题意:他有很多袜子,每天穿编号最小的(穿完不洗,放着),剩最后一双的时候把前面的都洗了。思路:模拟一个,找规律,比如4双放在一边 柜子里的(开头是今天要穿的) 12341 23412 34123 4----------原创 2017-07-27 19:13:10 · 360 阅读 · 0 评论 -
HDU6181 Two Paths【次短路】
题意:求1到n的次短路思路:套下模板#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;t原创 2017-08-28 13:46:07 · 196 阅读 · 0 评论