聊天
来源:互联网 发布:济南seo大标网络 编辑:程序博客网 时间:2024/04/28 13:15
A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1,b1],[a2,b2]..[ap,bp]。B的空闲时间是[c1+t,d1+t]..[cq+t,dq+t],这里t为B的起床时间。这些时间包括了边界点。B的起床时间为[l,r]的一个时刻。若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间?
输入描述:
第一行数据四个整数:p,q,l,r(1≤p,q≤50,0≤l≤r≤1000)。接下来p行数据每一行有一对整数ai,bi(0≤aii+1>bi,ci+1>di这里有点没说清楚,事实上只要二者的时间有重合就可以,也就是只要能聊到天就OK。
这里我用两个超级长的数组来标记两个人的时间:0代表没时间,1代表有时间; 然后把两个数组进行动态比对,判断[l, r]时间是否可以。
代码如下:
import java.util.*;public class Main { public static void main(String[] args) {Scanner s = new Scanner(System.in); while(s.hasNext()) { int p = s.nextInt(); int q = s.nextInt(); int l = s.nextInt(); int r = s.nextInt(); s.nextLine(); int m_num = 0; int[][] a = new int[p][2]; for(int i=0; i<p; i++) { String[] str = s.nextLine().split(" "); a[i][0] = Integer.parseInt(str[0]); a[i][1] = Integer.parseInt(str[1]); if(a[i][1]>m_num) m_num = a[i][1]; } int[] la = new int[m_num+1]; for(int i=0; i<p; i++) { for(int j=a[i][0]; j<=a[i][1]; j++) la[j] = 1; } m_num = 0; int[][] b = new int[q][2]; for(int i=0; i<q; i++) { String[] str = s.nextLine().split(" "); b[i][0] = Integer.parseInt(str[0]); b[i][1] = Integer.parseInt(str[1]); if(b[i][1]>m_num) m_num = b[i][1]; } int[] lb = new int[m_num+1]; for(int i=0; i<q; i++) { for(int j=b[i][0]; j<=b[i][1]; j++) lb[j] = 1; } int res = 0; while(l<=r && l<la.length) { for(int i=0; i+l<la.length; i++) { if(lb[i]+la[i+l]==2) { res++; break; } } l++; } System.out.println(res); } s.close(); }}
0 0
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- 聊天
- Java聊天--聊天界面
- quartus ii 管脚设置与test bench设置
- 剑指offer--反转链表
- 第十天2017/04/23(1、企业财富库:“循环单链表”的设计与实现)
- 【BZOJ 4816】【SDOI 2017】数字表格
- 枚举
- 聊天
- 脚本调试_sh -x 、set -x
- c语言里面用scanf连续输入字符型数据常见问题
- 45-批量输入异常处理(shutdown 函数)
- java 通过方法名称调用方法,为大量变量赋值,获取变量值
- 美国陆军报告:未来30年,影响世界的24个核心科技趋势
- frgament之间传值,list点击变颜色
- Android--Fragment的使用(二)-TabFragment的使用
- LeetCode Weekly Contest 29解题思路