[原题] 1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 785  Solved: 443 [Submit][Status] Description 勤奋的Farmer John想要建造一个四面的栅栏来关住牛们.他有一块长为n(4<=n<=2500)的木板,他想把这块本板切成4块. 这四块小木板可以是不论什么一个长度仅仅要Farmer John可以把它们围成一个合理的四边形.他可以切出多少种不同的…
QAQ我没读过书...四边形都不会判定了 简单的dp.... ------------------------------------------------------------------------------ #include<cstdio> #include<algorithm> #include<cstring> #include<iostream>   #define rep( i , n ) for( int i = 0 ; i <…
1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec  Memory Limit: 64 MB Description 勤奋的Farmer John想要建造一个四面的栅栏来关住牛们.他有一块长为n(4<=n<=2500)的木板,他想把这块本板切成4块.这四块小木板可以是任何一个长度只要Farmer John能够把它们围成一个合理的四边形.他能够切出多少种不同的合理方案.注意: *只要大木板的切割点不同就当成是不同的方案(像全排列那样),不要担心另外的特殊情况,…
1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 825  Solved: 473[Submit][Status] Description 勤奋的Farmer John想要建造一个四面的栅栏来关住牛们.他有一块长为n(4<=n<=2500)的木板,他想把这块本板切成4块.这四块小木板可以是任何一个长度只要Farmer John能够把它们围成一个合理的四边形.他能够切出多少种不同的合理方案.注意: *只…
开始刷一些USACO月赛题了.. 这题简单递推就不说了. 然后我们发现暴力递推是$O(n^2)$的.看起来非常慢. 这道题拥有浓厚的数学色彩,因此我们可以从数学它的规律上找突破口. (于是暴力大法好,打表出奇迹.) n: 1 2 3 4 5 6 7 8 9...r: 0 0 0 1 4 6 16 19 40 好像完全没有规律,怎么办? 就这么交上去吧,反正不会超时. 然后我们A了这道题,仍然感到不爽.怎么办? Plot!(擦,我要搞个自己的数学软件!!) 我十分感动... 一看就不是多项式嘛=…
这个讲的超好....一定要看...然后看我代码就好懂啦... http://blog.csdn.net/ta201314/article/details/41287567 各种优化确实非常好....搜索的一道好题... 挂代码: /* Problem : USACO 4.1.2 栅栏的木料 Author : Robert Yuan 优化解释: 0. 二分+贪心判断可行解 (根据自己设计的贪心算法尽量的得到一个比较靠近正确值的 ans,再后面的搜索的下界就会大大提高) 1. 如果使用的木料与上一块…
终于找到了usaco月赛的数据…… 根据月赛的名称,我们可以写出数据地址.比如08年一月的月赛即是:http://contest.usaco.org/JAN08  这里要注意区分大小写.…
http://www.lydsy.com/JudgeOnline/problem.php?id=1600 说好的今天开始刷水.. 本题一开始我以为是排列组合,但是自己弱想不出来,只想到了如果四边有一条边大于或等于第三边,那么这个四边形构造不出来. 即 a>=b+c+d时,不存在四边形 那么存在的情况就是a<b+c+d 得到 a<a+b+c+d 因为a<2a,a<b+c+d 所以a<(a+b+c+d)/2=n/2 那么我们就可以dp了. 只要找所有满足的边满足比长度的一半…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1600 题意: 给你一个长度为n的木板,让你把这个木板切割成四段(长度为整数),并且要求这四段可以构成一个四边形. 问你有多少种切割方法(切割点不同就算不同). 题解: 构成四边形的条件: 任意一边长度 < 周长/2 证明:设四边为a,b,c,d.因为有a < b+c+d,所以2*a < a+b+c+d = C,所以a < C/2. 简化问题: 给你n个小木块,排成一排.问你…
O(N)分成1,2与3,4两部分搞一搞. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,lim; int ask(int x) { )-max(x-lim,)+; } int main() { scanf(-(!(n&)); ;i<=n-;i++) ans+=ask(i)*ask(n-i); prin…