GTW likes gt

 Accepts: 75
 Submissions: 261
 Time Limit: 2000/1000 MS (Java/Others)
 Memory Limit: 131072/131072 K (Java/Others)
Problem Description

Long long ago, there were nn adorkable GT. Divided into two groups, they were playing games together, forming a column. The i−th GT would randomly get a value of ability b​i​​. At the i−th second, the i−th GT would annihilate GTs who are in front of him, whose group differs from his, and whose value of ability is less than his.

In order to make the game more interesting, GTW, the leader of those GTs, would emit energy for mm times, of which the i−th time of emitting energy is c​i​​. After the c​i​​ second, b​1​​,b​2​​,...,b​c​i​​​​ would all be added 1.

GTW wanted to know how many GTs would survive after the n−th second.

Input

The first line of the input file contains an integerT(≤5), which indicates the number of test cases.

For each test case, there are n+m+1 lines in the input file.

The first line of each test case contains 2 integers nn and mm, which indicate the number of GTs and the number of emitting energy, respectively.(1≤n,m≤50000)

In the following nn lines, the i−th line contains two integers a​i​​ and b​i​​, which indicate the group of the i−th GT and his value of ability, respectively. (0≤a​i​​≤1,1≤b​i​​≤10^​6​​)

In the following mm lines, the i−th line contains an integer c​i​​, which indicates the time of emitting energy for i−th time.

Output

There should be exactly T lines in the output file.

The i−th line should contain exactly an integer, which indicates the number of GTs who survive.

Sample Input
1
4 3
0 3
1 2
0 3
1 1
1
3
4
Sample Output
3
Hint

After the first seconds,b​1​​=4,b​2​​=2,b​3​​=3,b​4​​=1 After the second seconds,b​1​​=4,b​2​​=2,b​3​​=3,b​4​​=1 After the third seconds,b​1​​=5,b​2​​=3,b​3​​=4,b​4​​=1,and the second GT is annihilated by the third one. After the fourth seconds,b​1​​=6,b​2​​=4,b​3​​=5,b​4​​=2 c​i​​ is unordered.

GTW likes gt

 Accepts: 75
 Submissions: 261
 Time Limit: 2000/1000 MS (Java/Others)
 Memory Limit: 131072/131072 K (Java/Others)
问题描述
从前,有nn只萌萌的GT,他们分成了两组在一起玩游戏。他们会排列成一排,第i只GT会随机得到一个能力值b​i​​。在第i秒的时候,第i只GT可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的GT。
为了使游戏更加有趣,GT的首领GTW会发功mm次,第ii次发功的时间为c​i​​,则在第c​i​​秒结束后,b​1​​,b​2​​,...,b​c​i​​​​都会增加1。
现在,GTW想知道在第nn秒之后,会有几只GT存活下来。
输入描述
第一行只有一个整数T(T≤5),表示测试数据组数。
第二行有两个整数n,m。表示GT的个数和GTW发功的次数。( 500001≤n≤50000,1≤m≤50000)
第三到n+2行,每行有两个整数a​i​​,b​i​​,表示第ii只GT在哪个组和他的能力值 (0≤a[i]≤1,1≤b[i]≤10​6​​)
第n+3行到第n+m+2行,每行有一个整数c​i​​,表示GTW第i次发功的时间。 1≤c[i]≤n
输出描述
总共T行,第i行表示第i组数据中,GT存活的个数。
输入样例
1
4 3
0 3
1 2
0 3
1 1
1
3
4
输出样例
3
Hint
第1秒后 能力值为4 2 3 1
第2秒后 能力值为4 2 3 1
第3秒后 能力值为5 3 4 1,第2只GT被第3只GT消灭掉了
第4秒后 能力值为6 4 5 2
c​i​​并不是有序的
我们先通过题意先计算出最后他们有多少能力值,然后,我们用两个容器分别装他们,如果可以干掉,就把它删除,然后就两个容器大小之和就好
#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<sstream>
#include<set>
#include<queue>
#include<map>
#include<vector>
#include<algorithm>
#include<limits.h>
#define inf 0x3fffffff
#define INF 0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define ULL unsigned long long
using namespace std;
map<int,int> q;
multiset<int> q0;
multiset<int> q1;
multiset<int>::iterator it;
int i,j;
int t;
int n,m;
struct P
{
int a,b;
}L[100000];
int c;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d%d",&L[i].a,&L[i].b);
}
for(i=1;i<=m;i++)
{
scanf("%d",&c);
q[c]++;
}
for(i=n-1;i>=1;i--)
{
q[i]+=q[i+1];
}
for(i=1;i<=n;i++)
{
L[i].b+=q[i];
// cout<<L[i].b<<endl;
}
for(i=1;i<=n;i++)
{
if(L[i].a==0)
{
while(q1.size())
{
it=q1.begin();
if(*it<L[i].b)
{
q1.erase(it);
}
else
{
break;
}
}
q0.insert(L[i].b);
}
else if(L[i].a==1)
{
while(q0.size())
{
it=q0.begin();
if(*it<L[i].b)
{
q0.erase(it);
}
else
{
break;
}
}
q1.insert(L[i].b);
}
}
// cout<<q0.size()+q1.size()<<endl;
printf("%d\n",q0.size()+q1.size());
q.clear();q0.clear();q1.clear();
} return 0;
}

  

 

