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)=\ ...
随机推荐
- 总结Android中遇见的OOM
一 .Android应用中内存泄漏几种的原因: 1.单例模式导致的内存泄漏: 当调用getInstance时,如果传入的context是Activity的context.只要这个单例没有被释放,这个A ...
- 纯html、css3、js的时钟
之前在网上看了一些使用js写的时钟,但感觉实现的方法有点麻烦,所以就自己重新写了一个例子,样子有点丑,但方法比较简单,大家就凑合看吧 其中采用的主要方法是原生js里面的Data(时期)对象,以及它的. ...
- Windows Phone 二十、陀螺仪
API 示例 // 获取陀螺仪传感器监听对象 Gyrometer gyrometer = Gyrometer.GetDefault(); if (gyrometer == null) { await ...
- JsonUtil工具类
package comm; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collec ...
- hdu 2037 今年暑假不AC
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- rc.local文件
rc.local用于自启动一些服务. 查看有哪些自启动服务: cat /etc/rc.local
- MATLAB绘图
matlab绘制散点图 clc,clear x=[11.9,11.5,14.5,15.2,15.9,16.3,14.6,12.9,15.8,14.1]; y=[196.84,196.84,197.14 ...
- 响应式内容滑动插件jQuery.bxSlider
bxSlider特性 1.充分响应各种设备,适应各种屏幕: 2.支持多种滑动模式,水平.垂直以及淡入淡出效果: 3.支持图片.视频以及任意html内容: 4.支持触摸滑动: 5.支持Firefox,C ...
- Canvas绘图中的路径描边与填充
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...
- web app响应式字体设置!rem之我见
之前做沙漠教育的时候,直接以设计图为准,然后强暴式,缩放处理.简单.直接,粗暴!但是,开发快.……一劳永逸! 但那是,现在开发,作为业界良心:是不能那么做的!(那个是被逼的啊 首先看代码: @medi ...