随笔分类 - 递推
摘要:据说A,B,C题都比较水这里就不放代码了D:Facility Locations然而D题是一个脑经急转弯的题:有m行,n列,每个位置有可能为0,也可能不为0,问最多选K行是不是可以使得每一列都至少有一个0,其中代价c有个约束条件:These costs satisfy a locality prop...
阅读全文
摘要:有关这个题的高斯消元的方法已经在我的另一篇博客中给出http://www.cnblogs.com/gj-Acit/p/3888382.html这里介绍一个很吊的解法,复杂度降到了O(n),以下转自http://www.cnblogs.com/chanme/p/3861766.html先考虑一场比赛的...
阅读全文
摘要:由递推关系,到n-1时有一种走法,n-2时有2种走法,所以An=An-1+2*An-2 1 #include<stdio.h> 2 main() 3 { 4 int n,m,i; 5 double f[45]; 6 f[1]=f[2]=1; 7 for(i=3;i<=44;i++) 8 f[i]=f[i-1]+f[i-2]; 9 scanf("%d",&n);10 while(n--)11 {12 scanf("%d",&m);13 printf("%.0lf\n",f[m]);14 ...
阅读全文
摘要:链接http://acm.hdu.edu.cn/showproblem.php?pid=2050本题目的关键在于从直线类推到折线,两条直线比一条折线多分两个部分,而n条折线则比2n条直线少2n个部分 1 #include<stdio.h> 2 __int64 a[10003]={1,4}; 3 void f() 4 { 5 int i; 6 for(i=2;i<10003;i++) 7 a[i]=a[i-1]+4*i-1; 8 } 9 int main()10 {11 f();int n;12 scanf("%d",&n);13 int ...
阅读全文
摘要:链接http://acm.hdu.edu.cn/showproblem.php?pid=2048#include<stdio.h>__int64 fact(int n){ if(n==1)return n; return (__int64)n*fact(n-1);}int main(){ __int64 f[20]={0,0,1},t; for(t=3;t<=20;t++) f[t]=(t-1)*(f[t-1]+f[t-2]); int n;while(~scanf("%d",&n)) { int i;int m; ...
阅读全文
摘要:链接http://acm.hdu.edu.cn/showproblem.php?pid=2047#include<stdio.h>__int64 a[40]={1,3};void f(){ int i; for(i=2;i<=40;i++) a[i]=2*(a[i-1]+a[i-2]);}int main(){ f(); int n; while(~scanf("%d",&n)) printf("%I64d\n",a[n]); return 0;}
阅读全文
摘要:链接http://acm.hdu.edu.cn/showproblem.php?pid=2046#include<stdio.h>int main(){ int a,b,n; __int64 s[100]; while(scanf("%d",&a)!=EOF) { s[1]=1; s[2]=2; for(n=3;n<=a;n++) { s[n]=s[n-1]+s[n-2]; } if(a==1||a==2) printf("%d\n",a); ...
阅读全文
摘要:链接http://acm.hdu.edu.cn/showproblem.php?pid=2045#include<stdio.h>int main(){ int n,i; __int64 a[51];a[1]=3;a[2]=6;a[3]=6; while(scanf("%d",&n)!=EOF) { for(i=4;i<=n;i++) a[i]=2*a[i-2]+a[i-1]; printf("%I64d\n",a[n]); } return 0;}
阅读全文
摘要:题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2044#include<stdio.h>__int64 a[50]={1,1};void f(){ int i; for(i=2;i<50;i++) a[i]=a[i-1]+a[i-2];}int main(){ f();int n; while(~scanf("%d",&n)){ int i;int x,b; for(i=0;i<n;i++){ scanf("%d%d",&x,&b); pr...
阅读全文

浙公网安备 33010602011771号