雅礼培训day2 时间机器 machine

题目大意:

给你两组区间,求覆盖问题。

对于这个问题我们可以针对每个区间的左端点进行排序,在枚举节点时,在左端点满足要求的情况下,是使右端点尽量靠近节点的右端点,使用map来优化

代码送上:

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <map>
 4
 5 #define For(i, j, k) for(int i = j; i <= k; i++)
 6 #define y second
 7
 8
 9 inline int Read(){
10     char c = getchar();
11     while(c < ‘0‘ || c > ‘9‘) c = getchar();
12     int x = c - ‘0‘;
13     c = getchar();
14     while(c <= ‘9‘ && c >= ‘0‘) x = x * 10 + c - ‘0‘, c = getchar();
15     return x;
16 }
17
18 const int N = 100010;
19
20 using namespace std;
21
22 typedef long long LL;
23
24 map<int, LL> M;
25 typedef map<int, LL>::iterator it;
26
27 struct Node{
28     int l, r, s;
29
30     bool operator < (const Node& B) const{
31         return l < B.l;
32     }
33 }A[N], R[N];
34
35 inline void Add(int u, int s){
36     if(!M.count(u)) M[u] = s;
37     else M[u] += s;
38 }
39
40 int n, m;
41
42 void check(){
43     int j = 1;
44     For(i, 1, n){
45         while(j <= m && R[j].l <= A[i].l) Add(R[j].r, R[j].s), ++j;
46         while(A[i].s){
47             it p = M.lower_bound(A[i].r);
48             if(p == M.end()){
49                 puts("No");
50                 return;
51             }
52             if(A[i].s < p -> y) p -> y -= A[i].s, A[i].s = 0;
53             else A[i].s -= p -> y, M.erase(p);
54         }
55     }
56     puts("Yes");
57 }
58
59 int main(){
60     freopen("machine2.in", "r", stdin);
61     freopen("machine2.ans", "w", stdout);
62     int Case = Read();
63     while(Case--){
64         M.clear();
65         n = Read(), m = Read();
66         For(i, 1, n) A[i].l = Read(), A[i].r = Read(), A[i].s = Read();
67         For(i, 1, m) R[i].l = Read(), R[i].r = Read(), R[i].s = Read();
68         sort(A + 1, A + n + 1), sort(R + 1, R + m + 1);
69         check();
70     }
71     return 0;
72 }
时间: 2024-12-27 22:07:59

雅礼培训day2 时间机器 machine的相关文章

雅礼培训day1 世界线 Worldline

题目大意: 给出一个有向无环图,要求对于图中的u,v,t三点,满足u->v,v->t,u->t,经过观察我们发现就是要将图中每一个点连接所有他可以达到的点,最后输出连接的边的数量. 对此我们可以dfs求出每一个点可以到达其他的点边,最后用求出的边数减去原来已经连接的边,其中用bitset优化. 代码送上: 1 #include <cstdio> 2 #include <bitset> 3 #include <iostream> 4 #define Fo

2017雅礼集训 Day2

今日得分:60+100+25 = 185,修改后60+100+100 今日题解: T1:有nlogn对不合法的数对,这些数对在DFS序上的支配范围画在平面上是一个或两个矩形,求矩形面积并即可 T2:递推,考虑新增加的一行一列的状态 1.与前面的一行共同完全占据了两行两列,为避免重复我们规定必须选第i列,那么行有C(i,2)种选法,列有i-1种:f[i-2]*C(i,2)*(i-1) 2.没有与前面一行共同占据两行两列,那么相当于把冲突的其中一个位置换到最后一列去:f[i-1]*C(i,2)*2

雅礼培训 1.2

模拟赛 串(string) [题目描述]给定一个由小写字母组成的字符串 s,每次你可以删去它的一个非回文子串,求删成空串的最小次数.[输入数据]第一行一个整数 t 表示数据组数.每组数据第一行一个整数 n 表示字符串长度,第二行一个字符串 s.[输出数据]每组数据输出一行一个整数表示答案,如果无法删成空串输出-1.[样例输入]27abcdcba3xxx[样例输出]2-1[样例解释]对于第一个样例,一种最优方案为 abcdcba->adcba->空串.[数据范围]对于 30%的数据,n<=

