BestCoder36 1002.Gunner 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5199
题目意思:给出鸟在树上的高度,以及射击到的高度,问每次射击能射中鸟的数量
用 vector 里面的 lower_bound() 函数求出大于等于某个 x 的下标,upper_bound() 求出大于某个 x 的下标,然后相减就是射中的数量了。vis[] 数组是防止再次击中相同高度的,明显是 0 嘛~~~。
因为是 huge input ,用到 get_int() 来加快输入(不过貌似没啥用 O.O)。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <algorithm> using namespace std; const int maxn = 1e6 + ;
int vis[maxn];
vector<int>::iterator p1, p2;
vector<int> h; inline int get_int()
{
char ch = getchar();
while (ch < '' || ch > '') {
ch = getchar();
}
int ret = ;
while (ch >= '' && ch <= '') {
ret = ret * + ch - '';
ch = getchar();
}
return ret;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE int n, m, q, hi;
while (scanf("%d%d", &n, &m) != EOF) {
h.clear();
for (int i = ; i < n; i++) {
hi = get_int();
h.push_back(hi);
} sort(h.begin(), h.end()); memset(vis, , sizeof(vis));
for (int i = ; i < m; i++) {
q = get_int();
p1 = lower_bound(h.begin(), h.end(), q);
p2 = upper_bound(h.begin(), h.end(), q); int pos1 = p1 - h.begin();
int pos2 = p2 - h.begin();
if (pos1 <= n && pos2 <= n && pos1 != pos2) {
int t1 = h[pos1], t2 = h[pos2];
if (t1 == q) {
if (!vis[pos1]) {
printf("%d\n", pos2-pos1);
vis[pos1] = ;
}
else
printf("0\n");
}
}
else
printf("0\n");
}
}
return ;
}
BestCoder36 1002.Gunner 解题报告的更多相关文章
- BestCoder21 1002.Formula 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5139 题目意思:给出一个数 n,求出 f(n). 可以发现有以下规律: f(1) = 1! f(2) ...
- 【九度OJ】题目1176:树查找 解题报告
[九度OJ]题目1176:树查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1176 题目描述: 有一棵树,输出某一深度的所有节点 ...
- 【九度OJ】题目1445:How Many Tables 解题报告
[九度OJ]题目1445:How Many Tables 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1445 题目描述: ...
- 【九度OJ】题目1109:连通图 解题报告
[九度OJ]题目1109:连通图 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1109 题目描述: 给定一个无向图和其中的 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
- 习题:codevs 2822 爱在心中 解题报告
这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
随机推荐
- git SSH keys
An SSH key allows you to establish a secure connection between your computer and GitLab. Before gene ...
- [译]Create a Web API in MVC 6
原文: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6 ASP.NET 5.0的一个目标是合并MV ...
- Google翻译请求(难点是tk参数)
业务需求需要将一些文字翻译一下··· 但是直接调用接口收费啊啊啊啊(貌似是前几百万字免费,然后就开始收费了)···· 就想研究一下Google翻译接口... 想模拟Google向服务器发送一个Http ...
- VTK初学一,Pro文件的配置
1. pro文件的配置 TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG += qt QT += core gui greate ...
- linux下gedit读取txt乱码解决办法
修改一下gedit的设置来让它显示的txt不再是乱码: 你可以通过以下步骤,使 gedit 正确显示中文编码文件. 按下 Alt-F2,打开“运行应用程序”对话框.在文本框中键入“gconf-edit ...
- 用H5的canvas做时钟
<!doctype html><html> <head> <meta charset="UTF-8"> <title>D ...
- Android三种消息提示
Android消息提示有三种方式: 1 使用Toast显示消息提示框 Toast类用于在屏幕中显示一个提示信息框,该消息提示框没有任何控制按钮,并且不会获得焦点,经过一定时间后自动消失.通常用于显示 ...
- JS对于数据常见操作
var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; $.each(_mozi,function(key,val){//先key 后值 循环 console.log(ke ...
- [codevs1029]遍历问题
[codevs1029]遍历问题 试题描述 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中 ...
- linux 权限操作
添加用户 命令格式:useradd 选项 用户名 -g 缺省组(不写则默认为用户名组) -G 所属组(添加到多个用户组,逗号隔开) -c 描述信息 -d 指定家目录 useradd –g aa bb ...