自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大乐的博客

此地非逐弃者之王座,彼方乃行愿者之归所。无限清澈,星界银波。

  • 博客(22)
  • 收藏
  • 关注

原创 Codforces 401D

题目链接:CF 401D本来以为是数位DP的题目,就直接套了模板,但是发现只用二进制来表示相应的位数已经被选过,选择的顺序并不能体现。看了题解发现是想普通的dp那样定义,用dp【i】【j】表示集合i中的点已经被选择,%m结果为j的方案总数。最后dp【1<<(len-1)】【0】就代表符合条件的方案数目#include<iostream>#include<cstdio...

2018-03-29 23:43:33 189

原创 hdu 5642

题目链接:hdu 5642模板题,甚至不用判断limit,水过~#include<iostream>#include<cstdio>#include<vector>#include<set>#include<map>#include<string.h>#include<cmath>#include&a

2018-03-29 19:54:37 207

原创 CodeForces 954D

题目链接:CF 954D给定一个无向图和起点、终点现在要向图中添加边,使得起点和终点之间的距离不会被缩小两遍spfa处理出每个点分别距离起点和终点的最短的距离,双重循环判断如果dis(起点,i)+dis(j,终点)+1>dis(起点,终点),那么sum++;因为点可能会倒过来所以要判断两次,详见代码#include<iostream>#include<cstdio>...

2018-03-29 00:19:10 463

原创 CodeForces 954C Matrix Walk

题目链接:CF 954C这道比赛时候卡了好多的人啊。。看榜的时候发现大家都是wa了89发。。。贼坑其实想的简单一点,先找到y值,再检查一遍就好了~因为每个点只能向四个方向走,我们把这四个点的值与起始点的值相减,会发现只能是±1和±y,那么取绝对值之后除了1只能有1个值(y),有两个值就肯定错了第二遍检查的时候,要注意两种情况(0的情况在第一步就可以判断)①在右边界向右走②在左边界向左走处理之后找最...

2018-03-29 00:12:03 415

原创 hdu 6148

题目链接:hdu 6148数位DP比较简单的一题,然而我还是做了很久别的没有什么,主要就是前导0是需要特殊考虑的一点。若不考虑签到0,会导致010被排除,但其实是合法的。用lead=1来表示前导0的存在,在i==0&&lead==1时,下一步lead为1其他就和正常的数位DP一样了#include<iostream>#include<cstdio>#in...

2018-03-29 00:02:53 295

原创 hdu 4722

题目链接:hdu 4722数位dp模板题,顺便把模板写出来了#include<iostream>#include<cstdio>#include<vector>#include<set>#include<map>#include<string.h>#include<cmath>#include&amp

2018-03-28 20:31:48 182

原创 hdu 4507 数位dp

题目链接:hdu 4507数位dp难度中等的一道题,判断的条件有三个,每个数字不为7可以在判断中排除,另外两个需要在递归基中判断维护三个值:从pos位往后符合条件的数的数量num、这些数字的和sum,这些数字的平方和ssum①num可以循环加得②sum需要用用num再乘上一个当前数位所代表的值,即i*10^pos③计算ssum时把sum和i*10^pos拆开完全平方分解(i*10^pos+sum)...

2018-03-28 19:51:49 465

原创 hdu 2089 数位dp

题目链接:hdu 2089给两个整数n,m求n到m之间符合给定条件的数条件:6后面不能是2,不能有4数位dp裸题,开一个三维数组,dp【i】【j】【k】表示当前为第i位后面符合条件的数量,j=0:前一位不为6,j=1:前一位是6k=0:本位取值没有限制,可以从0~9,k-1则是本位的值不能超过原数此位的值。这样把状态定义好之后就能进行dp了#include<iostream>#inc...

2018-03-21 20:24:48 132

原创 hdu 5067 状压DP 旅行商问题TSP

题目链接:hdu 5067旅行商问题(TSP)有一个商人要去n个城镇,给出这n个城镇的坐标(相互的距离),要求出一条每个点经过且只经过一次的最短路径。状压DP比较适用于n比较小的TSP问题。用dp【s】【v】表示当前的状态到最后目标位置所需走的最短距离。s代表当前经过的城镇的集合,若s转化为二进制之后的第i位是1,说明已经走过了i城镇(即状态压缩)v代表当前所在的城镇标号,仅使用其十进制下的意义,...

2018-03-20 23:28:50 756

原创 hdu 1565 状压DP

题目链接:hdu 1565最近真是越来越傻B了,总在输入输出的模块出问题。把二维数组的a【i】【j】变成a【i】了,不提了,真是太傻逼了。先预处理一下每一行n个数有几种取得情况,(在一行之内两两不相邻),一种情况可以用一个n位的二进制数来表示。即若第j位上为1,就说明取了第j个数,这样对于每一个i,如果i&i<<1≠0的话,说明i的二进制表示有两个相邻的1,抛弃不要,否则将i加...

2018-03-20 20:49:50 344

原创 hdu 1520 树形DP

题目链接:hdu 1520树形dp裸题也是第一题,tle卡了许久树形dp就是在树上进行的动态规划过程,因为树这种数据结构本身自带状态转移的过程(父亲到子节点或子节点到父亲),所以在树上搞一手dp就很舒服。设父节点是子节点的直接领导,dp【i】【0】代表i不出场时以i为根的子树rating最大值,dp【i】【1】则是i出场的情况。#include<iostream>#include&l...

