E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
dp-简单dp
【POJ 3666】Making the Grade(
简单DP
)
首先可以明确一个方面,那就是如果将X改成Y,那么Y肯定是这N个数中的某一个(为什么仔细想想)之后可以得到一个状态转移那就是dp[i][j]代表已经考虑了i位的情况下,结尾为j的最小更改数。状态转移为dp[i][j]=min(dp[i-1][k]+abs(a[i]-b[j]))这样的话可以写出一个初步的代码:#include #include #include usingnamespacestd;
u013451221
·
2015-05-12 21:00
POJ - 2192 - Zipper (
简单DP
)
题目传送:Zipper思路:设状态dp[i][j]为字符串A前i个字符和B前j个字符能否组成C的前i+j个字符,边界为dp[0][0]=1能则为true,否则falseAC代码:#include #include #include #include #include #include #include #include #include #include #include #include #de
u014355480
·
2015-05-04 00:00
dp
ACM
poj
(
简单dp
)
SuperJumping!Jumping!Jumping!TimeLimit:2000/1000MS(Java/Others) MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):25805 AcceptedSubmission(s):11416题目链接:http://acm.hdu.edu.cn/showproblem.ph
chaiwenjun000
·
2015-05-02 20:00
UVA - 116 - Unidirectional TSP (
简单DP
+ 打印路径)
题目传送:UVA-116思路:可以定义状态为dp[i][j]为从第i行第j列开始往后走到第n列(总共n列)的最小值(赋初始值为无穷),且状态方程很好推出来:dp[i][j]=a[i][j]+max(dp[i-1][j+1],dp[i][j+1],dp[i+1][j+1]); 最后最优解 ans=max(dp[i][1])(1 #include #include #include #defineL
u014355480
·
2015-04-20 20:00
dp
ACM
uva
关于最长上升子序列的算法
简单dp
nefu21题description一个数的序列bi,当b1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK),这里1<=i1<i2<...<iK<=N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),
qingshui23
·
2015-04-19 21:00
hdu~1422(
简单dp
)
重温世界杯用ans[i]存生活费和话费之差类似求最大区间和注意路线是一个环。#include #defineMAX100000 intans[2*MAX+5]; intdp[2*MAX+5]; intmain() { intn; while(scanf("%d",&n)!=EOF) { intx,y; for(inti=1;i=0?dp[i-1]+ans[i]:ans[i]; intk=0,
ouyangying123
·
2015-04-14 17:00
最大字段的和
hdu~1003(
简单dp
)
MaxSum求最大字段的和。用dp[i]存的是前i个数中,所选连续数的最优解(即和最大)dp[i]最大的数的位置为终止位置从尾部向前遍历,最前面的非负数为开始位置例如:3-4 2-13对应的dp为3 -1 2 1 4, 5所在位置为终止位置,2 所在位置为开始位置#include #defineMAX100000 intdp[MAX+5],num[MAX+5]; intmain() { in
ouyangying123
·
2015-04-14 17:00
dp
最大字段的和
省赛选拔赛——个人赛第二场
刷完水题之后,卡在一道BFS上,浪费了不少时间,导致两道
简单DP
出得特别晚。后来卡D题的BFS,没有想到进行预处理,也一直没有AC。C:POJ3668出了H之后,继续跟榜,25分钟1Y。
wcr1996
·
2015-04-06 23:00
ACM
hdu1160
简单dp
最长下降子序列
/*
简单dp
,要记录顺序 解:先排序,然后是一个最长下降子序列,中间需记录顺序 dp[i]=Max(dp[i],dp[j]+1); */ #include #include #include #defineN1100
HYDhyd
·
2015-04-01 10:00
URAL - 1009 - K-based Numbers (
简单DP
)
1009.K-basedNumbersTimelimit:1.0secondMemorylimit:64MBLet’sconsider K-basednumbers,containingexactly N digits.WedefineanumbertobevalidifitsK-basednotationdoesn’tcontaintwosuccessivezeros.Forexample:10
u014355480
·
2015-03-29 21:00
dp
ACM
ural
POJ 1463 Strategic game(树形
DP-
树上的点集覆盖模型)
题意:一城堡的所有的道路形成一个n个节点的树,如果在一个节点上放上一个士兵,那么和这个节点相连的边就会被看守住,问把所有边看守住最少需要放多少士兵。思路:和最大独立集的思路差不多,转移方程差不多,用0,1表示子树的根放不放士兵 dp[root][0]+=dp[son][1]; dp[root][1]+=min(dp[son][1],dp[son][0]); #include #include
kalilili
·
2015-03-29 09:00
HDU 1520 Anniversary party(树形
DP-
最大独立集)
大意:很多领导,能形成一个树形关系网,这些领导参加一个party,每个人都有一个能使party活跃的值,但是每个人又不喜欢跟自己的直接领导同时参加party。为使party气氛最好,求最好气氛值。思路:法一:对子树的根按两种决策找到状态方程,然后用刷表法法二:细化状态,dp[i][0],dp[i][1]分别表示不选i时的最大集和选了i时的最大集法二的方法更实用,状态细化后更便于找状态方程法二代码:
kalilili
·
2015-03-29 09:00
lightoj1231--Coin Change (I)(
简单dp
,背包计数)
DescriptionInastrangeshopthereare n typesofcoinsofvalue A1,A2 ...An. C1,C2,...Cn denotethenumberofcoinsofvalue A1,A2 ...An respectively.Youhavetofindthenumberofwaysyoucanmake K usingthecoins.Forexampl
shengtao96
·
2015-03-24 16:00
动态规划
UVA - 10618(条件复杂的
简单dp
)
这个dp 没什么可说的,状态很容易想,只是有两个地方容易出错,就是从当前位置进行转移,合法性的判断(特别注意当右脚在左面,这这时候左脚是可以tap的)。第二个,就是计算得分。千万注意啊。#include #include #include #include #include #include usingnamespacestd; #definerep(i,n)for(int(i)=0;(i)n)r
playwfun
·
2015-03-24 16:00
Algorithm
C++
uva
2013常春现场
A.HardCode签到题B.GoldenRadioBase根据给你的2个公式转化成φ进制C.LittleTigervs.DeepMonkey
简单DP
D.BathysphereE.Min-max-multiplyF.RPproblemG.Mosaic2
u011686226
·
2015-03-23 13:00
UVA - 10721 Bar Codes
解题思路:
简单dp
,cnt[i][j]表示用i个数组成j,cnt[i][j]=∑(1≤t ≤min(k,j))cnt[i-1][t].
kl28978113
·
2015-03-20 21:00
poj1189
简单dp
http://poj.org/problem?id=1189Description有一个三角形木板,竖直立放,上面钉着n(n+1)/2颗钉子,还有(n+1)个格子(当n=5时如图1)。每颗钉子和周围的钉子的距离都等于d,每个格子的宽度也都等于d,且除了最左端和最右端的格子外每个格子都正对着最下面一排钉子的间隙。 让一个直径略小于d的小球中心正对着最上面的钉子在板上自由滚落,小球每碰到一个钉子都可能
u013573047
·
2015-03-20 11:00
POJ3342 Party at Hali-Bula(树的最大独立集-树形
DP-
刷表法)
题意:给定一个树,选择若干点,使得选择的结点中任一结点不会和它的子结点同时选择,求能选结点最大数量。同时判断方案数是否为一。思路:树的最大独立集,用树形dp,dfs一遍找每个结点的父亲,是为了从下向上刷每个结点儿子的最大独立集和and每个结点孙子的最大独立集和的表判断方案数是否唯一同样在树形dp的同时递推判断即可算法复杂度可以是线性//248K0MSC++ #include #include #i
kalilili
·
2015-03-14 11:00
poj3140--Contestants Division(树形
dp-
水题)
ContestantsDivisionTimeLimit: 2000MS MemoryLimit: 65536KTotalSubmissions: 8469 Accepted: 2420DescriptionInthenewACM-ICPCRegionalContest,aspecialmonitoringandsubmittingsystemwillbesetup,andstudentswill
u013015642
·
2015-03-13 19:00
【BZOJ3890】【Usaco2015 Jan】Meeting Time 拓扑图
简单DP
广告:#include intmain() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/43971435"); } 题意:给出一个n个点m条边的有向无环图,每条边两个边权。n #include #include #include #defineN105 usingnamespacestd;
Vmurder
·
2015-02-27 19:00
动态规划
time
拓扑图
Meeting
BZOJ3890
hdu4826---Labyrinth(
简单dp
)
ProblemDescription度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向右走以前没有走过的格子,每一个格子中都有一些金币(或正或负,有可能遇到强盗拦路抢劫,度度熊身上金币可以为负,需要给强盗写欠条),度度熊刚开始时身上金币数为0,问度度熊走出迷宫时候身上最多有
Guard_Mine
·
2015-02-26 18:00
dp
zoj 3494 BCD Code (ac自动机+数位dp)
直接数位dp,dfs就好了,状态很
简单dp
[pos][i]位数pos,在自动机上i点。注意高进度的减法,范围的下限要减1。
My_ACM_Dream
·
2015-02-26 14:00
(
简单DP
:求有m个H,n和D,且任意索引上H的个数都要比D的个数多的方案数)
在写题解之前给自己打一下广告哈~。。抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下:http://edu.csdn.net/course/detail/209题目:下沙的沙子有几粒?TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):894AcceptedSub
caihongshijie6
·
2015-02-19 19:00
最少拦截系统,
简单dp
,(学长说这是贪心?!。。。。。。也是醉了)
description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算
martinue
·
2015-02-11 20:00
ACM
简单DP
(hdu step 3.2.8)命运(
简单DP
:求从左上角走到右下角的最大值)
题目:命运TimeLimit:2000/1000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):1247AcceptedSubmission(s):530 ProblemDescription穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运
caihongshijie6
·
2015-02-11 16:00
UVA1625 / UVALive 5841 Color Length DP
简单DP
,dp[i][j]表示从第一个序列里取出i个和从第j个序列里取出j个的组合的最小值,可以从两个方向转移过来,每次转移加上已经出现过的且还没有出现完的字母的个数.O(n∗m)的复杂度.1625ColorLengthCarspaintedindifferentcolorsaremovinginarowontheroadasshowninFigure1
u012797220
·
2015-02-11 15:00
dp
codeforces 41D Pawn (
简单dp
+路径打印)
题意:给出一个矩阵,现在可以选择最底下一行的某一列作为开始点,直到到达最上面的行位置。每个字有一个值。要求求出最大的分数值并且这个分数值要能整数k这个整数。题解:和以往的水题dp不同这题限制了要整出k,其实需要什么状态就取什么状态呗。dp[i][j][k]表示i行j列余数为k的最大分数值。那么就很容可以求出解了。计算时,多加枚举左右点的余数值。#include #include #include
My_ACM_Dream
·
2015-02-10 23:00
(hdu step 3.2.2)Common Subsequence(
简单dp
:求最长公共子序列的长度)
在写题解之前给自己打一下广告哈~。。抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下:http://edu.csdn.net/course/detail/209题目:CommonSubsequenceTimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):976Acc
caihongshijie6
·
2015-02-06 17:00
(hdu step 3.2.1)Max Sum(
简单dp
:求最大子序列和、起点、终点)
在写题解之前给自己打一下广告哈~。。抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下:http://edu.csdn.net/course/detail/209题目:MaxSumTimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):1390AcceptedSubmi
caihongshijie6
·
2015-02-06 12:00
hdu 1503 +
简单dp
( 最长公共子序列型)+记忆化搜索+stl
没啥好说,模板题#include #include #include #include #include #defineMAX107 usingnamespacestd; intdp[MAX][MAX]; strings[MAX][MAX]; chars1[MAX],s2[MAX]; voiddfs(inti,intj) { if(dp[i][j]!=-1)return; if(i==0&&
qq_24451605
·
2015-02-05 15:00
C++
动态规划
最长公共子序列
记忆化搜索
hdu 1502 java大数+
简单dp
(最长公共子序列类似)
dp[i][j][k]定义三个函数的大小,在转移过程只要保证题设条件即可importjava.math.BigInteger; importjava.util.Scanner; publicclassMain { publicstaticvoidmain(String[]args) { Scannercin=newScanner(System.in); BigInteger[][][]dp=n
qq_24451605
·
2015-02-05 14:00
java
动态规划
最长公共子序列
大数类
hdu 3008
简单dp
(背包的思想)
就是个最最基本的0/1背包#include #include #include #include #defineMAX107 usingnamespacestd; intn,t,q; intdp[MAX][MAX]; intw[MAX]; intc[MAX]; intmain() { while(~scanf("%d%d%d",&n,&t,&q),n+t+q) { for(inti=1;i
qq_24451605
·
2015-02-05 12:00
C++
动态规划
背包
hdu 1227
简单dp
+中位数的性质
有一列数X1,X2,X3,...,Xnf(x)=|X1-x|+|X2-x|+|X3-x|+...+|Xn-x|当x=数列中位数时,f(x)最小在做这道题前一定要知道这条结论,然后开始考虑如何进行解题,首先我们定义状态dp[i][j],i代表现在已经建设了多少个供给站,j代表当前供应到了第几个城市.那么我们要更新当前情况,必须找到上一个供给站的装态,所以枚举最后一个城市,在i到j之间,然后因为中位数
qq_24451605
·
2015-02-05 11:00
C++
数论
动态规划
hdu 1501
简单dp
(最长公共子串的变形)
没啥好说的,就是公共子串的一种变形,状态定义基本一致,就是dp[i][j],分别表示当前状态已经匹配到两个串各自的位置,转移时,看和最终串的匹配结果#include #include #include #include #defineMAX507 usingnamespacestd; intt; chars[MAX],s1[MAX],s2[MAX]; booldp[MAX][MAX]; i
qq_24451605
·
2015-02-04 16:00
C++
动态规划
最长公共子序列
hdu 1300
简单dp
水的不能再水了,合理利用下前缀和#include #include #include #include #defineMAX107 usingnamespacestd; intt,n; inta[MAX]; intc[MAX]; intdp[MAX]; intsum[MAX]; intmain() { scanf("%d",&t); while(t--) { scanf("%d",&n);
qq_24451605
·
2015-02-04 15:00
C++
动态规划
(1158)HDU
简单DP
,最开始自己没有按照人数来想转移方程,还是要coding#include#include#include#include#defineMAX10009#defineINF0xfffffffusingnamespacestd
wang57389675
·
2015-02-04 15:00
hdu 1224
简单dp
+恶心的输出
没啥好说的,除了输出恶心,要明确起点和终点是固定的即可#include #include #include #include #defineMAX107 usingnamespacestd; intt,n,m,u,v; inta[MAX]; intdp[MAX]; intpre[MAX]; intmp[MAX][MAX]; voidprint(intu) { if(u==-1)return;
qq_24451605
·
2015-02-04 14:00
C++
动态规划
UVA 10453 Make Palindrome(区间
dp-
补全回文串+打印结果)
题目大意:给一个字符串,要求添加最少个字符,把它变成回文串,并输出。思路:区间dp,dp[i][j]表示区间(i,j)内的字符串添加的最少个数,变成回文串那么,如果str[i]==str[j],dp[i][j]=dp[i+1][j-1]+1否则dp[i][j]=min{dp[i+1][j],dp[i][j-1]}+1;题目要输出方案,那么只要再开一个数组,根据状态转移递归输出即可#include
HelloWorld10086
·
2015-02-04 10:00
uva
10453
hdu 1158
简单dp
首先我们要证明一个结论,也就是任何时刻雇佣的人数一定是所有月份中要求最小人数中的一个,因为对于每个人来说,如果一个人被开除会获得更高利润,那么多余的人都开除掉才能获得最大的利润,当前雇佣也一定是雇佣到正好和自己最少人数相等时才会获得最大收益那么dp[i][j],在第i个月持有第j个月的最小人数具体转移代码中很清楚.下面是ac代码:#include #include #include #includ
qq_24451605
·
2015-02-04 00:00
C++
动态规划
hdu 2059
简单dp
#include #include #include #include #defineMAX107 #defineINF0xfffffffL usingnamespacestd; intl,n,c,tt,v1,v2,v; intp[MAX]; doubledp[MAX]; intmain() { while(~scanf("%d",&l)) { scanf("%d%d%d",&n,&c,&t
qq_24451605
·
2015-02-03 22:00
C++
动态规划
hdu 1160
简单dp
+排序+倒序输出
首先要定义老鼠结构体,然后对老鼠按照先体重,后速度进行排序,排序后能保证体重小速度快的老鼠在前面,然后动态规划时就是求最长上升序列,每次记录前驱,然后递归地输出即可#include #include #include #include #defineMAX1007 usingnamespacestd; structMice { intw,s,id; booloperatora.s; } }m[
qq_24451605
·
2015-02-03 15:00
C++
动态规划
hdu 1024 循环数组+
简单dp
注意常熟复杂度,因为数据量大,常数复杂度过大也会超时...#include #include #include #include #defineMAX1000007 usingnamespacestd; intm,n,maxn; intnow[MAX]; inta[MAX]; intpre[MAX]; intmain() { while(~scanf("%d%d",&m,&n)) { for
qq_24451605
·
2015-02-03 15:00
C++
动态规划
循环数组
hdu 1978
简单dp
其实就是枚举当前点,然后枚举可以到打的点,将初始点初始为1,然后每个可到达的点加上当前点的可到达数#include #include #include #include usingnamespacestd; intdp[107][107]; inta[107][107]; intmain() { intt,n,m; scanf("%d",&t); while(t--) { scanf("%d
qq_24451605
·
2015-02-03 00:00
C++
动态规划
hdu 2577
简单dp
dp[i][state]记录每个状态当前是大写或小写,扫描一遍然后每次分情况讨论达到目的的途径比如按shift或capslocks比较简单,也没啥trick代码如下:#include #include #include #include #include #defineMAX107 usingnamespacestd; intt; chars[MAX]; intdp[MAX][2]; int
qq_24451605
·
2015-02-01 22:00
C++
动态规划
hdu 2084
简单dp
#include #include #include #include #defineMAX107 usingnamespacestd; intdp[MAX][MAX]; inta[MAX][MAX]; intmain() { intt,n; scanf("%d",&t); while(t--) { scanf("%d",&n); for(inti=1;i<=n;i++) for(intj=1
qq_24451605
·
2015-02-01 20:00
C++
动态规划
hdu 2751
简单dp
注意初值和边界处理即可#include #include #include #include usingnamespacestd; intdp[27][1007]; inta[27][1007]; intmain() { intt,n,m; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(inti=1;i<=n;i++) for(i
qq_24451605
·
2015-02-01 12:00
C++
动态规划
hdu 1087
简单dp
#include #include #include #include #defineMAX1007 usingnamespacestd; intdp[MAX]; inta[MAX]; intmain() { intn; while(~scanf("%d",&n),n) { for(inti=1;ia[j]) { dp[i]=max(dp[j]+a[i],dp[i]); ans=max(an
qq_24451605
·
2015-02-01 11:00
C++
动态规划
hdu 5119 循环数组+
简单dp
dp[i][j],在第i位上数值为j的方法数,没什么好说的,就是数据量大要用循环数组存#include #include #include #include #defineMAX2000000 usingnamespacestd; typedeflonglongLL; LLdp[2][MAX+7]; inta[MAX+7]; intn,m; intmain() { intt; scanf
qq_24451605
·
2015-01-30 01:00
C++
动态规划
poj 1953 dp(无连续1的01串个数)
思路:
简单dp
。思路1:dp[i][0]表示以0结尾长度为i的串的个数;dp[i][1]表示以1结尾长度为i的串的个数。
dumeichen
·
2015-01-25 17:00
【DP】 Codeforces Round #286 A - Mr. Kitayuta, the Treasure Hunter
注意到步数的改变量最多为250,然后就是
简单DP
了。。。。
blankcqk
·
2015-01-19 08:00
codeforces
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他