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 }