2011年5月6日

ACM PKU 1837 Balance http://acm.pku.edu.cn/JudgeOnline/problem?id=1837

摘要: 大牛说这个题目很简单,我认为难-----因为我没有想清楚;网上的代码很多,但是基本上都是Copy 来 又Copy去的;总之;看的是一个版本还看不明白;我把解题报告好好写写!第一:我们最终的目的是找能使天平平衡的方法数;这个只能做背包做了,用01背包不难想,最终的结果就是sign【G】【Mid】数组里面记录的次数;第二;想清楚为什么不会出现在加入同一个砝码时不会造成计算重叠;只要把一个子问题抽出来看就明白了;假设出现重叠,那么它的上以状态就已经平衡了,(即到天平中心的距离相等)此处只是借助当前砝码来权衡能不能达到中间位置,此砝码在实际中不起作用;第三;DP的状态转移方程:sign[i][k + 阅读全文

posted @ 2011-05-06 18:42 _Clarence 阅读(192) 评论(0) 推荐(0) 编辑

ACM PKU 1745 Divisibility http://acm.pku.edu.cn/JudgeOnline/problem?id=1745

摘要: 比较简单的DP题,就用到一个滚动数组;思路:此题只要求一个余数为0的情况就行了,所以数组不用开那么大,每次我都对当前输入的数据取余,然后再标记一下就可以了;所以数组范围在100之内就够了,这里需要注意的是负数的处理(计算机不识别负数的取余情况);#include <iostream>using namespace std;int N, K, data;int flag[101],flag1[101];void DP_flag(int data, int K){int i;for (i = 0; i < K; i++){ if (flag1[i] == 1) { flag[(i 阅读全文

posted @ 2011-05-06 18:41 _Clarence 阅读(142) 评论(0) 推荐(0) 编辑

ACM PKU 3356 AGTC http://acm.pku.edu.cn/JudgeOnline/problem?id=3356

摘要: 这里有个问题,为什么LCS用滚动数组不好使呢?希望看到的牛人能指点一二!!!#include <iostream>using namespace std;char str1[1001],str2[1001];int len[1001][1001];int max(int a,int b){return a > b ? a : b; }int dp(int l1,int l2){int i ,j;memset(len,0,sizeof(len));for(i=0;i<=l1;i++) len[i][0]=0;for(i=0;i<=l2;i++) len[0][i]= 阅读全文

posted @ 2011-05-06 18:39 _Clarence 阅读(109) 评论(0) 推荐(0) 编辑

ACM PKU 2663 Tri Tiling http://acm.pku.edu.cn/JudgeOnline/problem?id=2663

摘要: 这题开始没有思路,后来看了流牛的解题报告才写出来;递推公式我写一下:sign[i] = 1 (当i == 0 时,具体为什么我也没有具体的说明方法) 0 (i % 2 != 0) 根据图最先想到的一定是这个; 3*sign[i-2] + 2*(sign[i-4] + sign[i-6]+......+sign[2]); (这个就是要将拿来的这个往里 面插有重复的情况会有一种抵消!)#include <iostream>using namespace std;int sign[31];void init(){int i ;int temp = 0;sign[0] = 1;sign[2 阅读全文

posted @ 2011-05-06 18:38 _Clarence 阅读(176) 评论(0) 推荐(0) 编辑

ACM PKU 1664 放苹果 http://acm.pku.edu.cn/JudgeOnline/problem?id=1664

摘要: 解题思路:每种情况都可以归结为:1、所有盘子中最少的放 0 个苹果,那么剩余的 n-1 个盘子就可以随便放了;2、如果盘子中最少苹果数为 1 ,那么就相当于将 m-n 个苹果放到 n 个盘子里的结论是一样的;#include <iostream>using namespace std;int solve ( int m ,int n){if (m < 0) return 0;if (m == 0 || n==1) return 1;return solve(m - n, n) + solve ( m, n-1);}int main (){int t, m, n;cin > 阅读全文

posted @ 2011-05-06 18:37 _Clarence 阅读(167) 评论(0) 推荐(0) 编辑

全排列函数

摘要: void perm (int A[], int n, int k){if (k == n) print( A , n );else for (int i = k;i < n; i++) { swap(A[i],A[k]); perm (A,n,k+1); swap(A[i],A[k]); }}//下面有验证代码#include <fstream>#include <iostream>using namespace std;ofstream outfile ("out.txt");int A[100];void print ( int A[] , 阅读全文

posted @ 2011-05-06 18:36 _Clarence 阅读(96) 评论(0) 推荐(0) 编辑

棋盘覆盖问题求解

摘要: #include <iostream>#include <iomanip>using namespace std;int state = 1 ;int Graph[100][100];void chip_gram(int str , int stc , int enr , int enc , int t){if (t == 1) return ; int flag = state++;t = t / 2;if (str < enr+t && stc < enc+t) chip_gram(str , stc , enr , enc , t);e 阅读全文

posted @ 2011-05-06 18:35 _Clarence 阅读(146) 评论(0) 推荐(0) 编辑

ACM PKU 1002 487-3279 http://acm.pku.edu.cn/JudgeOnline/problem?id=1002

摘要: #include <iostream>using namespace std;int sign[10000000];void init(int n){while (n--){ char str[1024]; cin >> str; int sum = 0; for (int i = 0 ; i < strlen(str); i++) { int temp = 0; switch (str[i]) { case 'A': case 'B': case 'C': case '2': temp = 2 ; 阅读全文

posted @ 2011-05-06 18:35 _Clarence 阅读(132) 评论(1) 推荐(0) 编辑

ACM PKU 2559 Largest Rectangle in a Histogram http://acm.pku.edu.cn/JudgeOnline/problem?id=2559

摘要: 关于覆盖,用DP是一种很不错的解决方法,时效也很不错....这题目把图一画就很明确了,没有说明的必要了。#include <iostream>using namespace std;__int64 height[100001];int main (){int n;int left[100001];int right[100001];__int64 max=0,temp=0;while (scanf("%d",&n) && n){ int i=0; memset(height,0,sizeof(height)); right[0]=0; l 阅读全文

posted @ 2011-05-06 18:34 _Clarence 阅读(101) 评论(0) 推荐(0) 编辑

ACM PKU 2082 Terrible Sets http://acm.pku.edu.cn/JudgeOnline/problem?id=2082

摘要: 这是一道关于最大覆盖的问题,对于这种问题,用一个双向DP足以解决问题,双向DP在以前的文章中已经有使用过,但是我这次挑战了用堆栈做的,思路跟DP一样的,只是操作简单了罢了。时效也应该比DP强。思维误区:我不知道每次大于栈顶的元素是否要判定它的值与最大面积MAX_area之间的关系,所以对它的判断我在压栈时就开始了,多余了.....#include <iostream>#include <stack>using namespace std;#define MAX_SIZE 50001struct node{int w,h;}rec[MAX_SIZE];int main() 阅读全文

posted @ 2011-05-06 18:32 _Clarence 阅读(160) 评论(0) 推荐(0) 编辑

导航