CF1092(div3):Great Vova Wall (栈)(还不错)
D1. Great Vova Wall (Version 1):
题意:给定长度为N的墙,以及每个位置的一些高度,现在让你用1*2的砖和2*1的砖去铺,问最后能否铺到高度一样。
思路:分析其奇偶性,在一个位置加1*2的砖,其奇偶性不变。在相邻的而且高度相同的位置加2*1的砖,两个奇偶行都改变。那么我们不需要保存高度,因为高度我们可以加1*2的砖,使他们等效到奇偶性的高度;所以只需要保存奇偶,然后加入栈中,如果栈顶的两个元素相同,则可以消去,最后如果栈元素<=1,则ok。
(如果最后栈为空,说明最后高度可奇可以偶;否则,最后的高度由栈里剩下的一个元素奇偶性决定。
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn],q[maxn],top;
bool get(int N)
{
top=;
for(int i=;i<=N;i++){
q[++top]=a[i];
if(top>=&&q[top]==q[top-]) top-=;
}
if(top<=) return true;
return false;
}
int main()
{
int N; scanf("%d",&N);
rep(i,,N) scanf("%d",&a[i]),a[i]=a[i]&;
if(get(N)) return puts("YES"),;
puts("NO");
return ;
}
D2. Great Vova Wall (Version 2)
题意:和上面一样,只是现在只能铺2*1的砖。
思路:开始想简单了,以为是贪心即可,比如1,3,2,贪心出来可以铺,错的。事后想还是应该用栈去做。
还是用消去的思想去想,如果连续的两个相同,我们就可以消去;如果我在中间消去了一段,那么这一段的两边可以拼接起来,那么如果这两边的相同,我们是否也可以消去了呢?不一定,比如1,2,2,1;我们消去了(2,2),不可以消去(1,1);原因是被中间的更高的阻断了,我们所以维护栈的时候记录以下中间的消去的值,如果比栈顶的大,则栈顶暂时不能消去。
(而D1不需要考虑这个问题,是因为D1的高度没什么约束性,只考虑奇偶。
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn],Mx,q[maxn],h[maxn],top;
int main()
{
int N; scanf("%lld",&N);
rep(i,,N) scanf("%d",&a[i]),Mx=max(Mx,a[i]);
rep(i,,N) {
q[++top]=a[i];
if(top>&&q[top]==q[top-]){
if(q[top]<h[top-]) continue;
top-=,h[top]=q[top+];
h[top+]=; h[top+]=;
}
}
if(top==||(top==&&q[top]==Mx)) puts("YES");
else puts("NO");
return ;
}
CF1092(div3):Great Vova Wall (栈)(还不错)的更多相关文章
- CodeForces Round #527 (Div3) D2. Great Vova Wall (Version 2)
http://codeforces.com/contest/1092/problem/D2 Vova's family is building the Great Vova Wall (named b ...
- Codeforces Round #527-D1. Great Vova Wall (Version 1)(思维+栈)
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- CodeForces Round #527 (Div3) D1. Great Vova Wall (Version 1)
http://codeforces.com/contest/1092/problem/D1 Vova's family is building the Great Vova Wall (named b ...
- Codeforces Round #527 (Div. 3) D1. Great Vova Wall (Version 1) 【思维】
传送门:http://codeforces.com/contest/1092/problem/D1 D1. Great Vova Wall (Version 1) time limit per tes ...
- Java学到什么程度能找到一份还不错的工作
我的读者里有很多 Java 新人,新人是指正在学 Java 的.以及工作时间不长的年轻人,他们经常问我一个问题: Java 学到什么程度才能找到一份还不错的工作? 今天我就从我自己面试新人的角度来回答 ...
- android studio还不错
今天体验了哈 Android Studio,还不错同Elipse类似
- 上一篇括号配对让人联想起catalan数,顺便转载一篇归纳的还不错的文章
转载请注明来自souldak,微博:@evagle 怎么样才是合法的组合? 只要每一时刻保证左括号的数目>=右括号的数目即可. 直接递归就行,每次递归加一个括号,左括号只要还有就能加,右括号要保 ...
- JS组件系列——再推荐一款好用的bootstrap-select组件,亲测还不错
前言:之前分享过两篇bootstrap下拉框的组件:JS组件系列——两种bootstrap multiselect组件大比拼 和 JS组件系列——Bootstrap Select2组件使用小结 ,收 ...
- 【原创】PicUploader: 一个还不错的图床工具
PicUploader PicUploader 是一个用php编写的图床工具,它能帮助你快速上传你的图片到云图床,并自动返回Markdown格式链接到剪贴板.配置完成后,要获取一个可用于markdow ...
随机推荐
- ubuntu server 无线网卡的处理
1) iwconfig 确定一下接口的名称 2) 编辑 /etc/network/interfaces 加入下面的代码 auto wlan0 iface wlan0 inet dhcp wpa-ssi ...
- SpringBoot导入excle文件数据
本文主要描述,Springboot框架下上传excel,处理里面相关数据做逻辑分析,由于用到的是前后端分离技术,这里记录的主要是后端java部分,通过与前端接口进行对接实现功能 1.在pom.xml文 ...
- HDU-4849 Wow! Such City! (单源最短路)
Problem Description Doge, tired of being a popular image on internet, is considering moving to anoth ...
- 使用opatch工具 打补丁Patch 21352635 -(Database Patch Set Update 11.2.0.4.8)
Patch 21352635 - Database Patch Set Update 11.2.0.4.8 一.OPatch工具检查及升级 OPatch工具包,在安装目录$ORACLE_HOME下,P ...
- 84. Largest Rectangle in Histogram *HARD* -- 柱状图求最大面积 85. Maximal Rectangle *HARD* -- 求01矩阵中的最大矩形
1. Given n non-negative integers representing the histogram's bar height where the width of each bar ...
- Intel DAAL AI加速——神经网络
# file: neural_net_dense_batch.py #================================================================= ...
- elasticsearch 路由文档到分片
路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...
- HDU 3221 矩阵快速幂+欧拉函数+降幂公式降幂
装载自:http://www.cnblogs.com/183zyz/archive/2012/05/11/2495401.html 题目让求一个函数调用了多少次.公式比较好推.f[n] = f[n-1 ...
- 15年-ICPC长春-网络赛
ID name status one word POJ 5437 Alisha’s Party 赛后AC. 优先队列,模拟.对时间t排序 POJ 5438 Ponds 赛后AC 循环链表 POJ 5 ...
- codeforces 851C Five Dimensional Points(鸽巢原理)
http://codeforces.com/contest/851/problem/C 题意 - 给出 n 个五维空间的点 - 一个点a为 bad 的定义为 存在两点 b, c, 使的<ab, ...