---------递推
文章平均质量分 75
Stayaccept
这个作者很懒,什么都没留下…
展开
-
poj1925(dp)
链接:点击打开链接题意:给出在x轴上的n座塔的坐标和高度,现要从第一座塔通过中间的塔发射绳索荡到最后一座塔,问最少发射几次绳索,具体看图代码:#include #include #include #include #include #include #include #include using namespace std;const int siz=100000原创 2017-09-05 17:41:39 · 366 阅读 · 0 评论 -
bzoj1801(递推)
链接:点击打开链接题意:n*m的棋盘,有多少种放象棋中炮的方式,使得两两之间不能互相伤害代码:#include #include #include #include #include using namespace std;const long long MOD=9999973;const long long ex_MOD=19999947;long long dp[105原创 2016-08-15 17:18:43 · 479 阅读 · 0 评论 -
hdu4604(两次LIS)
链接:点击打开链接题意:有n个数,依次进行操作,每次可以把这个数放在deque首部,也可以放在尾部,也可以扔掉,但是要保证deque中的数是非递减的,问最后deque的最大长度代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int a[10原创 2016-07-27 09:46:26 · 289 阅读 · 0 评论 -
hdu4381(排序+dp)
链接:点击打开链接题意:给定n个块,编号从1到n,以及m个操作,初始时n个块是白色,操作有2种形式,1 ai xi : 从[1,ai]选xi个块将这些块涂白,2 ai xi:从[ai,n]选xi个块将这些块涂白,当区间内黑块的数目不够时则不执行,问最后满足变成白块最多时所用的指令最小代码:#include #include #include #include #include #原创 2016-07-21 19:36:46 · 486 阅读 · 0 评论 -
poj1737(连通图计数)
链接:题意:代码:原创 2016-07-20 18:29:49 · 1182 阅读 · 0 评论 -
hdu4323(编辑距离)
链接:点击打开链接题意:给出n个串和m次询问,每次询问给出一个串和能够改变的最大值,问n个串中几个可以变成询问的串代码:#include #include #include #include #include using namespace std;int dp[15][15];char s[15],a[1505][15];int main(){ int t,i,j原创 2016-07-18 10:11:09 · 512 阅读 · 0 评论 -
hdu4314(排序+dp)
链接:点击打开链接题意:在井中有n个人,给出每个人身体的长度Ai和手臂的长度Bi,当存在A1+A2+...+Ak-1+Ak+Bk>= H,第k个人可以从井里面逃出去,问最多能逃出去几个人代码:#include #include #include #include #include using namespace std;struct node{ int a,b;原创 2016-07-16 14:50:36 · 324 阅读 · 0 评论 -
hdu4301(递推)
链接:点击打开链接题意:2*n的矩阵分成k份的种数代码:#include #include #include #include #include using namespace std;const int MOD=100000007;int dp[1005][1005*2][2];int main(){原创 2016-07-13 16:09:11 · 464 阅读 · 0 评论 -
hdu5389(dp+数学)
链接:点击打开链接题意:给出n个数和两个值A,B,要求将n个数分成两部分,使得每部分数和的数根的值等于A和B,求种数代码:#include #include #include #include #include using namespace std;const int MOD=258280327;int cal(int s){ return (s-1)%9+1;}原创 2016-07-09 16:03:24 · 403 阅读 · 0 评论 -
hdu5303(排序+dp)
链接:点击打开链接题意:有一个长为L的环,n个苹果树,一个篮子最多装k个苹果,装满后要回到起点重新出发,给出n个苹果树顺时针的位置及苹果的个数,求摘完所有苹果走的最小路程代码:#include #include #include #include #include using namespace std;const long long INF=0x3f3f3f3f3f3f3f3原创 2016-07-02 16:22:58 · 349 阅读 · 0 评论 -
hdu3664(递推)
链接:点击打开链接题意:1~N个数组成的序列,求长度为n,ai>i的个数为k的序列的种数代码:#include #include #include #include #include using namespace std;const long long MOD=1000000007;long long dp[1005][1005];int main(){ long原创 2016-06-28 19:01:04 · 457 阅读 · 0 评论 -
acdream1231(LCS变形+贪心)
链接:点击打开链接题意:给出一些字母两两匹配的值,给出两个串,要求再求出两个串使给出的两个串是这两个串的子序列并且匹配值最小代码:#include #include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;char s1[2005],s2[2005],s原创 2016-06-27 13:33:50 · 330 阅读 · 0 评论 -
hdu3540(编辑距离变形)
链接:点击打开链接题意:给出两个串,问B是否能在有限的次数下变成A的子串代码:#include #include #include using namespace std;int dp[2][1005];char A[1000005],B[1005];const int INF=0x3f3f3f3f;int main(){原创 2016-06-25 15:12:28 · 658 阅读 · 0 评论 -
hdu3485(递推)
链接:点击打开链接题意:有多少种长度是n并且只由0和1组成的字符串其中不含子串"101"代码:#include #include #include #include #include using namespace std;const int MOD=9997;int dp[10005][4];int main(){ int n,i,j; dp[1][0]=原创 2016-06-15 20:09:23 · 388 阅读 · 0 评论 -
hdu5325(排序+dp)
链接:点击打开链接题意:在一棵树中,找出一个集合并将集合中的数按权值排序使得相邻两个数所代表的节点的路径上的节点的权值都小于这两个节点代码:#include #include #include #include #include #include using namespace std;struct node{ int id,val; friend bool原创 2016-06-13 20:52:03 · 402 阅读 · 0 评论 -
acdream1408(递推+组合数)
链接:点击打开链接题意:子节点个数为2或3,并且根节点到每个叶子节点距离相同的树叫2-3树,给出叶子节点的数目求出2-3树的种类代码:#include #include #include #include #include #include using namespace std;long long C[2505][2505];int main(){ long lo原创 2016-06-09 15:45:39 · 469 阅读 · 0 评论 -
UVALive4987(dp+贪心)
链接:点击打开链接题意:在一条直线上有n个施工队和m个避难所,给出每个施工队和避难所相对于原点的距离,求在保证每个避难点有一个施工队的前提下,所有施工队移动的最小距离和代码:#include #include #include #include #include #include using namespace std;const long long INF=0x3f3f3f原创 2016-08-22 18:12:13 · 443 阅读 · 0 评论 -
vijos p1285(最短路变形+计数)
链接:点击打开链接题意:得到一种药水有两种方法:可以按照魔法书上的指导自己配置,也可以到魔法商店里去买——那里对于每种药水都有供应,虽然有可能价格很贵。在魔法书上有很多这样的记载:1份A药水混合1份B药水就可以得到1份C药水。(至于为什么1+1=1,因为……这是魔法世界)好了,现在你知道了需要得到某种药水,还知道所有可能涉及到的药水的价格以及魔法书上所有的配置方法,现在要问的就是:1.最少花多原创 2016-09-06 13:15:07 · 337 阅读 · 0 评论 -
bzoj1806&&vijos p1386(递推)
链接:点击打开链接题意:现有两个煤矿,每个煤矿都雇用一组矿工。采煤工作很辛苦,所以矿工们需要良好饮食。每当一辆食品车到达煤矿时,矿工们便会产出一定数量的煤。有三种类型的食品车:肉车,鱼车和面包车。矿工们喜欢变化的食谱。如果提供的食品能够不断变化,他们的产煤量将会增加。每当一个新的食品车到达煤矿时,矿工们就会比较这种新的食品和前两次(或者少于两次,如果前面运送食品的次数不足两次)的食品,并且原创 2016-09-07 19:30:39 · 323 阅读 · 0 评论 -
hihocoder1143(骨牌覆盖,1*2铺2*n)
链接:点击打开链接题意:我们有一个2xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘。对于这个棋盘,一共有多少种不同的覆盖方法代码:#include #include #include #include #include #include #include #include #include using namespace std;const long long原创 2017-07-19 19:38:08 · 1102 阅读 · 0 评论 -
hihocoder1162(骨牌覆盖,1*2铺k*n)
链接:点击打开链接题意:我们有一个kxN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘。对于这个棋盘,一共有多少种不同的覆盖方法代码:#include #include #include #include #include #include #include #include #include #include using namespace std;const lo原创 2017-07-21 20:06:37 · 704 阅读 · 0 评论 -
hihocoder1151(骨牌覆盖,1*2铺3*n)
链接:点击打开链接题意:我们有一个3xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘。对于这个棋盘,一共有多少种不同的覆盖方法代码:#include #include #include #include #include #include #include #include #include using namespace std;const long long MO原创 2017-07-20 19:31:51 · 1191 阅读 · 0 评论 -
hihocoder1239(递推)
链接:点击打开链接题意:给出N个数,求其中子序列是斐波那契的前缀的种数代码1:#include #include #include #include #include #include #include using namespace std;const long long MOD=1000000007;long long f[30],a[1000005],dp[1000原创 2017-06-04 13:00:57 · 261 阅读 · 0 评论 -
Codeforce 792C(dp)
链接:点击打开链接题意:给出一个数字,要求删除最少的位数,使得删除后的数字不含前导0并且是3的倍数代码:#include #include #include #include #include #include #include #include using namespace std;vector G;char s[100005];int dp[100005][5]原创 2017-05-01 13:30:23 · 265 阅读 · 0 评论 -
Codeforce 505C(递推)
链接:点击打开链接题意:给出n个宝藏的位置,你初始在0点,第一次必须前进d米,下一次可以前进d-1,d,或者d+1米,问最多经过几个宝藏代码:#include #include #include #include #include using namespace std;int a[30005],dp[30005][605];int main(){ int n,d,i原创 2016-10-31 17:36:46 · 322 阅读 · 0 评论 -
Codeforce 721C(DAG上dp)
链接:点击打开链接题意:N个点M条的有向无环图,问从1走到n花费时间不超过T最多能经过多少个城市代码:#include #include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;struct node{ int to,cost;};vecto原创 2016-10-08 16:45:51 · 488 阅读 · 0 评论 -
hdu4455(递推)
链接:点击打开链接题意:给一个长度为n的序列,定义f(i,j)为区间[i,j]内中不同的数的个数,q次询问,每次询问x,求所有长度为x连续区间的f值之和代码:#include #include #include #include #include #include using namespace std;int a[1000005],f[1000005],id[1000005原创 2016-10-05 11:37:16 · 450 阅读 · 0 评论 -
hdu4433(dp+贪心)
链接:点击打开链接题意:给两个等长的字符串,每次最多可以旋转连续的三个数字,注意0可以旋转到9,问最少需要多少次才能将S串变为T串代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;char s1[1005],s2[1005];int a[1原创 2016-10-04 20:32:48 · 613 阅读 · 0 评论 -
hdu4427(dp+数学优化)
链接:点击打开链接题意:求k个数和为n,最小公倍数为m的种数代码:#include #include #include #include #include #include #include using namespace std;const long long MOD=1000000007;vector fac;long long lcm[1005][1005];l原创 2016-10-04 16:27:33 · 436 阅读 · 0 评论 -
Codeforce 543A(递推优化)
链接:点击打开链接题意:有n个程序员,要写m行代码,第i个人写一行代码必定会出现ai个bug,每个人按顺序选择写几行代码,可以不写,问恰好写m行代码并且出现的bug数目不大于b的种数代码:#include #include #include #include using namespace std;long long a[505],dp[2][505][505];原创 2016-10-27 20:24:58 · 375 阅读 · 0 评论 -
Codeforce 570E(递推)
链接:点击打开链接题意:给出一个n*m的矩阵,求出从左上角走到右下角的的路径时回文串的种数代码:#include #include #include #include #include #include #include #include using namespace std;const long long MOD=1000000007;char s[505][505原创 2016-10-25 19:08:42 · 376 阅读 · 0 评论 -
vijos p1644(递推优化)
链接:点击打开链接题意:设由1~n组成的序列中,逆序数为m的种数为p,求2^pmod1000000007代码:#include #include #include #include #include using namespace std;const long long MOD=1000000007;long long dp[1005][10005];long long q原创 2016-09-30 19:17:03 · 356 阅读 · 0 评论 -
Codeforce 489E(dp+01分数规划)
链接:点击打开链接题意:数轴上有n个点,每个点有个距离0点距离xi和价值bi,主人公站在0点,每一步必须落在n个点其中一个上,走到点n后可以计算旅行的价值,对于所有走过的点i,val=∑(sqrt(abs(x[i]-x[i-1]-len))/b[i]),当val最小时,输出走过的路径代码:#include #include #include #include #include #原创 2016-11-03 21:37:26 · 426 阅读 · 0 评论 -
Codeforce 598E(递推)
链接:点击打开链接题意:给出一个n*m的巧克力,想要分出k个单位的巧克力,可以横切和竖切,但每次必须切到底,每次的费用为切的那条边的平方,问最小费用代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int dp[35][35][55];in原创 2016-10-22 18:03:41 · 336 阅读 · 0 评论 -
hdu3433(dp+二分)
链接:点击打开链接题意:给出两种任务A,B,和n个人每个人做每件事的时间,n个人可以同时做同一种的事情,但是不能做A的同时做B,求完成所有的任务最小的时间是多少代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int n,X,Y,a[55],原创 2016-06-07 20:07:07 · 774 阅读 · 0 评论 -
XTU1233(递推)
链接:点击打开链接题意:给出n个硬币求出至少连续m个正面的种数代码:#include #include #include #include #include using namespace std;const long long MOD=1000000007;long long dp[1000005][2];long long solve(int x,int y){原创 2016-06-07 12:56:07 · 494 阅读 · 0 评论 -
poj3666(dp前缀优化)
链接:点击打开链接题意:将A1....An变为B1.....Bn,要求序列B满足非严格单调递增或非严格单调递减,代价为|A1-B1|+|A2-B2|+...+|AN -BN|,输出最小代价代码:#include #include #include #include #include #include using namespace std;const int原创 2016-05-31 17:35:23 · 979 阅读 · 0 评论 -
woj1537&&woj1538(递推)
链接:点击打开链接题意:有n堆石头,每拿一堆,所有石头的a值都减去自身的b,求能够到拿的a的和的最大值代码:#include #include #include #include #include using namespace std;struct node{ long long a,b,v; friend bool oper原创 2016-04-14 19:34:14 · 449 阅读 · 0 评论 -
51nod1055(递推)
链接:点击打开链接题意:N个不同的正整数,找出由这些数组成的最长的等差数列例如:1 3 5 6 8 9 10 12 13 14等差子数列包括(仅包括两项的不列举)1 3 51 5 9 133 6 9 123 8 135 9 136 8 10 12 14其中6 8 10 12 14最长,长度为5代码:#include #include #inc原创 2016-04-09 18:53:52 · 471 阅读 · 0 评论 -
51nod1202(递推)
链接:点击打开链接题意:子序列的定义:对于一个序列a=a[1],a[2],......a[n]。则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1<=p1<p2<.....<pm<=n,例如4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。对于给出序列a,有些子序列可能是相同的,这里只算做1个,请输出a的不同子序列的数量。由于答案比较大原创 2016-04-06 21:00:30 · 399 阅读 · 0 评论