2013年8月17日

337APuzzles

摘要: dangerous 1 /*大水题目。不解释 2 给你m个数,从中选出n个,保证最大值和最小值的差值最小, 3 做法:从小到大排序,然后暴力枚举每个长度是n的序列*/ 4 #include 5 #include 6 #include 7 using namespace std; 8 int main() 9 {10 int i,j,n,m,k;11 int a[110];12 while(scanf("%d%d",&n,&m)!=EOF)13 {14 int min=0x3f3f3f3f;15 for(i=1;i<=m;i++)1... 阅读全文

posted @ 2013-08-17 02:40 ok_boy 阅读(222) 评论(0) 推荐(0) 编辑

2013年8月16日

SDUT oj 2610

摘要: 1 /*题目大意:输入一序列n个数字,然后输入m个询问,每个询问包含左边区间和右边区间,还有a和b,问你这个区间内有几个数大于等于a且小于等于b 2 做法:树状数组,先求出这个区间内有几个数小于a,然后求这个区间内有几个数小于等于b,拿后者减去前者就是答案了*/ 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn=50010; 8 int c[maxn],ansl[maxn],ansr[maxn]; 9 struct pp 10 { 11 int num; 12 i... 阅读全文

posted @ 2013-08-16 22:06 ok_boy 阅读(382) 评论(0) 推荐(0) 编辑

2013年8月14日

SDUT OJ 2607

摘要: 1 /*http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2607*/ 2 题目大意:给出一个字符串,求出里面为山字形的子序列,比如1 2 1,给出的字符串都是 3 小写字母组成,大小按照码值判断,问里面有几个这样的子序列,保证长度大于等三,且中点左右必须至少有一个字符。注意:相同的两个算两个 4 比如acca算aca和aca两个,其中c的下标分别为1和2。 5 解法:既然是左边递增右边递减,那么我们左右都求一次递增子序列的个数,然后相乘就是相加就是所有的组合数 6 因为字母只有26个,那么时间 阅读全文

posted @ 2013-08-14 15:07 ok_boy 阅读(451) 评论(0) 推荐(0) 编辑

2013年8月12日

HDU2189 来生一起走

摘要: 好久没发博客了,最近遇到以下奇葩错误,不明觉厉,忍不住发一篇 1 /*母函数,因为要求的是素数,那么先打一个素数表,所有的因子都是素数构成 2 但是遇到一个奇葩事,当num初值取1,结果就出不来,运行了好久 3 但是num初值取0,那么就秒出,坑爹啊扯淡*/ 4 #include 5 #include 6 #include 7 int a[200]; 8 int c1[200],c2[200]; 9 int prim(int n)10 {11 12 int i;13 for(i=2;i2) continue;24 else if(prim(i)) a[num++... 阅读全文

posted @ 2013-08-12 18:09 ok_boy 阅读(167) 评论(0) 推荐(0) 编辑

2013年8月5日

Common Subsequence

摘要: 1 /*HDU1159 ,最长公共*/ 2 #include 3 #include 4 #include 5 using namespace std; 6 int dp[1000][1000]; 7 char a[1000],b[1000]; 8 int LCS(int n,int m) 9 {10 int i,j;11 for(i=1;i=dp[i][j-1])19 {20 dp[i][j]=dp[i-1][j];21 22 }23 else24 ... 阅读全文

posted @ 2013-08-05 16:06 ok_boy 阅读(194) 评论(0) 推荐(0) 编辑

Greatest Common Increasing Subsequence

摘要: 1 /*HDU1423 最长公共递增*/ 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 550 7 int dp[N][N]; 8 int s[N],t[N]; 9 10 int main()11 {12 int t1;13 while(scanf("%d",&t1)!=EOF)14 {15 while(t1--)16 {17 int n,m;18 scanf("%d",&n);19 ... 阅读全文

posted @ 2013-08-05 16:05 ok_boy 阅读(188) 评论(0) 推荐(0) 编辑

Palindrome

摘要: 1 /*最长公共+滚动数组HDU1513*/ 2 #include 3 #include 4 char a[5010],b[5010]; 5 short int dp[2][5010]; 6 int LCS(int n,int m) 7 { 8 memset(dp, 0, sizeof(dp)); 9 int i,j;10 for(i=1;i=dp[i%2][j-1])19 {20 dp[i%2][j]=dp[(i-1)%2][j];21 //printf("%d %d %d\n"... 阅读全文

posted @ 2013-08-05 16:04 ok_boy 阅读(170) 评论(0) 推荐(0) 编辑

吉哥系列故事——完美队形I

摘要: 1 /*hud4512 2 dp[i]表示当前以下标i结束的最长公共上升子序列。 3 4 我们让第一个序列为原序列,第二个序列为原系列的反向。 5 6 则,也就是说,第二个序列的顺序为原序列的下标[n-1,0],设为j 7 8 当j枚举到k时,对于dp[0] ~ dp[k-1],都可以得到原序列的一个长度为2*dp[i]的题目要求的子序列。 9 10 可是对于,dp[k],我们怎么判断此时,两个序列是否存在交集呢?假如存在交集,此时题目要求的子序列长度为2*dp[k] - 111 12 这样考虑,假如此时的序列没有交集,则此时两个序列的最长公共上升子序列,在序列二中的起始坐... 阅读全文

posted @ 2013-08-05 16:03 ok_boy 阅读(245) 评论(0) 推荐(0) 编辑

魔法串

摘要: 1 /*HDU4545 最大公共子序列+滚动数组*/ 2 3 4 #include 5 #include 6 #include 7 using namespace std; 8 int dp[2][1010]; 9 char a[1010],b[1010];10 int hash[1010][1010];11 int LCS(int n,int m)12 {13 memset(dp,0,sizeof(dp));14 int i,j;15 for(i=1;i=dp[i%2][j-1])23 {24 dp[i%2... 阅读全文

posted @ 2013-08-05 16:01 ok_boy 阅读(188) 评论(0) 推荐(0) 编辑

最少拦截系统

摘要: 1 /*HDU1257最长递增*/ 2 #include 3 #include 4 int find(int *c,int len,int n) 5 { 6 int l=0,r=len; 7 while(ln) r=mid-1;12 else return mid;13 }14 return l;15 }16 int main()17 {18 int i,j,n;19 int a[1005], c[1005],len;20 while(scanf("%d",&n)!=EOF)21 {22 for(... 阅读全文

posted @ 2013-08-05 16:00 ok_boy 阅读(209) 评论(0) 推荐(0) 编辑

导航