08 2018 档案

摘要:P2568 GCD https://www.luogu.org/problemnew/show/P2568 思路: 1.题目要求 考虑枚举的情况,问题转换为 即 然后就能用mobius做了。(别忘了开long long AC Code: #include<cstdio> #include<cstri 阅读全文
posted @ 2018-08-26 13:02 dprswdr 阅读(243) 评论(0) 推荐(0)
摘要:P2261 [CQOI2007]余数求和 https://www.luogu.org/problemnew/show/P2261 思路: 而的值是成块状分布的,被称为数论分块。以为例,令=1,则第一个块所代表的值为,则第一个块的右端,然后下一个块的左端,以此类推,最终这些块共有种取值,可以在的时间内 阅读全文
posted @ 2018-08-26 12:59 dprswdr 阅读(147) 评论(0) 推荐(0)
摘要:传送门 思路:模拟next_permutation函数(也可能这是next_permutation的实现)。 ①找到最后一个满足a[i]<a[i+1]的i,记为minpos=i; ②找到最后一个满足a[j]>a[minpos]的j,记为maxpos=j; ③把a[minpos]和a[maxpos]交 阅读全文
posted @ 2018-08-11 20:48 dprswdr 阅读(201) 评论(0) 推荐(0)
摘要:传送门 思路:操作数M<=200000,假设每次都是插入,那么得到的序列长度也不会超过200000,考虑对区间[1,m]建一棵线段树,然后就是板子题了。 AC Code: 阅读全文
posted @ 2018-08-11 20:20 dprswdr 阅读(153) 评论(0) 推荐(0)
摘要:传送门 思路:由于n<=6,我们可以枚举油滴放置顺序的排列,然后DFS。对于每个油滴,其能扩散的最小半径为min{到四个边界的距离,到已添加的点的扩散范围的最小距离}。最后注意四舍五入:printf("%d",(int)ans+0.5);(其中ans为double类型)。 AC Code: 阅读全文
posted @ 2018-08-11 20:09 dprswdr 阅读(125) 评论(0) 推荐(0)
摘要:1.debug时的测试代码提交时别忘了删掉。 2.还有交OJ时别忘了删freopen。 3.线段树别忘了build(1,1,n)。 4.线段树建树&各种修改别忘了update。(刚发现我一直打的是updata......) 5.并查集别忘了for(int i=1;i<=n;i++) fa[i]=i; 阅读全文
posted @ 2018-08-06 15:34 dprswdr 阅读(222) 评论(0) 推荐(0)
摘要:传送门 题意:给定一个有n个数的序列,找一个数,使得这个数与其他数的差的绝对值之和最小。 思路:先对序列排序,假设该数为第p个数,则p左侧有p-1个数,右侧有n-p个数,若p向左移动1个单位,ans'=ans-(p-1)+(n-p);若p向右移动1个单位,ans''=ans-(n-p)+(p-1), 阅读全文
posted @ 2018-08-05 14:17 dprswdr 阅读(140) 评论(0) 推荐(0)
摘要:传送门 思路:将所有出现过的语言(语音、字幕、人们知道的)离散化一下,然后模拟即可。 AC Code: 阅读全文
posted @ 2018-08-05 13:59 dprswdr 阅读(163) 评论(0) 推荐(0)
摘要:传送门 思路:我们用一个n位二进制数表示当前疾病的状态:0表示已经治愈,1表示未治愈。通过BFS遍历所有状态,对于每个状态x,我们枚举所有解药,若当前解药i能够治愈第j种疾病,就将x的第j位赋值为0;若当前解药i能够使人得第j种疾病,就将x的第j位赋值为1。注意,别忘了对状态判重!若第一次所有疾病都 阅读全文
posted @ 2018-08-05 13:45 dprswdr 阅读(255) 评论(0) 推荐(0)
摘要:传送门 思路: 考虑暴搜,可以过20pt。 然后加一些玄学的剪枝: 1.可行性剪枝:当前摆的花数超过了m,return。 2.可行性剪枝:当前第x种花摆i盆,剩下的花数为m-ud-i,若这些花摆满剩下的花还有剩余,return。 (然而上面这些都不如一个记忆化。。。) 然后记忆化一下就过了。 AC 阅读全文
posted @ 2018-08-05 13:38 dprswdr 阅读(271) 评论(0) 推荐(0)
摘要:(一)二分 答案必须具有单调性!! 一。整数集合上的二分 有两种不同的写法:当check(mid)成立时,若答案在右区间,采用第一种写法;反之,若答案在左区间,采用第二种写法。采用配套写法,可以防止死循或漏解。 ① ② 注意:若存在负整数的情况,需采用mid=(xxx)>>1而非mid=(xxx)/ 阅读全文
posted @ 2018-08-05 12:37 dprswdr 阅读(212) 评论(0) 推荐(0)
摘要:1.补码表示: ~x=-1-x 2.自然溢出:unsigned long long 自动对2^32取模,可以用来hash。 3.基本位运算操作: 左移:1<<n=2^n n<<1=2n,n<<2=4n,n<<3=8n。。。 算术右移:n>>1=n/2 ,n>>4=n/16。。。算术右移=除以2向下取 阅读全文
posted @ 2018-08-04 22:26 dprswdr 阅读(435) 评论(0) 推荐(0)
摘要:传送门 思路: 1.状态:由于经过的点是一个集合,所以我们用dis[i][j]表示经过的点的状态为i,且当前位于点j时的最短Hamilton路径,其中i为一个二进制整数,用来存储经过的点的情况。为了方便位运算,我们的点的标号为0~n-1。 2.边界:dis[1][0]表示当前在起点0的最短Hamil 阅读全文
posted @ 2018-08-04 21:56 dprswdr 阅读(209) 评论(0) 推荐(0)
摘要:传送门 思路:加上能够养活x个妹子,那么必定能养活<x个妹子,满足单调性,可以二分。 我们二分能够养活的最大的妹子数量。对于当前已经符合check函数的mid,ans一定在[mid,r]的区间内, 因此采用 mid=(l+r+1)>>1;if(check(mid)) l=mid;else r=mid 阅读全文
posted @ 2018-08-04 21:11 dprswdr 阅读(119) 评论(0) 推荐(0)
摘要:传送门 思路: 对于“找出一种最优排列顺序,使答案最优”的贪心题目,我们可以用“邻项交换”的方法去找出并证明贪心策略。 例如本题,我们假设有两头奶牛,其到达牛圈时间分别为Ti,Ti+1,每分钟吃掉的花朵数分别为Di,Di+1。 有两种情况: ① 排列顺序为i i+1 则两头牛吃掉的花朵数为 res1 阅读全文
posted @ 2018-08-04 18:46 dprswdr 阅读(338) 评论(0) 推荐(0)
摘要:传送门 思路:一个贪心策略就是“在不挤超过截至时间的奶牛的前提下,尽量挤奶量大的奶牛”。So我们将奶牛按截至日期从小到大排序,对于每个截至时间t,将所有截至时间为t的奶牛的奶量加入一个大根堆,只留下前t大的数,剩下的直接删去。由于priority_queue没有clear函数,所以我手写了一个堆。。 阅读全文
posted @ 2018-08-04 18:26 dprswdr 阅读(196) 评论(0) 推荐(0)