hdu 5596 GTW likes gt
题目链接: 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的更多相关文章
- HDU 5596 GTW likes gt 倒推
GTW likes gt 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5596 Description Long long ago, there w ...
- HDU 5596 ——GTW likes gt——————【想法题】
GTW likes gt Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- HDU 5597 GTW likes function 打表
GTW likes function 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5596 Description Now you are give ...
- HDU 5597 GTW likes function 欧拉函数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5597 题意: http://bestcoder.hdu.edu.cn/contests/contes ...
- Hdu 5595 GTW likes math
题意: 问题描述 某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学<从自主招生到竞赛>.然而书里的题目太多了,GTW还有很多事情要忙(比如把妹),于是他把那些题目交给了你.每一道题 ...
- hdu 5595 GTW likes math(暴力枚举查询)
思路:直接暴力枚举区间[l,r]的整数值,然后max和min就可以了. AC代码: #pragma comment(linker, "/STACK:1024000000,1024000000 ...
- HDU 5596/BestCoder Round #66 (div.2) GTW likes math 签到
GTW likes math Memory Limit: 131072/131072 K (Java/Others) 问题描述 某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学<从自主 ...
- hdu-5596 GTW likes gt(模拟+优先队列)
题目链接: GTW likes gt Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- HDU5597/BestCoder Round #66 (div.2) GTW likes function 打表欧拉函数
GTW likes function Memory Limit: 131072/131072 K (Java/Others) 问题描述 现在给出下列两个定义: f(x)=f_{0}(x)=\ ...
随机推荐
- 摘抄转载前辈们的Java集合类总结
本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...
- window.onload和$(document).ready()的区别
window.onload和$(document).ready()的区别,如下表所示 window.onload $(document).ready() 执行时间 在页面所有内容(图片.文件)加载 ...
- Hybrid技术的设计与实现(转)
浅谈Hybrid技术的设计与实现 前言 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发效率的要求,这个时候使用IOS&Andriod开发一个APP似乎成本有点过高了,而 ...
- CSS颜色代码
颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义.对光源进行设置的最低值可以是 0(十六进制 00).最高值是 255(十六进制 FF).从 0 到 25 ...
- Node.js中的Session,不要觉得简单哦。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...
- [WCF]DomainServices客户端操作异常处理
作为个人备忘,不做排版.此扩展函数用于DomainServices的Load及SubmitChanges时处理Error信息,包括验证消息.实体冲突. public static string ToE ...
- UICollectionView 自定义组头组尾的XIB方法
UICollectionView的加载方式和Tableview很像,基本上加载的方法都差不多,尤其是它的数据源的方法和代理方法基本上类似,只不过是名字上有点细微的差别而已.这里面不赘述. 1. UIC ...
- Java Web开发框架
http://blog.csdn.net/csolo/article/details/51965096
- iOS 里面 Swift与Objective-C混编,Swift与C++混编的一些比较
即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的.那你只能去问问”度娘“或“狗哥”怎么用Swift调用C++算法. 一,C,C++, Objective-C,S ...
- 我认识的log4j开源日志
Log4j 在java中如何配置log4j!! 步骤: ①引入jar包,推荐新建一个lib文件夹,用来装所有的jar包(还要进行下图内的操作) 之后项目中就会多出一个引入外部Library的项目 ②创 ...