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

题目描述:

时间限制:
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. bzoj 3456: 城市规划【NTT+多项式求逆】

    参考:http://blog.miskcoo.com/2015/05/bzoj-3456 首先推出递推式(上面的blog讲的挺清楚的),大概过程是正难则反,设g为n个点的简单(无重边无自环)无向图数目 ...

  2. spoj 839 OPTM - Optimal Marks&&bzoj 2400【最小割】

    因为是异或运算,所以考虑对每一位操作.对于所有已知mark的点,mark的当前位为1则连接(s,i,inf),否则连(i,t,inf),然后其他的边按照原图连(u,v,1),(v,u,1),跑最大流求 ...

  3. Linux的远程桌面配置

    一.Ubuntu的远程桌面 Ubuntu默认已安装好VNC服务端组件vino-server,只需要在“系统设置->首选项->桌面共享”中设置即可. 1.设置桌面共享首选项 2.设置好之后, ...

  4. mysql查询流程

    首先是连接器 连接器负责跟客户端来链接 链接成功后 mysql会先去查询缓存,之前是不是有查询的这条语句,之前执行过的话 就会以key-value的形式缓存到内存中,如果没有就会继续执行后面的,执行完 ...

  5. ES高级查询

    Query Content 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件的匹配有多好 # POST 192.168.100.1 ...

  6. idea 启动时报 error:java 无效的源发行版11

    编译的版本不符合,需要修改统一 

  7. 51nod 1096 距离之和最小

    求中位数,注意求中位数前排序.... #include <bits/stdc++.h> using namespace std; #define LL long long const in ...

  8. 操作JavaScript的Alert弹框

    @Testpublic void testHandleAlert(){ WebElement button =driver.findElement(By.xpath("input" ...

  9. js ajax 数组类型参数传递

    若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 tradititon ...

  10. git介绍与使用

    git是去中心化版本管理工具,项目创建一个远程版本,将其clone到本地,会在本地创建一个本地仓,一个开发项目,在没有网络的时候依然可以提交修改到本地仓,当有网络的时候再提交到远程仓库.git可以快速 ...