csu 1757(贪心或者树状数组)
1757: 火车入站
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 209 Solved: 51
[Submit][Status][Web Board]
Description
火车站人们总是在站台等待列车进站,一个站台有火车停留的时候就不能有其他火车进入,今天有n辆火车经过,已知它们进站时间Si以及出站时间Ti,进站时间到出站时间之间火车必须有一个站台给它停靠,问让所有火车都能按时停靠,至少要安排多少个站台给这些火车
Input
第一行输入一个正整数T,表示数据组数
每组数据第一行输入一个正整数n,表示火车数量(n<=10000)
接下来n行,每行输入2个正整数Si,Ti,表示第i辆火车的进站时间和出站时间(Si<Ti<1e9)
Output
每组数据输出至少需要安排多少个站台
Sample Input
1 3 1 3 3 4 4 6
Sample Output
2 因为最多20000个点,树状数组的离散化一下,维护区间,最后求点的最大值.
#include <iostream> #include <cstring> #include <stdio.h> #include <stdlib.h> #include <algorithm> using namespace std; const int N = 100005; int x[N],a[N],b[N]; int c[N],n; int lowbit(int i){return i&(-i); }void update(int idx,int v){for(int i=idx;i<=2*n;i+=lowbit(i)){c[i]+=v;} } int getsum(int idx){int sum = 0;for(int i=idx;i>=1;i-=lowbit(i)){sum+=c[i];}return sum; } int main() {int tcase;scanf("%d",&tcase);while(tcase--){memset(c,0,sizeof(c));scanf("%d",&n);int cnt = 1;for(int i=1;i<=n;i++){scanf("%d%d",&a[i],&b[i]);x[cnt++] = a[i];x[cnt++] = b[i];}int k = 2;sort(x+1,x+cnt);for(int i=2;i<cnt;i++){if(x[i]==x[i-1]) continue;x[k++] = x[i];}for(int i=1;i<=n;i++){int l = lower_bound(x+1,x+k,a[i])-(x);int r = lower_bound(x+1,x+k,b[i])-(x);update(l,1);update(r+1,-1);}int MAX = -1;for(int i=1;i<=2*n;i++){MAX = max(MAX,getsum(i));}printf("%d\n",MAX);}return 0; }
贪心策略:为起点和终点排序,遇到起点的话多一个站台,遇见终点的话少一个站台。中间过程中最大的值即为结果。
#include <iostream> #include <cstring> #include <stdio.h> #include <stdlib.h> #include <algorithm> using namespace std; const int N = 100005; int a[N],b[N],n;int main() {int tcase;scanf("%d",&tcase);while(tcase--){scanf("%d",&n);for(int i=0; i<n; i++)scanf("%d%d",&a[i],&b[i]);sort(a,a+n);sort(b,b+n);int ans=0,sum=0;int j=0,i=0;while(i!=n && j!=n){if(b[j]<a[i]){sum--;j++;}else{sum++;i++;}ans=max(ans,sum);}printf("%d\n",ans);}return 0; }
转载于:https://www.cnblogs.com/liyinggang/p/5766948.html
csu 1757(贪心或者树状数组)相关推荐
- CodeForces 1610H Squid Game(延迟贪心 + 构造 + 树状数组)
problem 洛谷链接 solution 考虑重新随便钦定一个点为"根",并且强制根必须是关键点. 则所有 x−yx-yx−y 不是直系祖先-子代的要求(要求Ⅰ),即 xxx 不 ...
- 【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅
这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着 ...
- 【HDU - 6203】ping ping ping(lca+贪心思想,对lca排序,树状数组差分)
题干: 给出一个n+1个点的树,以及p个点对,需要断开一些点,使得这p个点对路径不连通.输出应该断开的最少点数. 解题报告: 从那p个点对入手的话:首先考虑只有一对点的话,肯定是这条路径上的随便一个点 ...
- bzoj 1106: [POI2007]立方体大作战tet(贪心+树状数组)
1106: [POI2007]立方体大作战tet Time Limit: 10 Sec Memory Limit: 162 MB Submit: 785 Solved: 574 [Submit][ ...
- LIS最长上升子序列详解(动态规划、贪心+二分、树状数组)
1.摘要: 关于LIS部分,本篇博客讲一下LIS的概念定义和理解,以及求LIS的三种方法,分别是O(n^2)的DP,O(nlogn)的二分+贪心法,以及O(nlogn)的树状数组优化的DP,最后附上几 ...
- [队内测试Day10.12]贪心+状压+分块+树状数组
T1 codevs2169零用钱 正解贪心. 在使用钞票最少前提下保证浪费的钱数最少 保证第一条,在还没达到规定钱数时尽可能使用大面值钞票 保证第二条,在现有钞票不满足要求前提下,尽量选面值小的放 综 ...
- P7408-[JOI 2021 Final]ダンジョン 3【贪心,树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P7408 题目大意 一个有n+1n+1n+1层的地牢,从iii到i+1i+1i+1层要AiA_iAi点能量,第ii ...
- 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...
- Codeforces Round #401 (Div. 1) C(set+树状数组)
题意: 给出一个序列,给出一个k,要求给出一个划分方案,使得连续区间内不同的数不超过k个,问划分的最少区间个数,输出时将k=1~n的答案都输出 比赛的时候想的有点偏,然后写了个nlog^2n的做法,T ...
最新文章
- Python 格式化输出 ( 颜色 )
- 最长回文子串--马拉车(?)
- 原生JS上传图片接收服务器端图片并且显示图片(主要描述blob类型)
- python38怎么用_Python基础练习实例38(数组操作)
- 【笔试记录】2021/3/10阿里
- vue-cli3项目移动设备调试访问报错WDS:Disconnected,无法自动刷新或模块热替换
- haproxy+keepalived实现高可用K8S集群部署
- Mac(不限于)中几个有内涵的工具
- 哈理工OJ 1926 函数式计算
- 2022-2028年中国电力载波通信行业市场行情动态及竞争战略分析报告
- Android上Excel编辑器,Excel表格编辑器下载-Excel表格编辑器appv1.1.02 最新版-腾牛安卓网...
- 酒店客房管理系统安排 Java项目 毕业设计项目不用愁
- 为什么c语言输出到文件慢,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
- IDEA在Mac下格式化代码快捷键
- 用全开源的协同OA办公平台,可以自己搭建OA啦!
- 采集网易云上面的MV保存方法
- 计算机组成原理基础知识总结
- 如何快速查看bili上的视频学习
- HTML5新特性小结
- 电子墨水屏(电子纸)科普篇
热门文章
- pmp学习资料_PMP怎样叫通过考试,拿到证书?
- 企业网络推广期间对于易流失用户群体企业网络推广有话说
- 浅析营销型网站SEO优化的四大原则!
- 网站优化数据分析不建议你遗落这三点
- android 4.2 桌面快捷方式,Android 添加桌面快捷方式操做
- c语言行末不要输出多余空格,新人提问:如何将输出时每行最后一个空格删除...
- 思科ucs-b系列服务器,思科统一计算系统UCS B系列刀片推荐
- cnn风格迁移_快速图像风格迁移思想在无线通信中的另类应用:算法拟合
- springboot 自动装配_Spring Boot 自动装配流程
- linux函数怎么判断文件已更改,Linux下使用md5sum查看文件及程序是否被修改