luogu P1586 四方定理(背包)

题意

题解

首先吐槽一下体面的第一句话。反正我不知道(可能是因为我太菜了)

可能没有睡醒,没看出来是个背包。

但告诉是个背包了应该就好做了。

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 int t,n;
 8 int dp[50000][10];
 9 int main(){
10     dp[0][0]=1;
11     for(int i=1;i*i<=32768;i++)
12         for(int j=i*i;j<=32768;j++)
13             for(int l=1;l<=4;l++){
14                 dp[j][l]+=dp[j-i*i][l-1];
15             }
16     scanf("%d",&t);
17     while(t--){
18         scanf("%d",&n);
19         printf("%d\n",dp[n][1]+dp[n][2]+dp[n][3]+dp[n][4]);
20     }
21     return 0;
22 } 

 

posted @ 2018-08-31 14:37  Xu-daxia  阅读(192)  评论(0编辑  收藏  举报