[CF1304D] Shortest and Longest LIS - 贪心
看样例,>><>><,要构造 LIS 最短的,我们需要找最小链划分的方案,即包含最少的下降列
很容易想到把连续 < 的看成一段,比如样例就是
.|.|. .|.|. .
每一段内必须上升,考虑让它连续,然后让段末取当前没取过的最大值即可
要构造 LIS 最长的,同理,我们把连续 > 的堪称一段,比如样例就是
. . .|. . .|.
每段内必须下降,考虑让它连续,然后让段膜取当前没去过的最小值即可
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
int t,n;
char s[N];
signed main() {
ios::sync_with_stdio(false);
cin>>t;
while(t--) {
cin>>n>>s+1;
int now,i,j;
now=n; i=1; j=1;
while(i<=n) {
j=i;
while(j<n && s[j]=='<') ++j;
for(int k=i;k<=j;k++) cout<<now-j+k<<" ";
now-=(j-i+1);
i=j+1;
}
cout<<endl;
now=1; i=1; j=1;
while(i<=n) {
j=i;
while(j<n && s[j]=='>') ++j;
for(int k=i;k<=j;k++) cout<<now+j-k<<" ";
now+=j-i+1;
i=j+1;
}
cout<<endl;
}
}
[CF1304D] Shortest and Longest LIS - 贪心的更多相关文章
- Shortest and Longest LIS
Codeforces Round #620 (Div. 2) D. Shortest and Longest LIS 题解: 贪心即可,对于最短序列,我们尽可能用可用的最大数字放入序列中,对于最长序列 ...
- Codeforces 1304D. Shortest and Longest LIS 代码(构造 贪心)
https://codeforces.com/contest/1304/problem/D #include<bits/stdc++.h> using namespace std; voi ...
- Codeforces 1304D. Shortest and Longest LIS
根据题目,我们可以找最短的LIS和最长的LIS,找最短LIS时,可以将每一个increase序列分成一组,从左到右将最大的还未选择的数字填写进去,不同组之间一定不会存在s[i]<s[j]的情况, ...
- Codeforces1304D Shortest and Longest LIS
前置扯淡 %%@\(wucstido\),思路是在是巧妙---link Description 给一个长度为\(n\)由 \(<\) 和 \(>\)组成的字符串,表示序列中相邻位置的数的大 ...
- Vijos p1303导弹拦截(LIS+贪心)
传送门:https://vijos.org/p/1303 背景 实中编程者联盟为了培养技术精湛的后备人才,必须从基础题開始训练. 描写叙述 某国为了防御敌国的导弹突击,研发出一种导弹拦截系统. 可是这 ...
- cf 之lis+贪心+思维+并查集
https://codeforces.com/contest/1257/problem/E 题意:有三个集合集合里面的数字可以随意变换位置,不同集合的数字,如从第一个A集合取一个数字到B集合那操作数+ ...
- BZOJ 1046 [HAOI2007]上升序列(LIS + 贪心)
题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们 ...
- 类似LIS+贪心(ZOJ1025)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25 解题报告: #include <cstdio> #in ...
- [CF1034B] Longest Palindrome - 贪心
如果自己是回文串可以做中心 如果一个串和另一个串的转置相等则可以凑一对 优先配对 #include <bits/stdc++.h> using namespace std; int n,m ...
随机推荐
- linux中文件处理命令
目录 touch cat more less head tail touch 解释 命令名称:touch 命令所在路径:/bin/touch 执行权限:所有用户 功能描述:创建空文件 语法 touch ...
- The finally block does not always execute in try finally
A finally block does not always xecute. The code in the try block could go into an infinite loop, th ...
- ES集群调整搜索速度
一.内存文件系统足够的缓存 Elasticsearch严重依赖于文件系统缓存,以加快搜索速度.通常,您应确保至少有一半的可用内存分配给文件系统缓存,以便Elasticsearch可以将索引的热区保留在 ...
- 功能强大的截图工具snipaste
一直都是用的聊天工具的截图功能,今天突然懒得登录了.想想是否有简单的截图工具 结果一搜索就找到了这个,本来没想有多少功能毕竟只是截截图而已,看到主页介绍眼前一亮.虽然不想复杂化,但是这个功能是真的不错 ...
- 首次使用Lambda表达式-sunziren
需要将List<Apple> list = new ArrayList<Apple>(); 按照Apple对象中的price属性从大到小排序. 第一个念头闪过的是冒泡排序,转念 ...
- 数据库MySQL之show processlist
在实际项目开发中,如果我们对数据库的压力比较大,比如有大批量的查询或者插入等sql,尤其是多线程插入等情况,针对部分执行比较慢的sql,我们可以将其kill掉,常用的一个命令就是show proces ...
- Codeforces Round #622(Div 2) C1. Skyscrapers (easy version)
题目链接: C1. Skyscrapers (easy version) 题目描述: 有一行数,使得整个序列满足 先递增在递减(或者只递增,或者只递减) ,每个位置上的数可以改变,但是最大不能超过原来 ...
- LeetCode30 Hard 查找所有子串
本文始发于个人公众号:TechFlow,原创不易,求个关注 链接 Substring with Concatenation of All Words 难度 Hard 描述 给定一个字符串s作为母串,和 ...
- 复习babel
对babel进行复习
- qt creator源码全方面分析(1)
目录介绍 首先我们对软件源代码根目录下的各个重要文件(夹)做一个简单的介绍,对整体有一个大概的了解. 下面对目录及其内容做一个大概的初步的介绍,后面我尽量按照目录顺序进行依次介绍,当然可能会有一些交叉 ...