以下内容过于幼稚,请大佬自觉绕道。。

题目描述:

时间限制:
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 买菜的更多相关文章

  1. CCF计算机职业资格认证考试题解

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF计算机职业资格认证考试题解 CCF计算机软件能力认证(简称CCF CSP认证)是CCF计算机职业资格认证系 ...

  2. CCF计算机职业资格认证 2015年3月第2题 数字排序 解法和思路

    问题描写叙述 给定n个整数,请统计出每一个整数出现的次数.按出现次数从多到少的顺序输出. 输入格式 输入的第一行包括一个整数n,表示给定数字的个数. 第二行包括n个整数.相邻的整数之间用一个空格分隔, ...

  3. CCF CSP认证考试在线评测系统

    关于 CCF CSP 认证考试在线评测系统 CCF CSP 认证考试简介 CCF 是中国计算机学会的简称.CCF 计算机软件能力认证(简称 CCF CSP 认证考试)是 CCF 于 2014 年推出, ...

  4. Microsoft Office Specialist (MOS) 认证考试详解---word 2010 部分

    Microsoft Office Specialist ( MOS)认证考试详解 首先是   Microsoft Certification overview http://www.microsoft ...

  5. 网友RHCE认证考试经历

    2014年7月,为大力推广RedHat Enterprise Linux7操作系统,红帽将基RHCE认证由RHEL6转换到RHEL7上. 面对新的软件功能.新认证课程内容,初期认证学员的考试通过率一直 ...

  6. JavaSE 软件工程师 认证考试试卷3

    JavaSE 软件工程师 认证考试试卷   笔试   考试时间150分钟 总分 100分   姓    名_______________________ 身份证号___________________ ...

  7. JavaSE 软件工程师 认证考试试卷2

    JavaSE 软件工程师 认证考试试卷   笔试   考试时间150分钟 总分 100分   姓    名_______________________ 身份证号___________________ ...

  8. Java 初级软件工程师 认证考试试卷1

    Java 初级软件工程师 认证考试试卷   笔试(A卷)   考试时间150分钟 总分 100分     姓    名_______________________ 身份证号_____________ ...

  9. 图文教程:为认证考试搭建Hyper-V家庭实验室

    [TechTarget中国原创] 在过去20年里,我已经帮助成千上万人准备他们的IT认证考试.虽然有很多方法通过技术来获得经验,组建一个Hyper-V家庭实验室是个利用不同应用程序来获得经验的廉价并有 ...

随机推荐

  1. 从事UNIX/LInux服务器编程最方便的代码编译工具------(eclipse for c/c++)、(FileZilla)、(Secure CRT) 这三种一定要一起使用 之1

    今天主要是将前几天搞的Linux学习的心得写出来,希望帮助更多的人进行,方便从事Unix和Linux编程的同行和刚入门者.主要介绍三种工具并给出安装过程,请大家不必怀疑这个博文,此博文是我自己原创.请 ...

  2. java笔记之IO4文本复制

    * 复制文本文件. *  * 数据源:从哪里来 * a.txt -- 读取数据 -- FileInputStream  *  * 目的地:到哪里去 * b.txt -- 写数据  -- FileOut ...

  3. Ubuntu12.04中新的快捷键(转载)

    转自:http://blog.51osos.com/linuxnews/ubuntu12-04%E4%B8%AD%E6%96%B0%E7%9A%84%E5%BF%AB%E6%8D%B7%E9%94%A ...

  4. codeforces 28D(dp)

    D. Don't fear, DravDe is kind time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  5. [Swift通天遁地]一、超级工具-(2)制作美观大方的环形进度条

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. 数字货币期货与现货JavaScript量化策略代码详解汇总

    1.动态平衡策略 按照当前的 BTC 的价值,账户余额保留¥5000 现金和 0.1个 BTC,即现金和BTC 市值的初始比例是 1:1. 如果 BTC 的价格上涨至¥6000,即 BTC 市值大于账 ...

  7. 逆序数 UVALive 6508 Permutation Graphs

    题目传送门 /* 题意:给了两行的数字,相同的数字连线,问中间交点的个数 逆序数:第一行保存每个数字的位置,第二行保存该数字在第一行的位置,接下来就是对它求逆序数 用归并排序或线段树求.想到了就简单了 ...

  8. Android偏好设置(6)应用和监听各偏好参数

    Reading Preferences By default, all your app's preferences are saved to a file that's accessible fro ...

  9. IOS - PDF合并 - 转

    来自:http://www.cnblogs.com/tx8899/p/4082749.html #pragma mark - Merge PDF - (void)mergePDF { NSArray  ...

  10. google breakpad 使用初步总结

    项目地址:https://code.google.com/p/google-breakpad/    访问不了请挂VPN 这是一个由google主导的开源项目,官方介绍为:An open-source ...