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 ...
随机推荐
- HDU 5344(MZL's xor-(ai+aj)的异或和)
MZL's xor Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- POJ 3662 二分+Dijkstra
题意: 思路: 二分+Disjktra 二分一个值 如果某条边的边权比它小,则连上边权为0的边,否则连上边权为1的边 最后的d[n]就是最小要免费连接多少电话线. //By SiriusRen #in ...
- SecondaryNameNode合并元信息过程
- python对MySQL进行添加修改删除以及字符串的操作
# coding=UTF-8 import MySQLdb def dbDperate(sql,param): "定义数据库的添加,修改和删除操作" #获取数据库的连接对象 con ...
- koda java
https://kodejava.org/category/spring/spring-jdbc/
- caffe for python (官方翻译)
导言 本教程中,我们将会利用Caffe官方提供的深度模型——CaffeNet(该模型是基于Krizhevsky等人的模型的)来演示图像识别与分类.我们将分别用CPU和GPU来进行演示,并对比其性能.然 ...
- php八大设计模式之装饰器模式
我们都知道,得到一匹布需要大概这么几步: 1.染色 2.印花 3.裁剪 这种形式在面向对象中怎么实现呢? 面向过程[继承模式]实现: 继承模式得到需要的布料,一步一步的加工. 继承的层次越来越深,扩展 ...
- NodeJS学习笔记 (17)集群-cluster(ok)
cluster模块概览 node实例是单线程作业的.在服务端编程中,通常会创建多个node实例来处理客户端的请求,以此提升系统的吞吐率.对这样多个node实例,我们称之为cluster(集群). 借助 ...
- 紫书 习题 10-8 UVa 10622(gcd)
把这个数质因数分解然后求因子个数的gcd就ok了. 一些细节 (1)这道题的质因数不需要存下来,每一次做完取一次gcd就ok了 (2)判断奇偶用ans & 1的时候要加括号, 位运算要注意括号 ...
- *Mapper.xml文件头
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-// ...