UVA 10131 Is Bigger Smarter? DP
2013-04-14 21:50
387 查看
import java.io.*; import java.util.*; class pair implements Comparable<pair>{ int a,b,c; pair(int x, int y, int z){ a=x;b=y;c=z; } @Override public int compareTo(pair t1) { if(this.a == t1.a){ return this.b-t1.b; }else{ return this.a-t1.a; } } } public class Main { public static void dp(int s, pair[] arr){ int[] table = new int[s]; int[] pre = new int[s]; int max = 0; int f = -1; Arrays.fill(table, 1); for(int i=0;i<s;i++){ pre[i] = -1; } for(int i=1;i<s;i++){ for(int j=i-1;j>=0;j--){ if(arr[i].b<arr[j].b&&arr[i].a>arr[j].a){ if(table[j]+1>table[i]){ table[i] = table[j]+1; pre[i] = j; } } } if(table[i]>max){ max = table[i]; f = i; } } System.out.println(max); back(pre,f,arr); } public static void back(int[] p,int start, pair[] arr){ if(p[start]!=-1) back(p,p[start],arr); System.out.println(arr[start].c); } public static void main(String[] args) throws Exception { Scanner scan = new Scanner(System.in); int count = 0; pair[] arr = new pair[1001]; Arrays.fill(arr, new pair(99999999,99999999,99999999)); while(scan.hasNextInt()){ arr[count++] = new pair(scan.nextInt(),scan.nextInt(),count); } Arrays.sort(arr); dp(count,arr); } };
最近在切动态规划,于是去UVA切题,最然早在2011年就会了DP, 但是中间工作等原因断了N久没碰
遗忘得只会LCS这样的了。。。汗
而且当时就觉着DP怎么都学不通,这次再作为一个难点多多学习。
这题思路还是比较明显的,可恶的是我在输出具体sample的时候犯了各种错误,还有把输出写到了if 条件里面,回溯结果少了一个。。
我还以为是算法错了,但是不对啊,这么明显的算法怎么可能错呢。。。。。悲剧地交了7次。。。
状态很差,学的时候还是没有集中精神啊。
网上还有一种思路就是排序后和原数组求LCS,算法貌似应该是正确的,我很汗啊 怎么会有人这样思考。
但是LCS作为2维DP,最后一步具体sample的输出更加烦。
相关文章推荐
- UVA 10131 Is Bigger Smarter?(DP)
- UVa 10131 Is Bigger Smarter? (DP&LIS)
- uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
- UVA 10131 Is Bigger Smarter? (DP)
- Uva 10131-Is Bigger Smarter?(DP)
- Is Bigger Smarter? - UVa 10131 dp
- 【解题报告】uva10131_Is Bigger Smarter?(越大越聪明, dp, LIS)
- UVA 10131 Is Bigger Smarter? (DP,最长条件子序列)
- UVA 10131 Is Bigger Smarter ? DP ,Commencel
- UVA 10131 Is Bigger Smarter? 越大越聪明? dp,LDS
- UVA 10131 Is Bigger Smarter?(DP)
- UVA 10131 - Is Bigger Smarter?
- UVA 10131 - Is Bigger Smarter?
- UVa 10131: Is Bigger Smarter?
- uva_10131 Is Bigger Smarter?
- uva 10131 Is Bigger Smarter?
- UVa 10131 - Is Bigger Smarter?
- Uva 10131 Is Bigger Smarter? (LIS,打印路径)
- Is Bigger Smarter?+uva+简单dp(最长公共升降子序列的变形)
- uva 10131 Is Bigger Smarter?(DAG最长路)