2013年7月19日
摘要: 题不算难,记录路径的时候有点麻烦,需要去判断在相等的时候不用更新,然后搜回去就行了。 1 #include 2 #include 3 #include 4 using namespace std; 5 struct ele 6 { 7 int w; 8 int s; 9 int num;10 } el[1050];11 int cmp(ele a,ele b)12 {13 return a.wel[k].s)30 d[j+1][k]=max(d[j][j]+1,d[j][k]);31 else d[j+1][k]=... 阅读全文
posted @ 2013-07-19 11:26 Ac_国士无双 阅读(200) 评论(0) 推荐(0) 编辑
  2013年7月18日
摘要: 这道题做了好久,题并不难,一开始的思路,和做法都是对的。但是要求最小字典序必须从右向左求,这样找最小的时候可以从左向右,保证最小字典序。以后做题特别要记住,越是情况多的时候越要总结归纳,最小样例,最大样例都要试一试,保证输出正确。 1 #include 2 #include 3 int main() 4 { 5 int m,n,mind,i,j,t,a[20][200],d[20][200],s[20][200]; 6 while(scanf("%d%d",&m,&n)!=EOF) 7 { 8 memset(d,0,sizeof(d)); 9 ... 阅读全文
posted @ 2013-07-18 17:36 Ac_国士无双 阅读(279) 评论(0) 推荐(0) 编辑
  2013年7月16日
摘要: 1 #include 2 #include 3 int main() 4 { 5 int m[100][100],l,n,a[100],c[100],i,j,r,sum; 6 while(scanf("%d",&l)!=EOF&&l) 7 { 8 scanf("%d",&n); 9 for(i=0;i<n;i++)10 scanf("%d",&c[i]);11 c[n]=l;a[0]=c[0];12 for(i=1;i<=n;i++)13 a[i]=c[i]-c[i-1];... 阅读全文
posted @ 2013-07-16 17:21 Ac_国士无双 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 18 using namespace std;19 typedef pair II;20 typedef vector IV;21 typedef vector IIV;22 typedef vector BV... 阅读全文
posted @ 2013-07-16 14:00 Ac_国士无双 阅读(196) 评论(0) 推荐(0) 编辑
  2013年7月12日
摘要: 枚举出来的结果,这是看别人写的代码 1 #include 2 int main() 3 { 4 int a[2000],m2=0,m3=0,m5=0,i,t; 5 a[0]=1; 6 for(i=1;i3*a[m3]) 9 t=a[m3]*3;10 else11 t=a[m2]*2;12 if(t>a[m5]*5)13 t=a[m5]*5;14 15 if(t == 2*a[m2]) m2++;16 if(t == 3*a[m3]) m... 阅读全文
posted @ 2013-07-12 11:20 Ac_国士无双 阅读(223) 评论(0) 推荐(0) 编辑
  2013年7月10日
摘要: 和UVa111差不多,但在区分前后顺序的时候,用到了UVa111那题从别人的代码那里看来的方法,让个数叠加,最后d[len1][len2]就是最终结果。 1 #include 2 #include 3 #include 4 using namespace std; 5 int d[2000][2000]; 6 int main() 7 { 8 char s1[2000],s2[2000]; 9 int i,j,len1,len2,maxd;10 while(gets(s1))11 {12 gets(s2);13 len1=strl... 阅读全文
posted @ 2013-07-10 18:28 Ac_国士无双 阅读(140) 评论(0) 推荐(0) 编辑
  2013年7月7日
摘要: 1 #include 2 #include 3 int main() 4 { 5 int a[50],b[50],c[50],d[50][50],i,j,n,k,t,maxd; 6 scanf("%d",&n); 7 for(i=0;ib[k-1]&&d[k-1][j]<d[k-1][k-1]+1)33 d[k][j]=d[k-1][k-1]+1;34 else35 d[k][j]=d[k-1][j];36 if(maxd<d[k][j])3... 阅读全文
posted @ 2013-07-07 12:32 Ac_国士无双 阅读(190) 评论(0) 推荐(0) 编辑
  2013年6月30日
摘要: 本周目标训练指南:数学基础部分:从2.2 递推关系到2.6 置换及其应用入门经典:动态规划初步 + 训练指南:动态规划专题至少 各一道题。 阅读全文
posted @ 2013-06-30 18:56 Ac_国士无双 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 计算不符合三角形的组合数,设x为最小边,y+z>x,所以要求y-z>=x这样的组合有多少个(为保证不重复设x 2 typedef long long i64; 3 int main() 4 { 5 i64 i,n,sum; 6 while(scanf("%lld",&n)!=EOF&&n>=3) 7 { 8 sum=0; 9 for(i=1;i<=n/2;i++)10 sum+=(n-2*i+1)*(n-2*i)/2;11 printf("%lld\n",n*(n-1)*(n-2)/6-sum);12 }1 阅读全文
posted @ 2013-06-30 15:20 Ac_国士无双 阅读(171) 评论(0) 推荐(0) 编辑
  2013年6月29日
摘要: 第一条线将圆分为两部分,以后每条线都会与已存在的k条线相交,通过(k+1)个区域,将每个区域分为两部分,即推导出公式n*(n+1)/2+1。 1 #include 2 typedef long long i64; 3 int main() 4 { 5 i64 n; 6 while(scanf("%lld",&n)!=EOF) 7 { 8 if(n<0) break; 9 printf("%lld\n",n*(n+1)/2+1);10 }11 return 0;12 } 阅读全文
posted @ 2013-06-29 15:43 Ac_国士无双 阅读(145) 评论(0) 推荐(0) 编辑