CCF计算机职业资格认证考试 201809-2 买菜
以下内容过于幼稚,请大佬自觉绕道。。
题目描述:
时间限制:
1.0s
内存限制:
256.0MB
问题描述:
问题描述
小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装n次车。具体的,对于小H来说有n个不相交的时间段[a1,b1],[a2,b2]...[an,bn]在装车,对于小W来说有n个不相交的时间段[c1,d1],[c2,d2]...[cn,dn]在装车。其中,一个时间段[s, t]表示的是从时刻s到时刻t这段时间,时长为t-s。
由于他们是好朋友,他们都在广场上装车的时候会聊天,他们想知道他们可以聊多长时间。
输入格式
输入的第一行包含一个正整数n,表示时间段的数量。
接下来n行每行两个数ai,bi,描述小H的各个装车的时间段。
接下来n行每行两个数ci,di,描述小W的各个装车的时间段。
输出格式
输出一行,一个正整数,表示两人可以聊多长时间。
样例输入
4
1 3
5 6
9 13
14 15
2 4
5 7
10 11
13 14
样例输出
3
数据规模和约定
对于所有的评测用例,1 ≤ n ≤ 2000, ai < bi < ai+1,ci < di < ci+1,对于所有的i(1 ≤ i ≤ n)有,1 ≤ ai, bi, ci, di ≤ 1000000。
1、朴素解,适用于所有情况
穷举所有可能的情况,一一讨论
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n],b[n],c[n],d[n];
for(int i=;i<n;i++){
cin>>a[i]>>b[i];
}
for(int i=;i<n;i++){
cin>>c[i]>>d[i];
}
int count=;
int i=,j=;
while(i<n&&j<n){
if(a[i]<=c[j]){
if(b[i]<=d[j]&&b[i]>c[j]) {
count+=b[i]-c[j];i++;
}
else {
if(b[i]<=c[j]) i++;
else{
count+=d[j]-c[j];j++;
}
} }
else{
if(b[i]>=d[j]&&d[j]>a[i]){
count+=d[j]-a[i];j++;
}
else{
if(d[j]<=a[i]) j++;
else{
count+=b[i]-a[i];i++;
} }
} }
cout<<count;
return ;
}
2、将问题转换
转换成两人时间区间重叠的部分的长度和
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n],b[n],c[n],d[n];
for(int i=;i<n;i++){
cin>>a[i]>>b[i];
}
for(int i=;i<n;i++){
cin>>c[i]>>d[i];
}
int count=;int x,y;
for(int i=;i<n;i++){
for(int j=;j<n;j++){
count+=max(,min(b[i],d[j])-max(a[i],c[j]));
}
}
cout<<count;
return ;
}
3、巧解
以空间换时间,开时间长那么大的数组,两人装车的时间都“标注”到数组内(++),然后数一下都标注的长度。
#include<iostream>
using namespace std;
int ojbk[];
int main(){
int n;
cin>>n;
int a[n],b[n],c[n],d[n];
for(int i=;i<;i++){
ojbk[i]=;
}
for(int i=;i<n;i++){
cin>>a[i]>>b[i];
for(int j=a[i];j<b[i];j++){
ojbk[j]++;
}
}
for(int i=;i<n;i++){
cin>>c[i]>>d[i];
for(int j=c[i];j<d[i];j++){
ojbk[j]++;
}
}
int count=;
for(int i=;i<;i++){
if(ojbk[i]>) count++;
}
cout<<count;
return ;
}
请各位大佬指点
CCF计算机职业资格认证考试 201809-2 买菜的更多相关文章
- CCF计算机职业资格认证考试题解
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF计算机职业资格认证考试题解 CCF计算机软件能力认证(简称CCF CSP认证)是CCF计算机职业资格认证系 ...
- CCF计算机职业资格认证 2015年3月第2题 数字排序 解法和思路
问题描写叙述 给定n个整数,请统计出每一个整数出现的次数.按出现次数从多到少的顺序输出. 输入格式 输入的第一行包括一个整数n,表示给定数字的个数. 第二行包括n个整数.相邻的整数之间用一个空格分隔, ...
- CCF CSP认证考试在线评测系统
关于 CCF CSP 认证考试在线评测系统 CCF CSP 认证考试简介 CCF 是中国计算机学会的简称.CCF 计算机软件能力认证(简称 CCF CSP 认证考试)是 CCF 于 2014 年推出, ...
- Microsoft Office Specialist (MOS) 认证考试详解---word 2010 部分
Microsoft Office Specialist ( MOS)认证考试详解 首先是 Microsoft Certification overview http://www.microsoft ...
- 网友RHCE认证考试经历
2014年7月,为大力推广RedHat Enterprise Linux7操作系统,红帽将基RHCE认证由RHEL6转换到RHEL7上. 面对新的软件功能.新认证课程内容,初期认证学员的考试通过率一直 ...
- JavaSE 软件工程师 认证考试试卷3
JavaSE 软件工程师 认证考试试卷 笔试 考试时间150分钟 总分 100分 姓 名_______________________ 身份证号___________________ ...
- JavaSE 软件工程师 认证考试试卷2
JavaSE 软件工程师 认证考试试卷 笔试 考试时间150分钟 总分 100分 姓 名_______________________ 身份证号___________________ ...
- Java 初级软件工程师 认证考试试卷1
Java 初级软件工程师 认证考试试卷 笔试(A卷) 考试时间150分钟 总分 100分 姓 名_______________________ 身份证号_____________ ...
- 图文教程:为认证考试搭建Hyper-V家庭实验室
[TechTarget中国原创] 在过去20年里,我已经帮助成千上万人准备他们的IT认证考试.虽然有很多方法通过技术来获得经验,组建一个Hyper-V家庭实验室是个利用不同应用程序来获得经验的廉价并有 ...
随机推荐
- 【WIP】Swift4 异常处理, JSON处理
创建: 2018/03/24 更新: 2018/06/05 补充catch可以只带where不带模式 [任务表]TODO 异常处理语法 异常的发生 抛出例外 thorw 式 ● 抛出的值的类型必须采 ...
- [App Store Connect帮助]八、维护您的 App(5)生成产品报告
您可以生成产品报告,详细介绍您所在机构中 App 目录的信息和设置,包括 App 内购买项目,以及 Game Center排行榜和成就的元数据. 首先您以不同类型请求产品报告,之后您会收到一封电子邮件 ...
- [App Store Connect帮助]八、维护您的 App(4.4)重置 App 总评分(iOS、Apple TVOS、macOS)
当您发布新版本时,您可以重置 App 评分.您的产品页将显示一则消息,说明 App 的总评分最近已重置.此消息将一直显示,直到有足够多的顾客对新版本进行了评分且页面出现新的总评分. 评分只可以针对全球 ...
- 题解报告:hdu 1398 Square Coins(母函数或dp)
Problem Description People in Silverland use square coins. Not only they have square shapes but also ...
- dotnetty源码解读一些要点
DefaultAttributeMap 它绑定在Channel或者ChannelHandlerContext上的一个附件. ChannelHandlerContext都是ChannelHandler和 ...
- C#画图——Graphics
C#要实现简单的画图功能可以利用Graphics这个类,要使用Graphics必需using命名空间System.Drawing(此名明空间下都是关于图形的操作).首先创建画布: Bitmap bmp ...
- 【转】【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)
原文链接 强烈关注,学习!
- orcl 11g 创建表空间
Oracle11g创建表空间语句 在plsql工具中执行以下语句,可建立Oracle表空间. /*分为四步 *//*第1步:创建临时表空间 */create temporary tablespa ...
- 215 Kth Largest Element in an Array 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素.请注意,它是数组有序排列后的第 k 个最大元素,而不是第 k 个不同元素.例如,给出 [3,2,1,5,6,4] 和 k = 2,返回 5.注意事项:你可以假 ...
- 213 House Robber II 打家劫舍 II
注意事项: 这是 打家劫舍 的延伸.在上次盗窃完一条街道之后,窃贼又转到了一个新的地方,这样他就不会引起太多注意.这一次,这个地方的所有房屋都围成一圈.这意味着第一个房子是最后一个是紧挨着的.同时,这 ...