Codeforces 845D - Two TVs(贪心)
原题链接:http://codeforces.com/problemset/problem/845/D
题意:一个人在驾照考试中,路边有“限速XX”、“没有限速”、“可以超车”、“不能超车”路牌, 以及这个人在某一时刻开车速度、是否超车,题目按时间顺序输入以上情况,其中可能会有违反交规的情况,但这个人可以狡辩说没看到一些路牌。一开始默认是没有限速而且可以任意超车的。
问他要“假装”没看到几个路牌才能使他“没有”违反交规。
思路:有意思的题目。 事实上超速情况和超车情况可以分开来考虑,线性枚举。
先来讨论超车情况,可以简单的在遇到“不能超车”时用add记录总共的“不能超车”数;当有超车行为发生时,在结果加上add,并将add还原为0;当遇到“可以超车”时,add归零。
然后就是超速情况,与超车情况类似,在枚举时遇到速度变换就更新速度,当“没有限速”时add归零,但对于“限速XX”情况,我们需要把限速速度压入栈内,因为他要“忽略”的限速牌,要刚好使没被“忽略”的最后一个限速牌大于当前速度,如果用add粗暴叠加,可能会使结果大于答案。
AC代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<stack>
using namespace std;
const int MAXN=2e5+;
const int INF=1e9+;
struct Node{
int sp;
int type;
}n1[MAXN],n2[MAXN];
int dp1[MAXN], dp2[MAXN];
int main()
{
int n,t1,t2;
scanf("%d", &n);
t1=t2=;
int q,m;
for(int i=;i<n;i++){
scanf("%d", &q);
if(q==||q==){
scanf("%d", &m);
n1[t1].sp=m;
n1[t1].type=q;
t1++;
}
if(q==){
n1[t1].type=q;
t1++;
}
if(q==||q==||q==){
n2[t2].type=q;
t2++;
}
} stack<int> st;
int add=,res1=;
int speed=n1[].sp,limit;
for(int i=;i<t1;i++){
if(n1[i].type==) speed=n1[i].sp;
if(n1[i].type==) st.push(n1[i].sp);
if(n1[i].type==) while(!st.empty()) st.pop();
while(!st.empty()&&speed>st.top()){
st.pop();
res1++;
}
}
//cout<<'*'<<endl;
int res2=;
add=;
for(int i=;i<t2;i++){
if(n2[i].type==){
res2+=add;
add=;
}
if(n2[i].type==) add=;
if(n2[i].type==) add++;
}
//cout<<res1<<' '<<res2<<endl;
printf("%d\n", res1+res2);
return ;
}
Codeforces 845D - Two TVs(贪心)的更多相关文章
- codeforces 704B - Ant Man 贪心
codeforces 704B - Ant Man 贪心 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr 向右跳:abs(b.x-a.x) ...
- CodeForces - 50A Domino piling (贪心+递归)
CodeForces - 50A Domino piling (贪心+递归) 题意分析 奇数*偶数=偶数,如果两个都为奇数,最小的奇数-1递归求解,知道两个数都为1,返回0. 代码 #include ...
- Codeforces 845C. Two TVs 思路:简单贪心算法
题目: 题目原文链接:http://codeforces.com/contest/845/problem/C 题意:现在我们有一个电视清单,有两个电视,电视清单上有每一个节目的开始时间和结束时间. 电 ...
- Codeforces 161 B. Discounts (贪心)
题目链接:http://codeforces.com/contest/161/problem/B 题意: 有n个商品和k辆购物车,给出每个商品的价钱c和类别t(1表示凳子,2表示铅笔),如果一辆购物车 ...
- CodeForces 176A Trading Business 贪心
Trading Business 题目连接: http://codeforces.com/problemset/problem/176/A Description To get money for a ...
- Codeforces Gym 100803C Shopping 贪心
Shopping 题目连接: http://codeforces.com/gym/100803/attachments Description Your friend will enjoy shopp ...
- Codeforces 486C Palindrome Transformation(贪心)
题目链接:Codeforces 486C Palindrome Transformation 题目大意:给定一个字符串,长度N.指针位置P,问说最少花多少步将字符串变成回文串. 解题思路:事实上仅仅要 ...
- Codeforces 1154D - Walking Robot - [贪心]
题目链接:https://codeforces.com/contest/1154/problem/D 题解: 贪心思路,没有太阳的时候,优先用可充电电池走,万不得已才用普通电池走.有太阳的时候,如果可 ...
- codeforces 735C Tennis Championship(贪心+递推)
Tennis Championship 题目链接:http://codeforces.com/problemset/problem/735/C ——每天在线,欢迎留言谈论. 题目大意: 给你一个 n ...
随机推荐
- log4j.rootLogger作用域
log4j.rootLogger只对没有申明appender的包起作用:
- PMBOK
项目章程的内容1. 基于项目干系人的需求和期望提出的要求.2. 项目必须满足的业务要求或产品需求.3. 项目的目的或项目立项的理由.4. 委派的项目经理及项目经理的权限级别.5. 概要的里程碑进度计划 ...
- WordPress 数据库结构及表字段作用解析
对于WordPress的开发可以说子凡已经是如痴如醉了,通过 WordPress 本身的开放性接口可以做到很多的事情,但是有些时候我们可能更喜欢直接查询数据库来实现某些 WordPress 没有提供的 ...
- VMware虚拟机上运行Manjaro系统
Manjaro系统是从ArchLinux系统发展而来.它的软件安装工具不是ubuntu的apt-get,不是yum,而是pacman. 在虚拟机安装好Manjaro后, 安装虚拟机工具VM-Tools ...
- SSM003/构建Maven单模块项目(一)
一.环境准备 1.开发工具:IDEA 2.JDK版本:jdk1.8 3.Maven版本:apache-maven-3.2.5 4.数据库mysql. 二.基于Maven构建web项目 Step1:Fi ...
- MySQL学习笔记(上)
在进行SQL注入原理的剖析的时候,对MySQL数据库掌握薄弱,参照菜鸟教程的MySQL教程速刷一遍MySQL 关于MySQL MySQL是最流行的关系型数据库管理系统,在WEB方面MySQL是最好的R ...
- [BZOJ3203] [SDOI2013]保护出题人(二分+凸包)
[BZOJ3203] [SDOI2013]保护出题人(二分+凸包) 题面 题面较长,略 分析 对于第i关,我们算出能够打死前k个个僵尸的最小能力值,再取最大值就可以得到\(y_i\). 前j-1个僵尸 ...
- BZOJ 1100 &&luogu 3454(计算几何+KMP)
题面 给定一个多边形,求对称轴数量. 分析 初看这似乎是一道计算几何的题目,但是如果暴力枚举对称轴,再去判断对称轴两边的边和角是否相等,时间复杂度为\(O(n^2)\),显然会TLE 问题转换 顺时针 ...
- 关于 Python 程序的运行方面,有什么手段能提升性能?
1.使用多进程,充分利用机器的多核性能2.对于性能影响较大的部分代码,可以使用 C 或 C++编写3.对于 IO 阻塞造成的性能影响,可以使用 IO 多路复用来解决4.尽量使用 Python 的内建函 ...
- DAG
DAG的生成 DAG(Directed Acyclic Graph) 叫做有向无环图,原始的RDD通过一系列的转换就形成了DAG,根据RDD之间的依赖关系的不同将DAG划分成不同的Stage,对于窄依 ...