• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






Siriuslzx

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理
上一页 1 ··· 8 9 10 11 12

2012年4月3日

UVA 116 Unidirectional TSP
摘要: 这题没什么难度,按列从后往前递推就行了。刚开始老是WA,原来是没注意到“lexicographically smallest ”,英文不好的童鞋桑不起啊!这个按最小字典序输出还真是头疼,我用的是记录路径,而不是递归打印,只好略加改动了。 1 #include<stdio.h> 2 int m,n,route[12][105],f[12][105]; 3 int main() 4 { 5 int i,j,t,min,flag; 6 while(scanf("%d%d",&m,&n)==2) 7 { 8 for(i = 0; i < m; i+ 阅读全文
posted @ 2012-04-03 11:25 Siriuslzx 阅读(435) 评论(0) 推荐(0)
 

2012年4月2日

poj 3620 Avoid The Lakes
摘要: 斌哥说这题不是DP题,可我真的用DP做的啊,难道我已经突破了类型的限制?哈哈。这题我用了DFS加DP。 1 #include<stdio.h> 2 #include<string.h> 3 int m,n,k,f[105][105],vis[105][105]; 4 int dp(int i,int j) 5 { 6 if(!f[i][j] || vis[i][j]) return 0; 7 vis[i][j] = 1; 8 int &ans = f[i][j]; 9 ans += dp(i-1,j)+dp(i+1,j)+dp(i,j-1)+dp(i,j+1); 阅读全文
posted @ 2012-04-02 22:38 Siriuslzx 阅读(219) 评论(0) 推荐(0)
 
poj 3230 Travel
摘要: 一道看起来比较纠结的题,但思路很好想:一天一天的递推。看开始没看到“The traveler always starts from city 1”,害得我想复杂了,差点儿把O(n^3)写成O(n^4)。 1 #include<stdio.h> 2 int m,n,f[105][105],cost[105][105]; 3 int main() 4 { 5 int i,j,k,max; 6 while(scanf("%d%d",&n,&m)==2) 7 { 8 if(!m && !n) break; 9 for(i = 1; i & 阅读全文
posted @ 2012-04-02 22:31 Siriuslzx 阅读(162) 评论(0) 推荐(0)
 
hdu 1950 Bridging signals
摘要: 还是求最长上升子序列,DP中基础的一种。不过今天出了点问题,TLE了。经过提醒,我花了N个小时去看nlogn算法,总算A了。作为一个菜鸟,还真是没有骄傲的资本啊。 1 #include<stdio.h> 2 #define MAXN 40005 3 int m,n; 4 int c[MAXN],a[MAXN]; 5 int find(int *c,int len,int n) 6 { 7 //就是在n可以取代数组c中的数的条件下, 8 //把n放到c中,n所对应的下标 9 int left=0,right=len,mid;10 mid = (left+right)/2;... 阅读全文
posted @ 2012-04-02 22:21 Siriuslzx 阅读(226) 评论(0) 推荐(0)
 
UVA 10003 Cutting Sticks
摘要: 今天好不容易A了一题,还是“借鉴”的。原文在http://blog.csdn.net/biran007/article/details/3865350。不管怎么,还是有收获的。比如我才知道原来递推数组是能大幅度缩减的,真是有种醍醐灌顶的感觉。另外,今天我已经INF次把dp(x,y)写成dp[x][y]了,真是丢人。 阅读全文
posted @ 2012-04-02 10:53 Siriuslzx 阅读(198) 评论(0) 推荐(0)
 

2012年3月30日

UVA 10405 Longest Common Subsequence
摘要: 和UVA 111几乎一模一样,不同的是它读入的是char,注意一下空格的问题就行了。虽然上次是抄的,这次就能自己写了。 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 const int MAX = 1005; 5 char a[MAX],b[MAX]; 6 int dp[MAX][MAX]; 7 int main() 8 { 9 int la,lb,i,j;10 while(cin.getline(a,MAX))11 {12 cin.getline(b,MAX);1... 阅读全文
posted @ 2012-03-30 13:37 Siriuslzx 阅读(186) 评论(0) 推荐(0)
 
UVA 103 Stacking Boxes
摘要: 终于完成了啊,这可是我自己独立做的第一道DP题!激动ing……这题在白书里是DAG上的DP,可是我看不懂,比如怎么建图我就不会,所以代码都是自己想的。图我不会建,只好动下脑子,刚开始是想用二维数组保存数据的,后来改成了结构体。整个程序我还算满意。View Code 1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 const int MAXM = 32; 5 const int MAXN = 12; 6 int m,n,dp[MAXM]; 7 typedef struct Box 阅读全文
posted @ 2012-03-30 11:07 Siriuslzx 阅读(187) 评论(0) 推荐(0)
 

2012年3月28日

UVA 111 History Grading
摘要: 这是我做的第一道DP题,感觉DP很像递归,关键是找出递推关系。代码就不上了,基本是抄的。 这题的状态转移方程为:dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);//a[i] != b[j] dp[i+1][j+1] = dp[i][j] + 1;//a[i] == b[j] 其中,dp[i][j]表示第一行取前i个数,第二行取前j个数时的最大值,当且仅当两行最后的数相等时最大值增加1。 阅读全文
posted @ 2012-03-28 21:26 Siriuslzx 阅读(161) 评论(0) 推荐(0)
 
上一页 1 ··· 8 9 10 11 12