题意 :

  • 给一序列以及序列对应每个位置的颜色,R颜色对应可以增加若干,B反之,问是否能将序列变化为1-n所有数有且仅有1个

思路 :

  • 每个数可以得到一个变化范围区间,那么得到了n个区间,区间只存左右端点,将区间按照第一优先l第二优先r进行升序排序,然后从1枚举到n看是否都能被取到,若是则yes,反之no
  • 要考虑无效区间,l和r赋值时特殊标记以及判断是否合法时特殊判断即可
  • 时间复杂度O(nlogn)O(nlogn)O(nlogn),SumSumSum ofofof n<=25n<=2^5n<=25
#include <iostream>
#include <algorithm>using namespace std;typedef long long ll;const int N = 2e5 + 10;struct rec
{int l, r;rec(int a = 0, int b = 0){l = a, r = b;}
}r[N];int n;
int a[N];
char col[N];inline bool check()
{for (int i = 1; i <= n; i ++ ){if (r[i].l > r[i].r) return false;if (i < r[i].l) return false;if (i > r[i].r) return false;}return true;
}int main()
{ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int _;cin >> _;while (_ -- ){cin >> n;for (int i = 1; i <= n; i ++ ) cin >> a[i];for (int i = 1; i <= n; i ++ ) cin >> col[i];for (int i = 1; i <= n; i ++ ){if (col[i] == 'B'){r[i] = rec(1, a[i]);if (a[i] < 1) r[i] = rec(1, 0);if (a[i] > n) r[i] = rec(1, n);}else{r[i] = rec(a[i], n);if (a[i] < 1) r[i] = rec(1, n);if (a[i] > n) r[i] = rec(n + 1, n);}}sort(r + 1, r + n + 1, [&](rec a, rec b){return a.l == b.l ? a.r < b.r : a.l < b.l;});if (check()) cout << "YES" << endl;else cout << "NO" << endl;}return 0;
}

Blue-Red Permutation 贪心,思维相关推荐

  1. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 1 /* 2 题意:n个头,m个士兵,问能否砍掉n个头 3 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 4 */ 5 #include <cstdio> 6 #i ...

  2. 1450F The Struggling Contestant(贪心+思维)

    1450F The Struggling Contestant(贪心+思维) Codeforces Global Round 12 F. The Struggling Contestant 题面:Th ...

  3. cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】

    分析 给出一堆数 可以通过相加或除2让它们全部变成奇数 如果全奇数返回0 由于奇数 + 偶数 = 奇数 所以只要有一个奇数就能把偶数和它相加不停的变成奇数 所以只要存在奇数,就可以返回偶数的个数 否则 ...

  4. 《C语言程序设计实践》————如何买玫瑰?(贪心思维)

    <C语言程序设计实践>----如何买玫瑰?(贪心思维) 要求:小慧过生日,小明要买玫瑰送她.每枝红玫瑰5元,满5支送1枝,满20枝送5枝.小明一共有n(n>10)元钱,最多能买到多少 ...

  5. CodeForces - 1607D Blue-Red Permutation(贪心)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,每个数字有一个颜色,如果是蓝色,每次操作则可以减一:如果是红色,每次操作则可以加一. 问有限次操作后,能否将数组变为一个长度为 nnn 的 ...

  6. HDU - 5242 Game(树形dp+树链剖分/树上贪心+思维)

    题目链接:点击查看 题目大意:给出一棵包含n个节点的树,每个节点都有一个权值,整棵树的根是点1,问从点1开始向下一直走到叶子节点,可以走k次,怎么样走权值和最大,每个节点被走过一次后权值会变为0 题目 ...

  7. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  8. 牛客 - 共鸣问题(贪心+思维)

    题目链接:点击查看 题目大意:给出 nnn 个点,每个点都有点权,再给出 mmm 个关系,以 (x,y,z)(x,y,z)(x,y,z) 的形式给出,规定如下: 同时选择点 xxx 和点 yyy 将获 ...

  9. CodeForces - 351E Jeff and Permutation(贪心)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列,可以选择某些位置使得 a[ i ] =  - a[ i ],问逆序对最少可以是多少 题目分析:需要看出的一个关系就是,在某一对关系 ( i , ...

最新文章

  1. 青岛中专学计算机哪个学校比较好,青岛最好的中专学校是哪个
  2. java中的类加载器有,Java自定义的类加载器,java自定义加载,在java中类加载器有以...
  3. [算法] 2-4 组合游戏
  4. 实现一个压缩Remoting传输数据的Sink:CompressionSink
  5. Tensorflow入门__实例:图计算
  6. 入坑机器学习?送你一篇麻省博士的学习心得
  7. canvas clear 指定属性的元素_好程序员web前端分享CSS属性组成及作用
  8. 科技计划项目数据管理过程模型
  9. 零基础学python难吗-零基础入门学习Python技术难不难?
  10. android 分辨率适配的方法
  11. 指标公式c语言源码下载,通达信99.75%成功率指标公式 源码
  12. python 爬虫框架scrapy优势_Python 爬虫框架Scrapy 简单介绍
  13. [转]SREng扫描报告分析
  14. 计算机图形学---简单光照明模型知识汇总
  15. 玩转Python,30行Python代码刷王者荣耀金币
  16. prisma 连接不上Postgres
  17. 搭建DM两节点mpp集群
  18. 优惠券使用/凑满减优惠/硬币组合问题(结果包括最优组合和最优值)
  19. 微信显示服务器吃撑了,虐死单身狗!微信突然上线新功能:狗粮一下吃到撑
  20. 安卓期末大作业——单词本APP(源码+任务书)

热门文章

  1. ALV OO的栏位属性
  2. 项目中遇到不善于表达的人,该如何沟通?
  3. SAP系统中设备管理模块的主要增强出口
  4. 结转本年利润的有关分录
  5. 财经法规2013江苏模拟题
  6. 现金流量表的编制方法及程序
  7. SMW0上传文件到数据库层详解
  8. 盒马mini带客流,老菜场攒烟火气,新老菜场交融相映成辉
  9. mysql 实务操作_mysql多表操作
  10. python @修饰符_Python基础(面向对象之类成员与修饰符)