codeforces 469B Chat Online 解题报告
题目链接:http://codeforces.com/problemset/problem/469/B
题目意思:给出 Little Z 的上线时间段,分别是[a1, b1], [a2, b2],...,[ap, bp] (bi < ai + 1) ,以及 Little X的上线时间段,不过他的上线时间段需要依赖 t,也就是上线时间段为[c1+t, d1+t],[c2+t, d2+t],...,[cq+t, dq+t](dj < cj + 1 )。问从[l, r] 中 选择 t,使得 X 与 Z 两个人上线的时间至少有一个时刻的数量有多少个。(这些区间段都包括边界点!)
思路就是用一个vis[]数组把 Z 的上线时间段全部标记为1,然后对于 X 的所有时间段,通过 + x( l <= x <= r)来判断是否已经被标记过,是的话就说明 x 这个点是可选的,可纳入答案范围内。
比赛的时候其实是有这个思路的,但是怕超时就不敢写,然后一直纠结...纠结......纠结(1000*50*1000:[l,r] * q * [cj, dj] ),想不到确实可以这样做,后悔死了~~~
赛后做发现有一个小小的要注意的地方,从test 4 那里可以看出,判断 vis 时有可能超出1000,所以vis 数组要开到2000以上!!!否则memset初始化不到1000以外的数据,导致初始值不明确,以致最后的判断可能会有误!!!
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxn = + ;
int vis[*maxn]; // ci+x, di+x (l<= x <=r)有可能超出1000,所以要开大点
int c[maxn], d[maxn]; int main()
{
int p, q, l, r, a, b;
// freopen("in.txt", "r", stdin); while (scanf("%d%d%d%d", &p, &q, &l, &r) != EOF)
{
memset(vis, , sizeof(vis));
for (int i = ; i < p; i++)
{
scanf("%d%d", &a, &b);
for (int j = a; j <= b; j++)
vis[j] = ;
}
for (int i = ; i < q; i++)
scanf("%d%d", &c[i], &d[i]); int ans = ;
for (int k = l; k <= r; k++)
{
int flag = ;
for (int i = ; i < q && !flag; i++)
{
for (int j = c[i]+k; j <= d[i]+k && !flag; j++)
{
if (vis[j]) // 如果vis大小是1000,if判断中写成vis[i] = 1是错误的,注意注意!!!
{
flag = ;
break;
}
}
}
if (flag)
ans++;
}
printf("%d\n", ans);
}
return ;
}
codeforces 469B Chat Online 解题报告的更多相关文章
- Codeforces Round 665 赛后解题报告(暂A-D)
		Codeforces Round 665 赛后解题报告 A. Distance and Axis 我们设 \(B\) 点 坐标为 \(x(x\leq n)\).由题意我们知道 \[\mid(n-x)- ... 
- Codeforces Round 662 赛后解题报告(A-E2)
		Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ... 
- Codeforces Round #277.5  解题报告
		又熬夜刷了cf,今天比正常多一题.比赛还没完但我知道F过不了了,一个半小时贡献给F还是没过--应该也没人Hack.写写解题报告吧= =. 解题报告例如以下: A题:选择排序直接搞,由于不要求最优交换次 ... 
- codeforces  B. Simple Molecules  解题报告
		题目链接:http://codeforces.com/problemset/problem/344/B 题目意思:这句话是解题的关键: The number of bonds of an atom i ... 
- codeforces  591A. Wizards' Duel   解题报告
		题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ... 
- codeforces  582A. GCD Table  解题报告
		题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ... 
- codeforces  581C. Developing Skills  解题报告
		题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ... 
- codeforces 577B. Modulo Sum  解题报告
		题目链接:http://codeforces.com/problemset/problem/577/B 题目意思:就是给出 n 个数(a1, a2, ..., an) 和 m,问能不能从这 n 个数中 ... 
- codeforces  540B.School Marks  解题报告
		题目链接:http://codeforces.com/problemset/problem/540/B 题目意思:给出 k 个test的成绩,要凑剩下的 n-k个test的成绩,使得最终的n个test ... 
随机推荐
- Play框架连接Mysql遇到的一些问题
			最近,在基于Play框架的项目中需要连接Mysql数据库.在这个过程中遇到了一些问题.在此,把它记录下来. 首先,Play框架和Mysql连接有两种方式,这两种方式都是在application.con ... 
- Ubuntu 16.04下使用Wine安装文件比对工具Beyond Compare 4
			说明: 1.使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小. 2.关于没有.wine文件夹的解决方法:在命令行上运行winecfg: 下载: (链接 ... 
- Maven教程:tutorialspoint-maven
			来自turorialspoint的Maven教程(英文),官网:http://www.tutorialspoint.com/maven/index.htm 这个教程在国内已经被翻译成中文,官网:htt ... 
- SQL SERVER 工具
			http://www.cnblogs.com/fygh/archive/2012/04/25/2469563.html 
- fastscript增加三方控件之二
			fastscript增加三方控件之二 unit fs_BsDataSet; interface {$i fs.inc} uses SysUtils, Classes, fs_iinterpreter, ... 
- Android:MVC模式(下)
			在上一篇文章中,我们将 View 类单独出来并完成了设计和编写.这次我们将完成 Model 类,并通过 Controller 将两者连接起来,完成这个计算器程序. 模型(Model)就是程序中封装了数 ... 
- [Algorithm] Write a Depth First Search Algorithm for Graphs in JavaScript
			Depth first search is a graph search algorithm that starts at one node and uses recursion to travel ... 
- 基于cucumber接口测试框架的扩展——测试框架总结之cucumber
			主要功能: 1.通过fiddler抓取请求,导出xml文件. 2.解析xml文件至excel,或者手工填写excel数据. 3.根据excel中的URL中地址生成的接口集合和feature内容模板生成 ... 
- eclipse中文凝视字体太小解决方法
			新安装的eclipse中文凝视字体太小.解决方法例如以下: 打开Elcipse-->点击菜单条上的"Windows"-->点击"Preferences&quo ... 
- xterm.js  基于websocket 链接容器 命令行工具
			<template> <div> <el-dialog title="命令" :visible.sync="dialogTableVisib ... 
