随笔分类 - ACM_动态规划
摘要:/* 有关这个问题画了太多时间了; 对自己真的很失望,思维能力太差了; 庆幸的是自己坚持看懂了; 希望下次碰到能够灵活运用;*/题目其实可以转换成背包问题;由于数据是-100000~100000;所以我们取数组 dp[100000*2];我们产生一个相对坐标的概念,100000相对坐标为0;99995相对坐标为-5;x的相对坐标为x-100000;由于每组数据的属性都为价值;而对于背包的容量是无限扩展的,(题目要求的就是 背包最大能装多少价值的东西)我们对此做个变形,对于smartness (S),funness(F),将S总和作为背包的容量(可扩展),将F总和作为背包...
阅读全文
摘要:坐标规划型动态规划题目描述:开始的位置是5;有0。1。2。。。9。10这11个点位置;馅饼的掉落位置在这11个位置中,gameboy只能接到方圆1单位的馅饼;(移动一个单位需要一秒)给出各个时间点T,馅饼掉落的位置;求最多接到多少个馅饼;(注意开始点是5);状态转移方程:dp[i][j] += max(dp[i+1][j],dp[i+1][j+1],dp[i+1][j-1])代码:#include #include #include #include #include #include #include #define N 100005
using namespace std;
...
阅读全文
摘要:/*真伤心,学的好慢啊;脑子越来越笨了,根本转不过来;回寝室去啦~~~还需继续努力啊!*///一个长方体 衍生出3个; 对总的进行排序;保证s[i].x>s[i+1].x 如果相等,则保证s[i].y>s[i+1].y;//状态转移方程:dp[i] = max{dp[j]} + s[i].h;#include #include #include #include #include #include #include #define maxn 31
struct stone{ int x; int y; int h;
}s[maxn*3];
int dp[m...
阅读全文
摘要:状态转移方程:num[p] = min(num[i]*2,num[j]*3,num[k]*5,num[l]*7);#include #include #include #include #include #include #include #define maxn 5900 int num[maxn];
char _th[][11] ={"th","st","nd","rd","th","th","th","th","th&q
阅读全文
摘要:最初写法: dp[0][0] = s1[0]==s2[0]?1:0; for(int j = 1; j = 0; i--) //********** { for(int j = len2-1; j >= 0; j--) //********* { if(s1[i]==s2[j]) //######### dp[i][j] = dp[i+1][j+1]+1; else ...
阅读全文
摘要:/* 动态规划的第三题了;一个小小细节,想了一天了,对比别人代码终于发现了;*/#include #include #include #include #include #include #include using namespace std;
struct mouse
{ int w; int v; int num;
}mice[1005];
int dp[1005],fa[1005],father[1005],flag = 1;
int cmp(mouse m1,mouse m2)
{ if(m1.w==m2.w)return m1.v>m2.v; ret...
阅读全文
摘要:/*动态规划之路第二题;求最长非递增数列条数;*/#include
int main()
{ int n,i,j,x,m,dp[1005]; while(scanf("%d",&n)!=EOF&&n) { dp[1]=0;m=0; //m代表最长递减序列个数 //dp[i]代表第i个最长递减序列中当前状态的所含元素最小值 for(i=1;im) dp[++m]=x; } printf("%d\n",m); } return 0;
}
阅读全文
摘要://这算是一个历史遗留问题吧;//一直没有去尝试做动态规划的题目//说道理,就是像是心里有种恐惧//因为听说。。。听说动态规划很难//所以就连这入门的都没敢去AC//今天开始,深入看看吧。。。//菜鸟~~~#include #include #include #include #include #include #include int ta[105][105];
using namespace std;
int main(int argc, char *argv[])
{ int c,n; scanf("%d",&c); while(c--) { scanf(&q
阅读全文

浙公网安备 33010602011771号