题目链接: hdu 5596

  题意不难懂(虽然我还是看了好久)大概就是说 n 个人排成一列,分成两组, 第 i 秒时第 i 个人会消灭掉前面比他 b[i] 值低的且和他不同组的人,c[i] 表示第 c[i] 秒时前面 1~c[i] 个人每个人的 b[i] 值都会 +1,问你最后还会存活几个人。

  一开始看到它的数据范围我在想会不会需要用到树状数组或线段树去优化呢?(惯性思维改不了 -.-||),后来觉得好像有其他的简单的方法,认真想了好久然后试了一下果然可以:离线处理(一开始以为它强制在线,后来发现离线还是可以的),先处理所有 c[i] 的值,也就是对于每个 c[i],都把 b[1~c[i]] 的值 +1,当然两重循环是不行的,需要找下规律然后排序二分优化到 nlogn。预处理好后逆序枚举,维护两个变量 Max_0 和 Max_1,分别表示两组中的最大的 b[i] 值,然后每枚举到第 i 个数时,看 b[i] 是否 >= Max_?(第 i 个人对面的组中最大那个 b[i] 值,当 b[i] 组号为 0 时,此时比较 b[i] >= Max_1,否则比较 b[i] >= Max_0),若大于等于的话,表示 b[i] 后面的敌方人里面没有能杀死 b[i] 的,此时 ans+ 1;然后就是维护对应的 Max_ 值了。

代码如下:

 #include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define For(i,s,t) for(int i = s; i < t; ++i)
const int N = ; int b[N], c[N];
int sign[N]; template<typename T>
int find(const T * const c, int low, int up, const T &x) {
int mid;
while(low <= up) {
mid = low + ((up - low) >> );
if(x < c[mid] || !(c[mid] < x)) up = mid - ;
else low = mid + ;
}
return low;
} int main() {
int t,n,m,tmp;
scanf("%d",&t);
while(t--) {
scanf("%d %d",&n,&m);
For(i, , n + )
scanf("%d %d", sign + i, b + i);
For(i, , m + )
scanf("%d", c + i);
sort(c + , c + m + ); For(i, , n + ) {
int id = find(c, , m, i);
b[i] += m + - id;
}
int ans = ;
int Max_0 = , Max_1 = ;
for(int i = n; i >= ; --i) {
if(sign[i] == ) {
if(b[i] >= Max_1) ++ans;
Max_0 = max(Max_0, b[i]);
}
else if(i[sign] == ) {
if(b[i] >= Max_0) ++ans;
Max_1 = max(Max_1, b[i]);
}
}
printf("%d\n", ans);
}
return ;
}

  二分函数写成模板不过是无聊(0.0)

  1A 掉的,感觉还是挺兴奋的,已经好久没刷过题,好久没有过这种感觉了。从1月初期末考过后就一直忙,bc 不知道多少周没去碰过了,自从晋级到 div1 后竟然一场真正的 div1 都没去打过,真是惭愧~~趁下班公司人少少时才敢刷题放松下,kubi 的实习生活……估计这几周的周末是没有的了,明天还得继续撸码从0开始学xx框架。

***************************************************2016年11月27日更新****************************************************

上面的二分查找函数可以优化下,把判断条件的大小比较写成

if(c[mid] < x)  low = mid + 1;
else  up = mid - 1;

这样子就能省去一个不必要的比较步骤了,逻辑也更清晰一些。

hdu 5596 GTW likes gt的更多相关文章

  1. HDU 5596 GTW likes gt 倒推

    GTW likes gt 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5596 Description Long long ago, there w ...

  2. HDU 5596 ——GTW likes gt——————【想法题】

    GTW likes gt Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  3. HDU 5597 GTW likes function 打表

    GTW likes function 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5596 Description Now you are give ...

  4. HDU 5597 GTW likes function 欧拉函数

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5597 题意: http://bestcoder.hdu.edu.cn/contests/contes ...

  5. Hdu 5595 GTW likes math

    题意: 问题描述 某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学<从自主招生到竞赛>.然而书里的题目太多了,GTW还有很多事情要忙(比如把妹),于是他把那些题目交给了你.每一道题 ...

  6. hdu 5595 GTW likes math(暴力枚举查询)

    思路:直接暴力枚举区间[l,r]的整数值,然后max和min就可以了. AC代码: #pragma comment(linker, "/STACK:1024000000,1024000000 ...

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

    GTW likes math  Memory Limit: 131072/131072 K (Java/Others) 问题描述 某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学<从自主 ...

  8. hdu-5596 GTW likes gt(模拟+优先队列)

    题目链接: GTW likes gt  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 131072/131072 K (Java/Othe ...

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

    GTW likes function      Memory Limit: 131072/131072 K (Java/Others) 问题描述 现在给出下列两个定义: f(x)=f_{0}(x)=\ ...

随机推荐

  1. 变量的解构赋值////////////z

    变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 圆括号问题 用途 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值, ...

  2. ios下fixed回复框bug的解决方案

    前几天做一个移动端的页面,要加个像微信那样附着在底部的回复框,按照做PC端网页的思路,首先是用fixed,在安卓上测了一下是好的,结果到朋友的iphone6p上就不行了,点击输入框之后它总会跳到屏幕中 ...

  3. 在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth

    http://www.cnblogs.com/xiaoyaojian/p/4611660.html

  4. iOS 收起键盘的几种方式

    iOS 收起键盘的几种方式 1.一般的view上收起键盘 // 手势 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ ...

  5. Linux下取代top的进程管理工具 htop

    一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for ...

  6. Rest Post示例(java服务端、python客户端)

    前提:服务端是现成的,java.springMVC.resttemplate.jboss等:突然有个需要,要在windows上开发一个客户端,作用是定期向服务端上传文件.想了想,如果客户端写一个jav ...

  7. [转]Java中Map的用法详解

    转载地址:http://www.zhixing123.cn/jsp/30113.html Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictio ...

  8. JAVA 中XML的解析

    XML:  可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...

  9. 为现有图像处理程序添加读写exif的功能

    为现有图像处理程序添加读取exif的功能 exif是图片的重要参数,在使用过程中很关键的一点是exif的数据能够和图片一起存在.exif的相关功能在操作系统中就集成了,在csharp中也似乎有了实现. ...

  10. PHP Problem with the SSL CA cert (path? access rights?)

    1.php使用curl模块报错问题 开发遇到问题,直接使用系统的curl命令正常,使用php的curl模块报错 错误:PHP Problem with the SSL CA cert (path? a ...