CF-920C-Swap Adjacent Elements 贪心
题意
给你一个1~n的排列。
并给你一个字符串——其中用0和1表示对应数列中的位置上的值可不可以和后面相邻的数交换。
判断该数列能否在限制中交换为不降序数列。
思路
由于刚学了树状数组,一开始以为是用这样的数据结构去找有没有逆序。
事实上题目中的1~n并且每个数并不相同应该引起注意。关键就是这了。
下面是两种不同的思路;
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
//这个思路是只要当前的最大比位子i大,说明要向后移动,要是str=0,则NO;
using namespace std;
int n,a[+];
string str;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
cin>>str;
int maxn=,flag=;
for(int i=;i<=n;i++)
{
if(maxn < a[i])maxn = a[i];
if(str[i-]=='')
{
if(maxn>i)
{
flag=;
break;
}
}
}
if(flag)puts("YES");
else puts("NO");
return ;
}
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
//队长是先跑字符串,判断每个i位子的最大可能值;
using namespace std;
int a[],dp[],n;
string str;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
cin>>str;
dp[n-]=n;
for(int i=n-;i>=;i--)
{
if(str[i]=='')
{
dp[i]=dp[i+];
}
else dp[i]=i+;
}
int flag=;
for(int i=;i<=n;i++)
{
if(a[i]>dp[i-])
{
flag=;
break;
}
}
if(flag)puts("YES");
else puts("NO"); return ;
}
CF-920C-Swap Adjacent Elements 贪心的更多相关文章
- CodeForces - 920C Swap Adjacent Elements
传送门:点我 You have an array a consisting of n integers. Each integer from 1 to n appears exactly once i ...
- CF920C Swap Adjacent Elements 贪心
我也不知道该说啥,水就是了~ code: #include <bits/stdc++.h> #define N 300004 #define setIO(s) freopen(s" ...
- Educational Codeforces Round 37 (Rated for Div. 2)C. Swap Adjacent Elements (思维,前缀和)
Educational Codeforces Round 37 (Rated for Div. 2)C. Swap Adjacent Elements time limit per test 1 se ...
- Swap Adjacent Elements
You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this ...
- 【Educational Codeforces Round 37 C】 Swap Adjacent Elements
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然l..r这一段连续的1可以把l..r+1变成有序的. 那么就把所有的连续1段变成有序的就好. 看看最后是不是升序即可. [代码] ...
- CF 435B Pasha Maximizes(贪心)
题目链接: [传送门][1] Pasha Maximizes time limit per test:1 second memory limit per test:256 megabytes ...
- CF #374 (Div. 2) D. 贪心,优先队列或set
1.CF #374 (Div. 2) D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...
- PTA 1067 Sort with Swap(0, i) (贪心)
题目链接:1067 Sort with Swap(0, i) (25 分) 题意 给定长度为 \(n\) 的排列,如果每次只能把某个数和第 \(0\) 个数交换,那么要使排列是升序的最少需要交换几次. ...
- [CF #288-C] Anya and Ghosts (贪心)
题目链接:http://codeforces.com/contest/508/problem/C 题目大意:给你三个数,m,t,r,代表晚上有m个幽灵,我有无限支蜡烛,每支蜡烛能够亮t秒,房间需要r支 ...
随机推荐
- IDEA:No SLF4J providers were found.
如果您是用IDEA 的 maven 写的 将slf4j的导入包 更改 为下列代码 <dependency> <groupId>org.slf4j</groupId> ...
- 整理github总结
之前记述过两篇关于git命令的随笔,那时候对git的理解还不太深(虽然现在理解的也不是很多...菜哭了),只会用那些命令,并没有形成自己的知识,今天下载完Git之后,规整了一下自己的github,在吃 ...
- 【Python-Django模型迁移】用户数据库模型的迁移(对其他数据库迁移同样适用)!!!
迁移用户模型类 1. 指定用户模型类 文档 思考:为什么Django默认用户模型类是User? 阅读源代码:'django.conf.global_settings’ AUTH_USER_MODEL ...
- Linux vim基本的使用方法
一.vim 的三种模式 (1) 插入模式 在插入模式中,才能输入文字:要进入插入模式,可以按键 “i”:如果要进入插入模式时,直接切换到下一行,可以输入“o”: (2) 命令模式 在命令模式中,主要进 ...
- c#小灶——数据类型
C#中有许多数据类型,存储不同的数据要用不同的数据类型.我们这里面向初学只介绍值类型,引用类型和指针类型在后续的学习中会有接触. 整型 int是最常用的整型,用来存储整数.除了int之外,还有其他不常 ...
- Android--SharedPreferences数据存储方案
SharedPreferences是使用键值对的形式存储的,并且支持多种不同的数据类型,存的是String,取得值也是String. 使用SharedPreferenc ...
- Spark 系列(四)—— RDD常用算子详解
一.Transformation spark 常用的 Transformation 算子如下表: Transformation 算子 Meaning(含义) map(func) 对原 RDD 中每个元 ...
- 3、K-近邻算法
K最近邻(k-Nearest Neighbor,KNN)分类算法 1.定义:如果一个样本在特征空间中的k个最近似(即特征空间中最临近)的样本中大多数属于某一类别,则该样本也属于这个类别. 2.计算公式 ...
- 使用excel计算骰子输赢概率
如何得到使用3个骰子掷赢4个骰子的概率(每个骰子的点数为1-6,点数一样算输) 分为3步解决: 第一步.计算n个骰子得到m点数的分布 1个骰子能得到1.2.3.4.5.6点数,每个点数出现的方式只有1 ...
- Redis的分布式和主备配置调研
目前Redis实现集群的方法主要是采用一致性哈稀分片(Shard),将不同的key分配到不同的redis server上,达到横向扩展的目的. 对于一致性哈稀分片的算法,Jedis-2.0.0已经提供 ...