USACO天梯--Barn Repair
2016-01-14 18:26
405 查看
Barn Repair
It was a dark and stormy night that ripped the roof and gates off the stalls that hold Farmer John's cows. Happily, many of the cows were on vacation, so the barn was not completely full.The cows spend the night in stalls that are arranged adjacent to each other in a long line. Some stalls have cows in them; some do not. All stalls are the same width.
Farmer John must quickly erect new boards in front of the stalls, since the doors were lost. His new lumber supplier will supply him boards of any length he wishes, but the supplier can only deliver a small number
of total boards. Farmer John wishes to minimize the total length of the boards he must purchase.
Given M (1 <= M <= 50), the maximum number of boards that can be purchased; S (1 <= S <= 200), the total number of stalls; C (1 <= C <= S) the number of cows in the stalls, and the C occupied stall numbers (1 <=
stall_number <= S), calculate the minimum number of stalls that must be blocked in order to block all the stalls that have cows in them.
Print your answer as the total number of stalls blocked.
PROGRAM NAME: barn1
INPUT FORMAT
Line 1: | M, S, and C (space separated) |
Lines 2-C+1: | Each line contains one integer, the number of an occupied stall. |
SAMPLE INPUT (file barn1.in)
4 50 18 3 4 6 8 14 15 16 17 21 25 26 27 30 31 40 41 42 43
OUTPUT FORMAT
A single line with one integer that represents the total number of stalls blocked.SAMPLE OUTPUT (file barn1.out)
25
[One minimum arrangement is one board covering stalls 3-8, one covering 14-21, one covering 25-31, and one covering 40-43.]
这题满足区间减法,以下是我的AC代码:
/* ID:wang ming PROG:barn1 LANG:C++ */ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define mem0(x) memset(x,0,sizeof(x)) #define memff(x) memset(x,0xff,sizeof(x)) using namespace std; bool cmp(int a,int b) { return a>b; } int main() { freopen("barn1.in","r",stdin); freopen("barn1.out","w",stdout); int m,s,c,k=0; int max=0,min=0xffffff; int a[205],b[205]; scanf("%d%d%d",&m,&s,&c); for(int i=0;i<c;i++) scanf("%d",&a[i]); sort(a,a+c); if(m>=c) printf("%d\n",c); else { for(int i=0;i<c;i++) { if(a[i]>max)max=a[i]; if(a[i]<min)min=a[i]; if(i!=0) { b[k++]=a[i]-a[i-1]-1; } } int ans=max-min+1; sort(b,b+c-1,cmp); for(int i=0;i<m-1;i++) ans-=b[i]; printf("%d\n",ans); } return 0; }
相关文章推荐
- Climbing Stairs_爬楼梯_递归
- 无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
- haartraing 准备(将图像统一修改尺寸)
- VS2010 error: LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
- (Mac)Rails项目使用七牛上传及下载文件
- Studio team goals and pain points
- AIDL的使用
- AjaxControlToolKit--TabContainer控件的介绍收藏[摘录]
- Shallow Size、Retained Size、Heap Size和Allocated
- RAID5阵列硬盘离线怎么恢复
- Win10打开PhotoShop蓝屏显示内核错误kernel security check failure
- getaddrinfo(localhost.localdomain): 未知的名称或服务
- 流畅上GOOGLE+,使用gmail的方法
- AIX 配置vncserver
- jmail组件 对象不支持此属性或方法: 'JMail.ServerAddress' 的解决办法
- UVa 514 - Rails【栈+格式】
- cloudera安装报错 socket.gaierror: [Errno -2] Name or service not known
- cloudera安装报错 socket.gaierror: [Errno -2] Name or service not known
- cloudera安装报错 socket.gaierror: [Errno -2] Name or service not known
- cloudera安装报错 socket.gaierror: [Errno -2] Name or service not known