算法
strom
这个作者很懒,什么都没留下…
展开
-
最长不下降子序列DP的水题
#include#include#include#define MAX 10010int MAX_namber(char *a){ int i,j,k,max; int b[10000]; k=strlen(a); for(i=k;i>=0; i--) //for(i=0;i<k;i++)原创 2011-12-19 19:01:14 · 445 阅读 · 0 评论 -
dp 最优三角剖分问题
额,基本和算法分析上的差不多,只是更加了解dp的状态吧#include#include#include#include#include#includeusing namespace std;#define max 100int n; int t[max][max], s[max][max];int value[max][max]; int w(int i, int j,原创 2012-03-30 21:49:20 · 423 阅读 · 0 评论 -
DP 棋盘覆盖 二
还是未解决,可能是状态定义的问题吧,后面的就不对了。。郁闷。。。。。那位好心人看看啊题目链接 点击打开链接#include#include#include#include#include#includeusing namespace std;int b[15][15];int dp(int n, int m){ memset(b, 0, sizeof(b)); b原创 2012-04-02 20:38:01 · 617 阅读 · 0 评论 -
邮票分一半
题目大意: 小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两份,并且使这两份邮票的分值和相差最小(就是小珂得到的邮票分值和与小明的差值最小),现在每张邮票的分值已经知道了,他们已经分好了,你知道最后他们得到的邮票分值和相差多少吗?#include #include #include int score[10001],原创 2012-04-03 23:10:27 · 569 阅读 · 0 评论 -
杭电 2602 01 背包
#include#include#include#include#include#includeusing namespace std;#define MAX 1005int v[MAX],w[MAX];//int f[MAX][MAX];int recond[MAX];int N, V;int package(int N,int V){ int i,j;原创 2012-03-19 17:59:07 · 720 阅读 · 0 评论 -
敌兵布阵 dp
题是看懂了,可是还是不会做,感觉太麻烦了,先放着吧。。。点击打开链接#include #include #include const int large = (int)pow( 2, 10 ); int n,m; char map[105][15]; int dp[60][60][101]; int ST[large+1]; int len = 0; int Fun(转载 2012-04-06 20:46:55 · 426 阅读 · 0 评论 -
第三届河南省大学生程序设计竞赛 聪明的“KK”
dp 问题,不过要注意开始的时候下表要考虑好,我是让d[][] 的四周空出一行,这样就不会出错了#include#include#include#include#include#includeusing namespace std;int N, M;int map[25][25], d[25][25];int dp(int N, int M){ memset(d,原创 2012-03-21 19:20:34 · 922 阅读 · 0 评论 -
基因匹配问题
就是dp, 数据处理的时候要注意。而且状态转换用了只用了一个sim[2][m],节省了空间。再者就是转换的时候有权值,加上权值比较即可。#include#include#include#include#include#includeusing namespace std;char weight[5][5] = { {5,-1,-2,-1,-3}, {-1,5,-3,-2原创 2012-03-22 19:45:11 · 866 阅读 · 0 评论 -
队列调整 郑大校赛题
【题目描述】孩子们郊外旅游,晚上来到了一个农家饭庄就餐。为了避免餐厅过分拥挤,导游KONG要求孩子们分2 批就餐。开饭前,孩子们都会在餐厅前排队入内,按导游KONG 的设想,所有第2 批就餐的孩子排在队尾,队伍的前半部分则由设定为第1 批就餐的孩子占据。由于孩子们不理解KONG 的安排,晚饭前的排队成了一个大麻烦。每个孩子手中都有一张标明她用餐批次D_i (1 经过若干次混乱的重新排队原创 2012-04-20 19:03:53 · 2534 阅读 · 0 评论 -
第四届河南省程序设计竞赛 迷宫问题
额,刚开始有指导说用动态规划,而我也觉得dp 是可解的,但是后来提交时WA,用了一组测试数据发现存在漏洞 。例如: 3 1 0 0 1 0 0 1 0 0后来又有人说用搜索,可是自己却感觉搜素不可行的,不过结果是可想而知的。。。。。。题目链接 #include #include #define SIZE_N 101 #define INF_MAX 0x7ffffff原创 2012-03-30 21:05:44 · 1196 阅读 · 2 评论 -
hduj 1114 完全背包
#include using namespace std; int nCases;int nPack, nVolume1, nVolume2, nVolume;int weight[510], value[510];int record[10000];const int INF = 1000000001;int main(){ scanf("%d",原创 2012-03-27 20:37:57 · 483 阅读 · 0 评论 -
数字三角形DP
#include#include #include#include#define max 100int a[max][max];int opt[max][max];int sum(int i,int j,int n){if (opt[i][j]!=0) return opt[i][j];if( i==n-1 ) { opt[i][j]=a[i][j];return a[i][j转载 2011-12-21 21:08:37 · 442 阅读 · 0 评论 -
矩形嵌套Dp
#include#include#includetypedef struct { int x,y;}DATA;DATA a[1010]; int f[1010];int camp(DATA a[],int n){ int i,j,max; for(i=n; i>=0; i--) { f[i]=1; for(j=i+1; j原创 2011-12-22 08:18:27 · 356 阅读 · 0 评论 -
最长公共子序列 DP 南阳理工
#include#include#include#includeusing namespace std;#define MAX 1000 char a[MAX], b[MAX];int c[MAX][MAX];void LSC(char *a, char *b){ int i,j; memset(c, 0, sizeof(c)); int la原创 2012-03-03 22:20:39 · 452 阅读 · 0 评论 -
最大子矩阵和问题 DP poj 1050
#include#include#include#include#include using namespace std;int a[100][100];int MaxSum(int n, int *a){ int sum = 0, b = 0; for(int i=1; i<=n; i++) { if(b > 0) b += a[i];原创 2012-03-03 09:42:18 · 650 阅读 · 0 评论 -
矩形嵌套 DP 南阳理工 http://acm.nyist.net/JudgeOnline/problem.php?pid=16
刚开始用DP、贪心都没有AC,后来看看书上讲的有知识,才发现自己错了。矩形之间的关系是典型的二元关系,二元关系可以用图来建模。如果X可以镶嵌在Y里,我们就从X到Y连一条有向边。只要求这个图上的最长路径即可。#include#include#include#include#includeusing namespace std;typedef struct { int a原创 2012-03-04 23:38:56 · 1003 阅读 · 0 评论 -
DP 回文字符串 南洋理工
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串#include#include#include#include#include#includeusing namespace std;原创 2012-03-05 21:36:18 · 692 阅读 · 0 评论 -
dp 最大连续字段和 郁闷了
#include#include#include#include#include#includeusing namespace std;int b[1000005];int dp(int n){ int i; int t=0,sum =0; for(i=0; i<n; i++) scanf("%d",&b[i]); for(i=0; i<n原创 2012-03-10 23:27:59 · 1317 阅读 · 0 评论 -
编辑距离问题 dp
其实和最长字符串公共序列差不多,关键是要把握好状态的转移。。其他的就没什么了,不解释哈,、、、继续学习中。。。。。题目描述:设A和B是两个字符串。要求用最少的步骤将字符A转换为字符串B.步骤包括:1. 删除一个字符 2. 插入一个字符 3.将一个字符改变为另一个字符。#include#include#includechar A[100], B[100];int原创 2012-03-26 23:10:27 · 664 阅读 · 0 评论 -
石子合并问题
在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。没有用dp 感觉一般的也能写,时间复杂度也不高。。。#include#include#include#include#include#includeusing原创 2012-03-27 19:06:05 · 523 阅读 · 0 评论 -
节能 第四届河南省程序竞赛
题目链接:描述 Dr.Kong设计的机器人卡多越来越聪明。最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关掉ZK大道右侧上所有的路灯。卡多每到早晨5:00准会在ZK大道上某盏路灯的旁边,然后他开始关灯。每盏灯都有一定的功率,机器人卡多有着自觉的节能意识,它希望在关灯期间,ZK大道右侧上所有路灯的耗电量总数是最少的。机器人卡多以1m/s的速度行走。假设关灯动作不需原创 2012-04-20 18:09:25 · 1832 阅读 · 4 评论