摘要: 传送门 思路:将所有出现过的语言(语音、字幕、人们知道的)离散化一下,然后模拟即可。 AC Code: 阅读全文
posted @ 2018-08-05 13:59 dprswdr 阅读(162) 评论(0) 推荐(0)
摘要: 传送门 思路:我们用一个n位二进制数表示当前疾病的状态:0表示已经治愈,1表示未治愈。通过BFS遍历所有状态,对于每个状态x,我们枚举所有解药,若当前解药i能够治愈第j种疾病,就将x的第j位赋值为0;若当前解药i能够使人得第j种疾病,就将x的第j位赋值为1。注意,别忘了对状态判重!若第一次所有疾病都 阅读全文
posted @ 2018-08-05 13:45 dprswdr 阅读(251) 评论(0) 推荐(0)
摘要: 传送门 思路: 考虑暴搜,可以过20pt。 然后加一些玄学的剪枝: 1.可行性剪枝:当前摆的花数超过了m,return。 2.可行性剪枝:当前第x种花摆i盆,剩下的花数为m-ud-i,若这些花摆满剩下的花还有剩余,return。 (然而上面这些都不如一个记忆化。。。) 然后记忆化一下就过了。 AC 阅读全文
posted @ 2018-08-05 13:38 dprswdr 阅读(270) 评论(0) 推荐(0)
摘要: (一)二分 答案必须具有单调性!! 一。整数集合上的二分 有两种不同的写法:当check(mid)成立时,若答案在右区间,采用第一种写法;反之,若答案在左区间,采用第二种写法。采用配套写法,可以防止死循或漏解。 ① ② 注意:若存在负整数的情况,需采用mid=(xxx)>>1而非mid=(xxx)/ 阅读全文
posted @ 2018-08-05 12:37 dprswdr 阅读(209) 评论(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 阅读(430) 评论(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 阅读(207) 评论(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 阅读(115) 评论(0) 推荐(0)
摘要: 传送门 思路: 对于“找出一种最优排列顺序,使答案最优”的贪心题目,我们可以用“邻项交换”的方法去找出并证明贪心策略。 例如本题,我们假设有两头奶牛,其到达牛圈时间分别为Ti,Ti+1,每分钟吃掉的花朵数分别为Di,Di+1。 有两种情况: ① 排列顺序为i i+1 则两头牛吃掉的花朵数为 res1 阅读全文
posted @ 2018-08-04 18:46 dprswdr 阅读(335) 评论(0) 推荐(0)
摘要: 传送门 思路:一个贪心策略就是“在不挤超过截至时间的奶牛的前提下,尽量挤奶量大的奶牛”。So我们将奶牛按截至日期从小到大排序,对于每个截至时间t,将所有截至时间为t的奶牛的奶量加入一个大根堆,只留下前t大的数,剩下的直接删去。由于priority_queue没有clear函数,所以我手写了一个堆。。 阅读全文
posted @ 2018-08-04 18:26 dprswdr 阅读(193) 评论(0) 推荐(0)
摘要: //参考:模运算_百度百科 一、概念:对于一个数n,给定一个数p,一定存在等式 n = k * p + r ,其中k、r是整数,且0 ≤ r <p。 则称k为n除以p的商,r为n除以p的余数,即 n / p = k (/为整除),n % p = r(%、mod为模运算)。 ->注意: 1、若a % 阅读全文
posted @ 2018-06-08 22:45 dprswdr 阅读(1357) 评论(0) 推荐(0)