雅礼培训4.3 Problem A 【点分治】

题目简述 一个\(N\)个节点的树,有\(M\)个炸弹分布在一些节点上,有各自的威力,随着其他点距离增大对其他点的伤害呈等差减小,直至为0 问每个点受到的伤害 题解 QAQ考场代码没处理好有些炸弹威力很大这个事实,,数组爆掉... AC算法直接变暴力分,,, 点分治即可 我是每次将子树内所有的炸弹统计到根来,再用一个差分数组求出各个深度受到的伤害,累加入每个节点的答案 但是由于可能会出现伤害来自同一个子树的情况,我们再对每个子树做一遍撤销 常数略大,,经玄学优化强行卡入时限 #include<a

2017雅礼省选集训做题记录

嘛,最近在补雅礼省选前集训的题.都是我会做的题..那一定是最水的那些题啦 题目在loj.ac上都有.过段时间如果搬了雅礼NOI集训的题应该也会做做的吧.. Day1 T1 一道经典套路题,做法跟UOJ #228基础数据结构练习题类似. 使用线段树维护.考虑相邻两个数的差值最多变化log次.也就是说,对于每个区间,只要操作二进行大概log次就能使得这个区间内所有数完全一样.所以对于操作二,只要记录一下区间最大最小值,就能直接打标记或者暴力DFS下去. 和UOJ那个题一样,注意一个特殊情况,就是一个

#6030. 【雅礼集训 2017 Day1】矩阵

#6030. 「雅礼集训 2017 Day1」矩阵 题目描述 有一个 n×n  的矩阵,每个位置 (i,j) 如果是 . 表示为白色,如果是 # 表示为黑色. 初始时,每个位置可以是黑色或白色的,(i,j)  位置的值会作为 ai,j 给你. 现在有一种操作,选择两个整数 i,j∈[1,n],记 (i,1),(i,2),…,(i,n) (i, 1), (i, 2)的颜色为 C1,C2,…Cn ??,将 (1,j),(2,j),…,(n,j)  的颜色赋为 C1,C2,…,Cn ??. 你的任务是

常州培训 day2 解题报告

第一题: 题目大意: 给出一个M面的骰子,投N次,求最大期望值. 最大期望值的定义: 比如M=2,N=2, 那么 2次可以是 1,1,最大值为1: 1,2最大值为2: 2,1最大值为2: 2,2 最大值为2: 最大期望值就是  (1+2+2+2)/4=1.75 也就是把所有情况的最大值加起来,除以方案数.M,N<=5000 解题过程:1.这题只能说自己数学水平不够,只能找找规律骗点分,竟然混了个40分.小的数据直接模拟,拿40分. 2.正解: 考虑最大值为1的情况,sum=1*(1^N-0^N)

雅礼学习10.2

雅礼学习10.2 上午考试解题报告 各题状况(爆零) T1 想了10多分钟,暴力只有一个极大复杂度的想法,显然不可过,但还是写了,然后就全TLE也是...意料之中 T2 暴力很好写,但是错误理解了Tim给的部分分的意思:先给了一个\(a_i\le 10^9\),然后部分分里面没有提到\(a_i\)的情况,我就忽略了\(a_i\)的大小对答案统计的影响... 换句话说,我当时要是写了离散化,就是\(43\)分到手. T3 题目要求的输出可以分成三个问题,第一个问题正确 的话可以得到这个点的\(25

雅礼学习10.4

雅礼学习10.4 上午考试 各题状况 T1 莫名其妙20分了. 考场上一眼秒掉了这个题目:这不就是个并查集捆绑+快速幂么 然后开开心心这个点如果有这个质因子的话\(fa\)就指向这个质因子,而每个数字有多个质因子... 多个质因子在相互指\(fa\)的时候指乱套了.... 对拍的时候看出来的,然后用\(1\)个多小时来调这份代码,最后自己都不知道这东西在干嘛了,就凉了. T2 写了个暴力枚举,期望\(20\)实际\(20\) T3 看到成绩之后:这题怎么会爆\(long long\)的??? 然