BestCoder Round #66 1002的更多相关文章

  1. 暴力+降复杂度 BestCoder Round #39 1002 Mutiple

    题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...

  2. 矩阵快速幂---BestCoder Round#8 1002

    当要求递推数列的第n项且n很大时,怎么快速求得第n项呢?可以用矩阵快速幂来加速计算.我们可以用矩阵来表示数列递推公式比如fibonacci数列 可以表示为 [f(n)   f(n-1)] = [f(n ...

  3. 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II

    题目传送门 /* 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 当然有可能两个数和超过p,那么an的值最优,每 ...

  4. Manacher BestCoder Round #49 ($) 1002 Three Palindromes

    题目传送门 /* Manacher:该算法能求最长回文串,思路时依据回文半径p数组找到第一个和第三个会文串,然后暴力枚举判断是否存在中间的回文串 另外,在原字符串没啥用时可以直接覆盖,省去一个数组空间 ...

  5. 二分图判定+点染色/并查集 BestCoder Round #48 ($) 1002 wyh2000 and pupil

    题目传送门 /* 二分图判定+点染色:因为有很多联通块,要对所有点二分图匹配,若不能,存在点是无法分配的,no 每一次二分图匹配时,将点多的集合加大最后第一个集合去 注意:n <= 1,no,两 ...

  6. hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]

    传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131 ...

  7. BestCoder Round #66 (div.2) 1002

    GTW likes gt  Accepts: 132  Submissions: 772  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  8. BestCoder Round #56 1002 Clarke and problem 1003 Clarke and puzzle (dp,二维bit或线段树)

    今天第二次做BC,不习惯hdu的oj,CE过2次... 1002 Clarke and problem 和Codeforces Round #319 (Div. 2) B Modulo Sum思路差不 ...

  9. BestCoder Round #92 1002 Count the Sheep —— 枚举+技巧

    题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1002 题解: 做题的时候只是想到 ...

随机推荐

  1. 重命名File

    File completeFile = new File(mFilePath + mFileName); if (completeFile.exists()) { File fileWithSuffi ...

  2. springmvc 类型转换器 自定义类型转换器

    自定义类型转换器的步骤: 1.定义类型转换器 2.类型转换器的注册(在springmvc配置文件处理) 来解决多种日期格式的问题: springmvc 类型转换器 表单数据填错后返回表单页面(接上面的 ...

  3. re.I re.L re.M re.S re.U re.X

  4. 使用广播退出打开了多个activity的程序

    新建一个父类,在父类里动态注册广播,在这个广播的onrecive方法中结束当前activity,让每个activity继承这个父类,在要关闭的activity中发送广播,搞定 下面是代码 父类 pro ...

  5. 奇葩问题 eclipse下 maven项目 java Resource报个小红叉,然而里面却没有小红叉

    之前没注意,不知是一开始就有还是这两天才有,说下解决方案: 右击项目“Properties”,在弹出的“Properties”的左侧边框,单击“Project Facets”,打开“Project F ...

  6. HDU 6397(2018多校第8场1001) Character Encoding 容斥

    听了杜教的直播后知道了怎么做,有两种方法,一种构造函数(现在太菜了,听不懂,以后再补),一种容斥原理. 知识补充1:若x1,x2,.....xn均大于等于0,则x1+x2+...+xn=k的方案数是C ...

  7. 定时node-schedule 模块的使用

    You can install using npm. npm install node-schedule var schedule = require('node-schedule'); var j ...

  8. css选择器的一些说明

    标签选择器.ID选择器.类选择器 这三个很简单,没啥可说的. 子选择器得说一下. <ul class="food">    <li>水果        &l ...

  9. 数字图像处理实验(6):PROJECT 04-02,Fourier Spectrum and Average Value 标签: 图像处理MATLABfft 2017-05-07 23:1

    实验要求: Objective: To observe the Fourier spectrum by FFT and the average value of an image. Main requ ...

  10. ARC061E Snuke's Subway Trip

    传送门 题目大意 已知某城市的地铁网由一些地铁线路构成,每一条地铁线路由某一个公司运营,该城市规定:若乘坐同一公司的地铁,从开始到换乘只需要一块钱,换乘其他公司的价格也是一块钱,问从1号地铁站到n号地 ...