[BZOJ1643][Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
生活随笔
收集整理的這篇文章主要介紹了
[BZOJ1643][Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1643: [Usaco2007 Oct]Bessie's Secret Pasture 貝茜的秘密草坪
Time Limit: 5 Sec??Memory Limit: 64 MB Submit: 460??Solved: 386 [Submit][Status][Discuss]Description
農夫約翰已經從他的牧場中取得了數不清塊數的正方形草皮,草皮的邊長總是整數(有時農夫約翰割草皮的刀法不合適,甚至切出了邊長為0的正方形草皮),他已經把草皮放在了一個奶牛貝茜已經知道的地方。 貝茜總是希望把美味的草皮放到她的秘密莊園里,她決定從這些草皮中取出恰好4塊搬到她的秘密莊園中,然后把它們分成1×1的小塊,組成一個面積為N(1<=N<=10,000)個單位面積的部分。 貝茜對選出這樣四塊草皮的方法數很感興趣,如果她得到了一個4個單位面積的部分,那么她可以有5中不同的方法選4塊草皮:(1,1,1,1),(2,0,0,0),(0,2,0,0),(0,0,0,2).順序是有效的:(4,3,2,1)和(1,2,3,4)是不同的方法。
Input
第一行:一個單獨的整數N。
Output
單獨的一行包含一個整數,表示貝茜選四塊草皮的方案數。
Sample Input
4Sample Output
5 水 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char buf[10000000], *ptr = buf - 1; inline int readint(){int f = 1, n = 0;char ch = *++ptr;while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = *++ptr;}while(ch <= '9' && ch >= '0'){n = (n << 1) + (n << 3) + ch - '0';ch = *++ptr;}return f * n; } const int maxn = 10000 + 10; int f[maxn][4] = {0}; int main(){fread(buf, sizeof(char), sizeof(buf), stdin);int N = readint();for(int k = 0; k * k <= N; k++) f[k * k][0] = 1;for(int i = 1; i < 4; i++)for(int j = 0; j <= N; j++)for(int k = 0; k * k <= j; k++)f[j][i] += f[j - k * k][i - 1];printf("%d\n", f[N][3]);return 0; }?
轉載于:https://www.cnblogs.com/ruoruoruo/p/7563050.html
總結
以上是生活随笔為你收集整理的[BZOJ1643][Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断一个IP是否归属于中国
- 下一篇: 20170908校内训练