肘子的博客

板刷总没错

不要62 HDU - 2089(数位DP)

跟着最最厉害的老王学了一波 数位DP:求出在给定区间[A,B]内,符合条件p(i)的数的个数,条件p(i)一般与数的大小无关,而只与数的构成有关,A,B一般都很大,需要将区间处理成求解[x,B]-[x-A-1]d的个数(x根据问题确定,一般为0) 题意:传送门 题解:首先这个题可以根据打表得出答案...

2019-05-11 16:34:31

阅读数 20

评论数 0

历届试题 区间移位(二分+谜之贪心)

题意:传送门 题解:这个题两大坑点,跌跌撞撞了14发过,直接二分答案,然后检查如何检查,是个问题?刚开始想到的按照左端点进行排序,然后尽量往右边铺,得70分,最后想想这样有弊端,使某些长的区间没有发挥出自己的作用(可以反证一番),然后按照右边排序处理,从70分到90分,还是有个点过不去,之后发现这...

2019-05-06 17:54:25

阅读数 27

评论数 0

历届试题 对局匹配(划分集合dp/贪心)

题意:传送门 题解:怎么能产生矛盾,那就是正好相差k,那就可以把这些数根据模k的余数统一处理成k个集合,然后在每个集合上进行操作,dp[j]=max(dp[j-k],dp[j-2k]+cnt[j]),也就是这个数要么不用,那么直接用第j-k个,要么使用,那么就是j-2k,最后把划分的集合分别累加即...

2019-05-06 14:32:43

阅读数 14

评论数 0

Halloween Costumes LightOJ - 1422(区间DP)

