树状数组+STL FZU 2029 买票问题
题意:中文题面
分析:隔了一个考试周再做,开始没有什么思路,感觉能用线段树/树状数组维护,树状数组维护最小值不会去写线段树,结果超时.后来发现只要维护前缀几个人以及用优先队列/set维护最小忍受值,加上队列编号pop就能实现全部功能了.
//#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <map>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std; typedef long long ll;
typedef pair<int, int> P;
const int N = 1e5 + 5;
const int INF = 0x3f3f3f3f;
struct BIT {
int sum[N], sz;
void init(int n) {
sz = n;
memset (sum, 0, sizeof (sum));
}
void updata(int i, int x) {
while (i <= sz) {
sum[i] += x;
i += i & (-i);
}
}
int query(int i) {
int ret = 0;
while (i > 0) {
ret += sum[i]; i -= i & (-i);
}
return ret;
}
}bit;
bool vis[N]; int main(void) {
int T;
while (scanf ("%d", &T) == 1) {
priority_queue<P, vector<P>, greater<P> > que; map<int, int> id;
char str[10]; int left = 1, right = 0, n = 100000;
bit.init (n);
memset (vis, false, sizeof (vis));
while (T--) {
scanf ("%s", &str);
if (str[0] == 'a') {
int a, b; scanf ("%d%d", &a, &b);
id[a] = ++right;
que.push (make_pair (b, id[a]));
bit.updata (id[a], 1);
}
else if (str[0] == 'c') {
int x, y; scanf ("%d%d", &x, &y);
if (id[x] < 1 || id[x] > right || vis[id[x]]) continue;
int num = bit.query (id[x] - 1);
printf ("%d\n", num);
if (num > y) {
vis[id[x]] = true;
bit.updata (id[x], -1);
}
}
else if (str[0] == 'l') {
while (!que.empty ()) {
P p = que.top (); que.pop ();
int aa = p.second, bb = p.first;
if (vis[aa]) continue;
vis[aa] = true;
bit.updata (aa, -1);
break;
}
}
else if (str[0] == 'p') {
while (left <= right && vis[left]) left++;
if (left > right) continue;
vis[left] = true;
bit.updata (left, -1);
left++;
}
}
} return 0;
}
树状数组+STL FZU 2029 买票问题的更多相关文章
- FZU 2029 买票问题 树状数组+STL
题目链接:买票问题 思路:优先队列维护忍耐度最低的人在队首,leave操作ok. vis数组记录从1到n的编号的人们是不是在队列中,top维护队首的人的编号.pop操作搞定. 然后,check操作就是 ...
- FZU Problem 2029 买票问题(树状数组)
当我看到题目是5秒的时候,压根没有想树状数组,一直奔着模拟队列去想了,最后也没搞定,赛后看到大神的题解才恍然大悟,原来如此,题目中有明显的暗示,求前n项和,骤然感叹,自己太low... 果然还是要多做 ...
- POJ 2029 Get Many Persimmon Trees (二维树状数组)
Get Many Persimmon Trees Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I ...
- P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...
- poj 2029 二维树状数组
思路:简单树状数组 #include<map> #include<set> #include<cmath> #include<queue> #inclu ...
- POJ 2029 Get Many Persimmon Trees(DP||二维树状数组)
题目链接 题意 : 给你每个柿子树的位置,给你已知长宽的矩形,让这个矩形包含最多的柿子树.输出数目 思路 :数据不是很大,暴力一下就行,也可以用二维树状数组来做. #include <stdio ...
- FZU 2176 easy problem (DFS序+树状数组)
对于一颗树,dfs遍历为每个节点标号,在进入一个树是标号和在遍历完这个树的子树后标号,那么子树所有的标号都在这两个数之间,是一个连续的区间.(好神奇~~~) 这样每次操作一个结点的子树时,在每个点的开 ...
- FZU 2225 小茗的魔法阵 扫描线+树状数组
这个题和一个CF上的找"Z"的题差不多,都是扫描线+树状数组 从右上角的主对角线开始扫描,一直扫到左下角,每次更新,右延伸等于该扫描线的点,注意在其所在的树状数组更新就好了 时间复 ...
- POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
<题目链接> 题目大意: 给你一个H*W的矩阵,再告诉你有n个坐标有点,问你一个w*h的小矩阵最多能够包括多少个点. 解题分析:二维树状数组模板题. #include <cstdio ...
随机推荐
- chaper3_exerise_Uva10340_子字串
#include<iostream> #include<string> #include<cstring> using namespace std; int Fin ...
- js 删除确定
"<td><a href='shanchu.php?c={$v[0]}' onclick=\"return confirm('确定删除么?')\"> ...
- Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建
本文主要分三部分,分别是:后台核心业务逻辑.桥梁辅助控制和前台显示页面. 本Web开发环境综合了多种工具,包括Maven包管理与编译工具.Dubbo分布式服务框架.MyBatis数据持久化工具.Lin ...
- Linq to json
Json.Net系列教程 4.Linq To JSON 一.Linq to JSON是用来干什么的? Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JS ...
- 常用的数据统计Sql 总结(转)
转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与 ...
- Chrome Crx 插件下载
扯蛋的GFW屏蔽了google域导致下载Chrome插件加载失败,本人想收集以些chrome的Crx插件,可供直接下载 XMarks - 在不同电脑不同浏览器之间同步书签 下载地址: http:/ ...
- Qt Designer怎样加入资源文件
Qt Designer中如果在设计UI界面的时候要加入一些图素,图标等资源的时候是不能直接添加进去的,需要在Qt开发目录下编写QRC文件 qrc文件格式如下: <RCC> <qres ...
- 【JAVA网络流之TCP与UDP 】
一.ServerSocket java.lang.Object |-java.net.ServerSocket 有子类SSLServerSocket. 此类实现服务器套接字.服务器套接字等待请求通过网 ...
- SQL Server 2014 BI新特性(三)Power Query和Power Map功能预览
Power Query和Power Map是微软前不久在WPC上发布的Power BI中新的针对Excel的功能.借助这两样功能,自助式BI将更方便你发现和处理数据并且丰富数据的可视化功能. Powe ...
- Storyboards
这里是吐槽时间,换掉了mac默认的输入法,出发点只有一个,就是切换中英文输入的时候相当不爽.也许是习惯了其他各大输入法的一键切换,而又没有找到自带输入法可设置的地方. Segue 以前我们使用navi ...