博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pzoj Problem 2127 养鸡场
阅读量:5293 次
发布时间:2019-06-14

本文共 1648 字,大约阅读时间需要 5 分钟。

 Problem 2127 养鸡场

Accept: 59    Submit: 211
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

Jason买来了n米长的竹篱笆,打算将n米长的竹篱笆全部用来围成一个三角形的养鸡场。为方便起见,养鸡场三条边的长度都为正整数。同时,他想让自己的养鸡场看起来更美观一些,要求三条边的长度分别在一个区间范围内。

现在,他想知道有多少种不同的方案使得围成的养鸡场满足要求?

 Input

输入包含多组数据。输入数据第一行是一个正整数n,表示竹篱笆的长度。

在接下来三行中,第i行的两个正整数为xi,yi。表示三角形的第i条边的边长ai的范围在[xi,yi]内。

注意:Jason规定a1≤a2≤a3。

 Output

输出一个整数,表示满足要求的不同方案数。

约定:

对于第二行至第四行,都有1≤xi≤yi ≤n

对于50%的数据n≤5000

对于100%的数据n≤200000

 Sample Input

12 3 5 3 5 3 5

 Sample Output

2

 Source

福州大学第十届程序设计竞赛
// 直接枚举明显是不行的,因为x+y+z == n  所以我们可以枚举x ,// 然后 y = n-z-x ; 又 y >= x && y <= z ; 还有 x2 <= y <= y2 // 还要满足三角形 y-x < z < y+x ,由上可以求出 z 的范围 最后还要满足 x3 <= z <= y3 #include
#include
#include
#include
#include
#include
#include
#define maxn 100002#define LL long longusing namespace std ;int min1( int a , int b ){ return a < b ? a : b ;}int main(){ int i ,k ,j ,t1,t2 ; int n , m , ans , L1 , L2 , R1 , R2 ; int x1 , x2 ,x3 , y1 , y2 ,y3 ; // freopen("in.txt","r",stdin) ; while( scanf("%d",&n) != EOF ) { scanf("%d%d" , &x1 , &y1 ) ; scanf("%d%d" , &x2 , &y2 ) ; scanf("%d%d" , &x3 , &y3 ) ; ans = 0 ; for( int x = x1 ; x <= y1 ;x++ ) { L1 = (n-x*2)/2+1; if(n&1) R1 = n/2 ;// 这里要注意 else R1 = n/2-1 ; L2 = n-x-y2 ; R2 = n-x-x2 ;// L1 = max(L1,L2) ; R1 = min1(R1,R2) ; L1 = max(L1,(n-x+1)/2) ; R1 = min1(R1,n-x*2) ;// 原来(n-x)/2 ,这里也是要奇偶,改成(n-x+1)/2 就不用了 L1 = max(L1,x3) ; R1 = min1(R1,y3) ; ans += max(0,R1-L1+1) ;// 要判断正负 } printf("%d\n",ans) ; } return 0 ;}

 

转载于:https://www.cnblogs.com/20120125llcai/p/3448674.html

你可能感兴趣的文章
C++----练习--引用头文件
查看>>
11.基本包装类型
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
用HttpCombiner来减少js和css的请问次数
查看>>
FUSE-用户空间文件系统
查看>>
将tiff文件转化为jpg文件并保存
查看>>
ubuntu 16.04 开机脚本
查看>>
 VS2012 C#调用C++ dll
查看>>
TCL:表格(xls)中写入数据
查看>>
SQL SERVER 2005中如何获取日期(一个月的最后一日、一年的第一日等等)
查看>>
django 学习笔记(转)
查看>>
控制台程序秒变Windows服务(Topshelf)
查看>>
字节流与字符流的区别详解
查看>>
20141026--娱乐-箱子
查看>>
自定义分页
查看>>
Oracle事务
查看>>
任意输入10个int类型数据,把这10个数据首先按照排序输出,挑出这些数据里面的素数...
查看>>
String类中的equals方法总结(转载)
查看>>