题意:传送门 题解:用dp[i][j]表示从第i天到第j天至少穿多少次,状态转移方程为: dp[i][j]=min(dp[j][j],dp[i+1][k-1]+dp[k][j])其中c[i]=c[k]。 /* *Auther:yaozhuojiang *Date:2019-05-06-11.26....

2019-05-06 12:14:45

阅读数 13

评论数 0

Cake ZOJ - 3537(凸包+三角剖分的区间DP(记忆化搜索+递推))

题意:传送门 题解:首先判断是否构成凸包,是凸包使用最优三角剖分的思想实现,对于一个n个顶点的凸多边形,有很多种方法可以对它进行三角剖分,即用n-3条互不相交的对角线把凸多边形分成n-2个三角形。为每个三角形规定一个权值函数w(i,j,k),求让所有三角形权和最大的方案。定义dp[i][j]为自多...

2019-05-06 11:25:09

阅读数 60

评论数 0

Brackets POJ - 2955(区间DP)

题意:传送门 题解:区间DP入门题,是用f[i][j]表示从第i个位置到第j个位置有最多已经匹配了多少个括号,那么如果第i为与i~j之间的第k位匹配的话,那么得到转移方程为:f[i][j]=max(f[i][j],f[i+1][k-1]+f[k+1][j]+2),如果没有匹配的话f[i][j]=m...

2019-05-06 08:08:52

阅读数 6

评论数 0

Double Matrix CodeForces - 1162B(贪心)

题意:传送门 题解:将两个矩阵中同一个位置中每个小的元素统一放到上面那个矩阵上,大的统一放在下面那个矩阵上,之后判断两个矩阵是否符合单调递增的情况即可。证明:如果上面那个矩阵不符合,那么a(i,j)>a(i+1,j)/a(i,j+1),如果此时调换位置后,b(i,j)更大了,如果下面...

2019-05-05 20:57:38

阅读数 30

评论数 0

历届试题 小数第n位(优化竖式除法)

题意:传送门 题解:刚开始想了下,如果提前将a乘上10e(n+2)次方之后,再除以b,之后模1e3就是答案,但是n过大,1e9,直接爆任何大数,模拟竖式乘法最多进行n+2次,范围1e9正好处于1s的边缘范围,最后发现有两处可以优化,第一处就是中间如果一旦发现a为0之后,直接跳出,但是依旧可以卡下这...

2019-05-05 16:10:10

阅读数 6

评论数 0

历届试题 分考场(dfs)

题意:传送门 题解:这个人要么在已经分配的考场中,要么重新使用一个考场,直接dfs即可。 #include<bits/stdc++.h> using namespace std; const int maxn=1e2+5; int n,m,a,b,p[maxn][max...

2019-05-05 12:51:31

阅读数 7

评论数 0

历届试题 小计算器(模拟)

题意:传送门 题解:模拟,对于清空操作,只有数字和运算清空了,但是进制却没有动,主要在于X进制转为10进制,10进制转为X进制,也是比较好写的一个模拟。 #include<bits/stdc++.h> using namespace std; long long DCH...

2019-05-05 12:40:43

阅读数 8

评论数 0

BZOJ1305: [CQOI2009]dance跳舞(拆点法+最大流)

题意:传送门 题解:首先可以看出三个限制,第一个是所有的人都要跳舞,第二个是一个男的只能和一个女的跳一次,第三个就是一个人最多只能和k个不喜欢的人跳舞,那么对于这些限制一一进行建图,对于限制二,很经典的容量为1即可,对于限制一和限制三,可以将图中每个男女这些点拆为两个,第一个为喜欢的点,第二个为不...

2019-05-04 19:06:09

阅读数 14

评论数 0

计算几何(AIZU CGL一览)

点积求投影 #include<bits/stdc++.h> using namespace std; struct Point{ double x,y; Point(double _x=0,double _y=0):x(_x),y(_y){} ...

2019-04-07 17:10:58

阅读数 52

评论数 0

BZOJ1221: [HNOI2001] 软件开发(拆点+费用流)

题意:传送门 题解:这个题需要使用拆点,因为这一天毛巾用完后可以留到下一天,或者用于A洗衣,或者用于B洗衣中,同时每一天的来源也有买的或者洗好的,所以拆为两个,一边放置用过的毛巾(1-n),一边放需要用的毛巾(n+1,n+n),首先将S与需要用的毛巾连(S,(n+i),inf,p),然后再将需要...

2019-03-29 22:38:19

阅读数 18

评论数 0

BZOJ3171: [Tjoi2013]循环格(规律+费用流)

题意:传送门 题解:首先需要证明出最后对应每个点都对应一个入度和一个出度,详细证明可参考传送门,证明一番之后就能用费用流进行做题了,S向每个点连容量1费用0的边,每个点拆出的点向T连容量1,费用0的边,每个格子向四周连费用0或1的边。 附上代码: #include<bits/...

2019-03-29 17:37:40

阅读数 21

评论数 0

BZOJ2190: [SDOI2008]仪仗队(欧拉函数)

题意:传送门 题解:将这些点统一向左下方移动一格,可以将这些点与原点进行连线,一种斜率只能看到一个点,这是必然的,因为y2/x2=y3/x3,可以进行化简为y1/x1,然后就OK了,要使斜率不同,也就是这两个数需要互质,然后可以统计一下[2,n)之间的欧拉值,最后还有个(1,1),(1,0),(...

2019-03-29 16:41:49

阅读数 11

评论数 0

Divide Candies CodeForces - 1056B(思维+数学)

传送门 题意:给出a,b,范围为[1,n],然后问(a^2+b^2)%m==0的情况有多少个,n<=1e9,m<=1e3 题解:(a^2+b^2)%m=((a^2)%m+(b^2)%m)%m=((a%m*a%m)%m+(b%m*b%m)%m)%m,所以可以通过枚举取...

2019-03-29 09:58:00

阅读数 22

评论数 0

Labyrinth CodeForces - 1063B (0-1最短路)

传送门 题意:从起点开始最多能向左走L步,最多能向右走R步,问最多能覆盖图上多少个点? 题解:参考ysl的题解,先进行变量代换,之后使用0-1最短路的deque算法即可。 附上代码: #include<bits/stdc++.h> using namesp...

2019-03-28 10:19:58

阅读数 26

评论数 0

快速幂深入了解,以及加法,减法,乘法取余的证明

题外话:昨天看李煜东老师写的算法竞赛进阶指南中说探究一门学问有三个层次:求其解,知其原因,究其思维之本。通俗地讲,就是”怎么做“,”为什么是对的“,”怎么做才能想到这么去做“。 -----------------------------------------------------------...

2019-03-26 10:48:32

阅读数 22

评论数 0

BZOJ1818: [Cqoi2010]内部白点(离散化+树状数组+扫描线)

题意:传送门 题解:最后黑点的总个数也就是线段之间交点的个数再加上刚开始黑点的个数,首先可以将x轴上的进行离散化,然后把横线和竖线打出来,之后利用扫描线从下往上扫,如果见到竖线的下端,更改树状数组,将对应位置加1,如果见到横线,统计出这个范围的1的个数,见到竖线的上端继续更改树状数组,将对应位置...

2019-03-23 21:42:56

阅读数 13

评论数 0

BZOJ2875: [Noi2012]随机数生成器(矩阵龟速乘法/龟速乘法+等比数列递归求和)

题意:传送门 题解:可以将前几项依次写出来: x[1]=(a*x[0]+c)%m; x[2]=(a*x[1]+c)%m=(a*(a*x[0]+c)+c)%m=(a^2*x[0]+a*c+c)%m; x[3]=(a*x[2]+c)%m=(a*(a^2*x[0]+a*c+c)+c)=(a^3*x[...

2019-03-20 17:05:47

阅读数 21

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