随笔分类 -  经典---《算法竞赛进阶指南》

摘要:"JOYOI1424 占卜DIY" Sol: 模拟即可。 TIPS: 1.理清思路再写。 2.注意各种特判和细节。(比如抽到13后虽直接退出但牌堆还是要下落) AC CODE: include include include using namespace std; int a[15][6]; in 阅读全文
posted @ 2018-10-14 23:04 dprswdr 阅读(324) 评论(0) 推荐(0)
摘要:"CODEVS 2485 七夕祭" Sol: 当行的平均值不为整数时,不能均分,列同理。 对行和列分别做一次环形均分纸牌问题。 AC CODE: include include include using namespace std; const int N = 100000 + 100; int 阅读全文
posted @ 2018-10-14 07:29 dprswdr 阅读(261) 评论(0) 推荐(0)
摘要:"P2512 [HAOI2008]糖果传递" Sol: 环形均分纸牌问题 + 考虑最基本的均分纸牌问题,相当于将环从1与n之间断开。 令$res_i$表示第$i$个人达到平均值所用步数,ave$表示糖果的平均数。 则 $res_1=a_1 ave$ $res_2=a_2 ave+res_1=a_1+ 阅读全文
posted @ 2018-10-14 07:24 dprswdr 阅读(375) 评论(0) 推荐(0)
摘要:"POJ1845 Sumdiv" Sol: 约数个数和$sumdiv=(1+p_1+p_1^2+\dots + p_1^{c_1}) \dots (1+p_k+p_k^2+\dots + p_k^{c_k})$ 其中每一项都是一个首项为1,公比为$p_i$的等比数列的和,即 $1 \frac{1 p 阅读全文
posted @ 2018-10-09 23:58 dprswdr 阅读(159) 评论(0) 推荐(0)
摘要:"JOYOI1266 费解的开关" Sol: 首先观察题目性质: 当第一行的方案固定时,接下来所有行的方案都已经固定。因为若第i行的第j列为0,则必须点击第i+1行第j列才能将该0变为1。 而第一行的所有点击方案总数为$2^5=32$,可以将所有方案枚举依次考虑。剩下几行递推求出总共点击次数,然后判 阅读全文
posted @ 2018-10-09 23:33 dprswdr 阅读(206) 评论(0) 推荐(0)
摘要:"POJ2018 Best Cow Fences" Sol: 题目要求一个平均数最大且长度不小于L的子段,并输出平均数 1000的 整数部分(直接截取而非舍入) 以下思路来自PKU李煜东神犇的《算法竞赛进阶指南》 我们将问题转化一下:相当于将序列中每个数都减去同一个值,且最大子段和非负(即能够找到一 阅读全文
posted @ 2018-10-09 23:25 dprswdr 阅读(427) 评论(0) 推荐(0)
摘要:POJ2182 Lost Cows "传送门" 题意: 给定一个排列,给出每个位置$i$的数$a_i$前面比$a_i$小的数的个数$k_i$,求这个排列。 思路: $a_n$是最先可以确定的:$a_n=k_n+1$。然后我们可以倒序处理,对于$a_i$,它等于当前未被选的数中第$k_i+1$小的那个 阅读全文
posted @ 2018-09-16 23:38 dprswdr 阅读(185) 评论(0) 推荐(0)
摘要:JOYOI1432 楼兰图腾 "传送门" 思路: 题目等价于要求满足$x_1y_3$和$x_1y_2,y_2 include include include using namespace std; const int N=200000+100; typedef long long LL; int 阅读全文
posted @ 2018-09-16 23:03 dprswdr 阅读(246) 评论(0) 推荐(0)
摘要:(一)二分 答案必须具有单调性!! 一。整数集合上的二分 有两种不同的写法:当check(mid)成立时,若答案在右区间,采用第一种写法;反之,若答案在左区间,采用第二种写法。采用配套写法,可以防止死循或漏解。 ① ② 注意:若存在负整数的情况,需采用mid=(xxx)>>1而非mid=(xxx)/ 阅读全文
posted @ 2018-08-05 12:37 dprswdr 阅读(207) 评论(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)
摘要:Raising Modulo Numbers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9061 Accepted: 5522 Description People are different. Some secretly 阅读全文
posted @ 2018-02-01 23:34 dprswdr 阅读(205) 评论(0) 推荐(0)