2018-03-18 19:37:31 243

原创 hdu 2177 威佐夫博弈

题目链接:hdu 2177威佐夫博弈水题,如果不是奇异局势需要输出走完第一步石堆的状态,先按两堆取相同石子,再按只取一堆。可以打表解决#include<iostream>#include<cstdio>#include<vector>#include<set>#include<map>#include<string.h&g...

2018-03-15 20:53:42 277

原创 hdu 1527 威佐夫博弈

威佐夫博弈的入门题两堆石子分别有a、b个,每次能从一堆中取走>=1个石子,或者从两队中取走同样多个石子奇异局势:面对奇异局势时,先手的人必输。关键在于奇异和非奇异相互转换的证明,证明过程->传送门总之最后的证:任意非奇异局势均可通过一步转换到奇异局势。这样一来,只要判断初始状态的局势就可以了。先将a置为较小的一个数,令k=[(√5-1)*a/2].若a=ak并且b=ak+k或者a=ak...

2018-03-15 19:43:21 219

原创 hdu 2147 巴什博弈+PN图

题目链接:hdu 2147定义两个状态:P:面对P时先手必输N:面对N时先手必胜PN点的确定规则:如果一个点能转换到的所有点都是N,那么此点状态为P。                            若能转化到一个P,即使对手面临必输状态,此点为N所以从终点开始,先确定横纵坐标分别为1的点的状态,在确定中间点的状态。找到规律就能确定n,m点的状态了例:5*5的矩阵pn图P N P N PN ...

2018-03-15 18:32:55 332

原创 hdu 4764 巴什博弈

题目链接:hdu 4764水题,巴什博弈模板题注意n要自减1#include<iostream>#include<cstdio>#include<vector>#include<set>#include<map>#include<string.h>#include<cmath>#include&amp

2018-03-14 23:43:29 256

原创 hdu 2897 巴什博弈

一堆石子,数量有n个,每次最少拿p个,最多拿q个,如果最后少于或等于p个就要一次拿完,最后拿完的人算输。问先手得人是否能赢。个人认为巴士博弈博弈就是通过不断地配数来使对手一直处于必输状态。用第一个样例来说,最少拿2,最多拿4,那么每次后手的人都能使石子数稳定的减少6个,这样用n%6判断情况就可以了。首先确定必输情况:如果当前石子数是6的倍数加一个<=2的数,那么先手必输。因为每次对手都能通过...

2018-03-14 23:20:33 382

原创 hdu 1576 拓展gcd

拓展gcd是一种求两个数a、b的gcd以及ax+by=gcd(a,b)的算法,和gcd的递归类似传送门:拓展GCD详解这道题就用到了其解模线性方程的这样一个性质想要求 A/B%9973,n=A%9973。而且gcd(b,9973)=1可以化简为bx=n(mod9973)求x这就变成了求模线性方程的裸题答案为x=x' *(n/d)%9973,这里x'就是拓展gcd中求出的x,而这道题保证了d=1,答...

2018-03-14 21:24:21 247

原创 hdu 3507 斜率优化DP-详解

题目链接:hdu 3507题目大意有n个物品排成一排,每个物品有一个a【i】值,将序号从i到j的打包成一包,需要花费元,现在要求出将所有物品打包带走所需要的最小花费值。思路看上去是一个DP,即                                            ...

2018-03-12 23:00:08 238

原创 C++单调队列详解

单调队列到底是什么呢?简单地按照字面意思来说,单调队列是一种队列(踢飞)但是这种队列和普通的队列有着很大的区别,怎么说呢:它的队首和普通的队列一样,只能删除元素。而它的队尾既可以添加元素也可以删除元素。通常来说也可以叫做输入受限的双端队列(栈)。单调队列是做什么用的呢?简单来说就是用来维护一段区间内的单调上升/下降性质,导出性质就是也可以用来维护一个区间内的最值。我们先来看一道例题:poj 282...

2018-03-12 17:58:02 5741

原创 poj 1651 Multiplication Puzzle(区间DP)

题目链接:poj 1651看讨论版都用的矩阵乘法解得,但是区间dp也能解水题,dp【i】【j】表示要消除从i到j区间内所需最小的分数,每次遍历转移最小值,最后dp【2】【n-1】就是答案。(输出的时候自己傻了,看样例输出了个dp【2】【5】,妥妥的wa了45发。。。)#include<iostream>#include<cstdio>#include<vector...

2018-03-11 13:16:03 208

原创 博客搬家了!

正式开始日更!!!!在博客园的随笔貌似总会被一个叫布布扣的网站爬走,也是觉得这边的风格更轻松一点,人也更多(其实是以前注册验证码出BUG,很烦)--------------------------------------------------------------------------------------------------------------------------------...

2018-03-10 22:36:06 154

原创 zoj 3469 Food Delivery(区间DP)

题目链接:3469想了挺长时间,发现区间DP题目的几个技巧1、在循环的时候需要注意开始的状态有无限制,这道题因为必须从饭店出发,所以不能简单的按照长度去DP,DP的时候优先考虑端点在饭店的情况。2、建立模型很重要,这几天做的几道区间DP题目,都需要抽象化出来然后建模解决。在这之中dp值的定义显得非常重要,还有状态的转移过程,和普通的DP有很大的差别。3、不要只拘泥于二维以下的dp。这道题就用了一个...

2018-03-10 22:24:42 248

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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