uva 10276 / pc 110908
黑书上说用二分图的知识来解,但我想不出来,只好找规律
发现,一条柱时为1,两条柱时为4。三条柱时为8。。
这些1,3,7,11的数字加1后,都是下一条柱的最底部的数字,而且一条柱的数字之和总是按照这样的规律。1^2,2^2,3^2,4^2......
所以。。
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 int ans[55]; 6 int upg[55]; 7 int main(){ 8 upg[1]=0; 9 for(int i=1;i<=50;i++){ 10 int anst=-1; 11 for(int p=1;p<=i;p++){ 12 upg[p]=i*i-upg[p]; 13 anst=max(anst,upg[p]); 14 } 15 ans[i]=anst; 16 upg[i+1]=anst+1; 17 } 18 int T; 19 scanf("%d",&T); 20 while(T--){ 21 int n; 22 scanf("%d",&n); 23 printf("%d\n",ans[n]); 24 } 25 return 0; 26 }