BestCoder Round #66 (div.2)B GTW likes gt

思路:一个O(n)O(n)的做法。我们发现b_1,b_2,...,b_xb?1??,b?2??,...,b?x??都加11就相当于b_{x+1},b_{x+2},...,b_nb?x+1??,b?x+2??,...,b?n??都减11。然后我们可以倒着做,记一下最大值,如果遇到了修改操作,就把最大值减11,然后判断一下这个人会不会被消灭掉,然后再更新一下最大值。

 1 #define cn(i,p,q) for(int i=p;i<=q;i++)
 2 #define cn1(i,p,q) for(int i=p;i>=q;i--)
 3 #define pr(x) printf("%d\n",x)
 4 #define prr(x) printf("%d",x)
 5 #define prrr(x) printf(" %d",x)
 6 #define sc(x) scanf("%d",&x)
 7 #define scc(x) scanf("%lf",&x)
 8 #define pr1(x) printf("%.2f\n",x)
 9 #include<stdio.h>
10 #include<algorithm>
11 #include<iostream>
12 #include<string.h>
13 #include<stdlib.h>
14 #include<math.h>
15 int maxx[2][1];//两种情况分别表示两个不同队中从后往前时最大值
16 typedef struct pp
17 {
18     int xx;
19     int yy;
20     int flag;
21 } ss;
22 const int N=1e6+10;
23 ss  a[N];
24 int  b[N];//记录在何时放技能的次数
25
26 using namespace std;
27 int main(void)
28 {
29     int n,m,l,k,s;
30     sc(n);
31     int x;
32     int y;
33     while(n--)
34     {
35         sc(x);
36         sc(y);
37         memset(b,0,sizeof(b));
38         memset(maxx,0,sizeof(maxx));
39         int qq=0;
40         cn(i,1,x)
41         {
42             int vp;
43             int va;
44             sc(vp);
45             sc(va);
46             a[i].xx=vp;
47             a[i].yy=va;
48             a[i].flag=0;
49         }
50         cn(i,1,y)
51         {
52             sc(k);
53             b[k]++;
54         }
55         maxx[a[x].xx][0]=a[x].yy;//最后一个先初始化最大
56         cn1(i,x-1,1)
57         {
58             cn(j,0,1)
59             {
60                 maxx[j][0]-=b[i];//减放技能所减少的
61             }
62             int zz=(a[i].xx+1)%2;
63             if(a[i].yy<maxx[zz][0])
64             {
65                 qq++;
66             }//如果当前的小于另一组的最大值这个点就会消失
67             maxx[a[i].xx][0]=max(maxx[a[i].xx][0],a[i].yy);//更新同一组的最大值
68
69         }
70         int zk=x-qq;
71         pr(zk);
72     }
73     return 0;
74 }
时间: 2024-10-08 23:22:42

BestCoder Round #66 (div.2)B GTW likes gt的相关文章

HDU 5596/BestCoder Round #66 (div.2) GTW likes math 签到

GTW likes math Memory Limit: 131072/131072 K (Java/Others) 问题描述 某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学<从自主招生到竞赛>.然而书里的题目太多了,GTW还有很多事情要忙(比如把妹),于是他把那些题目交给了你.每一道题目会给你一个函数f(x)=ax^2+bx+cf(x)=ax?2??+bx+c,求这个函数在整数区间[l,r][l,r]之间的最值. 输入描述 第一行一个整数T,表示数据组数.(T\leq 1000T≤

HDU5597/BestCoder Round #66 (div.2) GTW likes function 打表欧拉函数

GTW likes function Memory Limit: 131072/131072 K (Java/Others) 问题描述 现在给出下列两个定义: f(x)=f_{0}(x)=\sum_{k=0}^{x}(-1)^{k}2^{2x-2k}C_{2x-k+1}^{k},f_{n}(x)=f(f_{n-1}(x))(n\geq 1)f(x)=f?0??(x)=∑?k=0?x??(−1)?k??2?2x−2k??C?2x−k+1?k??,f?n??(x)=f(f?n−1??(x))(n≥1

BestCoder Round #66 (div.2)

构造 1002 GTW likes gt 题意:中文题面 分析:照着题解做的,我们可以倒着做,记一下最大值,如果遇到了修改操作,就把最大值减1,然后判断一下这个人会不会被消灭掉,然后再更新一下最大值.不知道其他的做法是怎么样的 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; #define lson l, mid, o << 1 #define rs

BestCoder Round #66 (div.2) hdu5592

GTW likes math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 942    Accepted Submission(s): 426 Problem Description After attending the class given by Jin Longyu, who is a specially-graded t

BestCoder Round #66 (div.2) 1002

GTW likes gt Accepts: 132 Submissions: 772 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) 问题描述 从前,有nn只萌萌的GT,他们分成了两组在一起玩游戏.他们会排列成一排,第ii只GT会随机得到一个能力值b_ib?i??.在第ii秒的时候,第ii只GT可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的GT. 为了使游戏更加有趣,

BestCoder Round #11 (Div. 2) 题解

HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 302    Accepted Submission(s): 229 Problem Description Bob and Alice got separated in the Square, they agreed that if they

DP BestCoder Round #50 (div.2) 1003 The mook jong

题目传送门 1 /* 2 DP:这题赤裸裸的dp,dp[i][1/0]表示第i块板放木桩和不放木桩的方案数.状态转移方程: 3 dp[i][1] = dp[i-3][1] + dp[i-3][0] + 1; dp[i][0] = dp[i-1][1] + dp[i-1][0]; 4 比赛时二维dp写搓了,主要是边界情况的判断出错,比如dp[3][1] = 1,因为第3块放了木桩,其他地方不能再放,dp[3][0]同理 5 解释一下dp[i][1]的三种情况,可能是前面相隔2个放的方案或者是不放的

计算几何(水)BestCoder Round #50 (div.2) 1002 Run

题目传送门 1 /* 2 好吧,我不是地球人,这题只要判断正方形就行了,正三角形和正五边形和正六边形都不可能(点是整数). 3 但是,如果不是整数,那么该怎么做呢?是否就此开启计算几何专题了呢 4 */ 5 /************************************************ 6 * Author :Running_Time 7 * Created Time :2015-8-8 19:54:14 8 * File Name :B.cpp 9 ************

BestCoder Round #11 (Div. 2)题解集合

Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 155    Accepted Submission(s): 110 Problem Description Bob and Alice got separated in the Square, they agreed that if they get sepa