hdu4325-Flowers-2012 Multi-University Training Contest 3-题解
来源:互联网 发布:淘宝网站设计 编辑:程序博客网 时间:2024/06/15 19:53
Brief Description:
有一些花,给定每朵花的开花时间和凋零时间,现在给出一些询问,询问在某个时刻有多少花处于开花状态的。
Analysis:
经典的“区间更新,单点查询”,可以用线段树或树状数组做,推荐用树状数组。
由于题目规模不大,所以离散化时用Map比较方便。
具体见以下代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <map>#include <algorithm>#define M 100005using namespace std;int hash[M*4],s[M],t[M],qry[M],c[M*4];int n,m;inline int lowbit(int x){ return x & (-x);}int cnt;// 区间更新void add(int x,int m){ while(x){ c[x] += m; x -= lowbit(x); }}// 单点查询int sum(int x){ int ret = 0; // return while(x <= cnt){ ret += c[x]; x += lowbit(x); } return ret;}int main(){ int cas,ta=1; scanf("%d",&cas); while(cas--){ int i,j,num=0; scanf("%d%d",&n,&m); for(i=0; i<n; i++){ scanf("%d%d",s+i,t+i); hash[num++] = s[i]; hash[num++] = t[i]; } for(i=0; i<m; i++){ scanf("%d",qry+i); hash[num++] = qry[i]; } sort(hash,hash+num); int pre = -1; cnt = 0; map<int,int>Map; for(i=0; i<num; i++){ if(hash[i] != pre){ pre = hash[i]; Map[hash[i]] = ++cnt; } } memset(c,0,sizeof(c)); for(i=0; i<n; i++){ add(Map[s[i]]-1,-1); add(Map[t[i]],1); } printf("Case #%d:\n",ta++); for(i=0; i<m; i++){ printf("%d\n",sum(Map[qry[i]])); } } return 0;}
- hdu4325-Flowers-2012 Multi-University Training Contest 3-题解
- hdu4323-Magic Number-2012 Multi-University Training Contest 3题解
- 2012 Multi-University Training Contest 3
- hdu4324-Triangle LOVE-2012 Multi-University Training Contest题解
- hdu4329-MAP-Multi-University Training Contest 3-题解
- 2016 Multi-University Training Contest 3题解报告
- 2016 Multi-University Training Contest 3 题解(待续)
- 2014 Multi-University Training Contest 7 题解
- 2014 Multi-University Training Contest 8题解
- 2016 Multi-University Training Contest 4 题解
- 2016 Multi-University Training Contest 5 题解
- 2016 Multi-University Training Contest 8 题解
- 2014 Multi-University Training Contest 1 题解
- 2012 Multi-University Training Contest
- 2014 Multi-University Training Contest 3 简要题解 by——Fudan University
- 2014 Multi-University Training Contest 3 简要题解 by——Fudan University
- 2012 Multi-University Training Contest 3[hdu4320~4330]
- 2012 Multi-University Training Contest 3:Arcane Numbers 1
- 实例讲解css中的行为:expression和behavior(behavior的路径问题)
- github for Windows使用介绍
- 使用c#操作word2003
- 设计模式之单例模式
- Linux 错误积累
- hdu4325-Flowers-2012 Multi-University Training Contest 3-题解
- PHP手册-数组下标
- 通过pl_sql 把 oracle导出用户空间下的表的建表语句
- 黄仁勋传奇
- 雷锋读图:玩电子游戏能减肥 “坏习惯”也有益身心健康
- 使用MDS实现用户个性化设置
- [DB2]在本地数据库目录或系统数据库目录中已经存在数据库别名""的解决办法
- Java深度历险(三)——Java线程:基本概念、可见性与同步
- DLP 选购指南及四款产品评测