cogs 184. [USACO Oct08] 搭建篱笆
184. [USACO Oct08] 搭建篱笆
★★ 输入文件:quad.in 输出文件:quad.out 简单对比
时间限制:1 s 内存限制:128 MB
勤奋的农夫约翰想要修建一个4面的篱笆墙把他的奶牛们围起来。他有一块长为N的木板(4<=N<=2500)于是他想要在三个点把他们切断用以得到4块木板。
只要能构成成四边形篱笆,这4块板子的长度可以是任意正整数。那么为了得到完整的篱笆农夫约翰有多少不同的种方法切这个长木板呢?
注意:
- 对于两种方案而言,只要一方存在一个另一方没有的切割点,那它们就将视为不同的方案。不必担心对称或那个其他复杂的情况的排除。
- 请注意,篱笆所围的面积应当大于0。
- 你将高兴的是,我们保证答案适合有符号的32位整型变量。
分数:250
问题名称:quad
输入格式:
- 第1行:一个单独的整数:N
输入样例(file quad.in):
6
输入说明:这个板子的长度是6。
输出格式:
- 第1行:一个单独的整数表示切割方案数。
输出样例:
6
输出说明:
农夫约翰有10种方法切割木板:
(1,1,1,3);(1,1,2,2);(1,1,3,1);(1,2,1,2);(1,2,2,1);
(1,3,1,1);(2,1,1,2);(2,1,2,1);(2,2,1,1);(3,1,1,1).
但是其中的4种--(1,1,1,3),(1,1,3,1),(1,3,1,1),(3,1,1,1)是不能构成篱笆的。
思路:
方法一:排列组合。
首先,我们可以考虑用f[i]来表示当前用了长度为i时的方案数。。
但是根本行不通qwq。所以因该运用补集的思想来转化一下。当总长度为k的时候,很明显总方案数是C(n-1,3)就是在n-1个点中选出3个点来切;然后考虑不合法的情况即当最长边长度大于总长度的一半。我们可以枚举不合法的最长边长度然后再次运用排列组合的方法来求解,即C(n-1-t,2),其中t是枚举的长度。这里容易忽略一个条件就是枚举出来的那条边可以插在求解出的情况的中间或两边,所以应该减去4*C(n-1-t,2)即可。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
long long n;
int main(){
freopen("quad.in","r",stdin);
freopen("quad.out","w",stdout);
scanf("%lld",&n);
long long ans=(n-)*(n-)*(n-)/;
long long temp=;
long long mod=n%;
for(int i=(n/)+mod;i<=n-;i++)
ans-=(n-i-)*(n-i-)*;
printf("%lld",ans);
return ;
}
方法二:动规
用f[i][j]表示前i块木板长度和为j的方案
构成四边形的条件是三边和大于第四边
也就是任意一条边的长度都是小于边长之和的一半
#include<iostream>
#include<cstdio>
using namespace std;
int n,mx;
int f[][];
int main(){
f[][]=;
scanf("%d",&n);
int mx=(n+)/-;
for(int i=;i<=;i++)
for(int j=;j<=n;j++)
for(int k=;k<=min(mx,j);k++)
f[i][j]+=f[i-][j-k];
printf("%d",f[][n]);
return ;
}
cogs 184. [USACO Oct08] 搭建篱笆的更多相关文章
- cogs 186. [USACO Oct08] 牧场旅行 树链剖分 LCA
186. [USACO Oct08] 牧场旅行 ★★☆ 输入文件:pwalk.in 输出文件:pwalk.out 逐字节对比时间限制:1 s 内存限制:128 MB n个被自然地编号为 ...
- 186. [USACO Oct08] 牧场旅行
186. [USACO Oct08] 牧场旅行(点击转到COGS) 输入文件:pwalk.in 输出文件:pwalk.out 时间限制:1 s 内存限制:128 MB 描述 n个被自然地编号为 ...
- 185. [USACO Oct08] 挖水井
185. [USACO Oct08] 挖水井(点击转到COGS) 输入文件:water.in 输出文件:water.out 时间限制:1 s 内存限制:128 MB 描述 农夫约翰决定给他 ...
- COGS 163 [USACO Mat07] 牛语
COGS 163 [USACO Mat07] 牛语 输入文件:latin.in 输出文件:latin.out 简单对比 时间限制:1 s 内存限制:128 MB 奶牛们听说猪发明了一种秘密 ...
- 186. [USACO Oct08] 牧场旅行 (第三次考试大整理)
186. [USACO Oct08] 牧场旅行 输入文件:pwalk.in 输出文件:pwalk.out 简单对比 时间限制:1 s 内存限制:128 MB n个被自然地编号为1..n奶牛 ...
- 185.[USACO Oct08] 挖水井 (第三次考试大整理)
185. [USACO Oct08] 挖水井 输入文件:water.in 输出文件:water.out 简单对比 时间限制:1 s 内存限制:128 MB 农夫约翰决定给他的N(1< ...
- Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd
题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★ 输入文件:butter.in 输出文件 ...
- COGS 144. [USACO Dec07] 魅力手镯【01背包复习】
144. [USACO Dec07] 魅力手镯 ★ 输入文件:charm.in 输出文件:charm.out 简单对比 时间限制:1 s 内存限制:8 MB 译 by CmYkRgB1 ...
- COGS——T1588. [USACO FEB04]距离咨询
http://cogs.pro/cogs/problem/problem.php?pid=1588 ★★ 输入文件:dquery.in 输出文件:dquery.out 简单对比时间限制:1 ...
随机推荐
- 【翻译自mos文章】开启dblink的 oracle net trace/tracing --对dblink进行跟踪的方法
开启dblink的 oracle net trace/tracing --对dblink进行跟踪的方法. 參考原文: DBLINK: How to Enable Oracle Net Tracing ...
- SqlServer 删除日志
1 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作.可以通过直接删除log文件和 ...
- UI体系的本质是结构化存在
UI体系的本质是结构化存在: UI系统的问题需要使用结构化的思维来处理.
- jQuery实现tab标签切换效果
技巧一.jQuery :eq() 选择器 定义和用法 :eq() 选择器选取带有指定 index 值的元素. index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1). 经常与其 ...
- cal---显示日历
cal命令用于显示当前日历,或者指定日期的日历. 语法 cal(选项)(参数) 选项 -l:显示单月输出: -3:显示临近三个月的日历: -s:将星期日作为月的第一天: -m:将星期一作为月的第一天: ...
- vector和list容器之间的复制
#include <iostream> #include <list> #include <string> #include <vector> #inc ...
- hdu(1069)——Monkey and Banana(LIS变形)
题意: 如今给你n个石块,然后它由坐标来表示(x,y,z).可是它能够有不同的方法,也就是说它的三个坐标能够轮换着来的. 石块的数量不限,可是每次都必须保持上底面的长和宽严格递减,然后问你用这些石块所 ...
- vue28-2.0-过滤器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 插入css样式表的三种方法
http://www.w3school.com.cn/css/css_howto.asp http://www.runoob.com/css/css-howto.html 当读到一个样式表时,浏览器会 ...
- Rapidjson的简单使用示例
很早就想用用Markdown了,一直没机会.今天就来试一下 先放个目录: Rapidjson的简单使用示例 rapidjson官方教程 本示例所用环境 示例代码与注释 rapidjson官方教程 如果 ...