题目链接

问题分析

题目实际上是一堆大于等于的约束。观察这\(2n-2\)个约束。第一组可以将要求的排成一个不降的序列,然后第二组就是在第一组的基础上再添加条件。

不妨设第一组生成的不降序列是\(\{a_i\}\),然后添加的条件是\(a_i\leqslant a_j\)。那么显然,\(i<j\)的时候这个条件是没有用的。而如果\(i>j\),就代表着\(i\)到\(j\)这一整个区间都要相等。这个用差分数组标记一下,最后统计即可。

需要注意的是可能可以生成超过\(k\)种字母,也可能大于\(26\)种,所以最后输出的时候对\(k\)取min即可。

参考程序

#include <bits/stdc++.h>
using namespace std; const int Maxn = 200010;
int n, k, P[ Maxn ], Q[ Maxn ], Ref[ Maxn ];
int A[ Maxn ], Ans[ Maxn ]; int main() {
scanf( "%d%d", &n, &k );
for( int i = 1; i <= n; ++i ) scanf( "%d", &P[ i ] );
for( int i = 1; i <= n; ++i ) scanf( "%d", &Q[ i ] );
for( int i = 1; i <= n; ++i ) Ref[ P[ i ] ] = i;
for( int i = 1; i < n; ++i )
if( Ref[ Q[ i + 1 ] ] < Ref[ Q[ i ] ] )
++A[ Ref[ Q[ i + 1 ] ] ], --A[ Ref[ Q[ i ] ] ];
int Sum = 0;
for( int i = 1; i <= n; ++i ) {
if( Sum ) Ans[ i ] = Ans[ i - 1 ]; else Ans[ i ] = Ans[ i - 1 ] + 1;
Sum += A[ i ];
}
if( Ans[ n ] < k )
printf( "NO\n" );
else {
printf( "YES\n" );
for( int i = 1; i <= n; ++i ) printf( "%c", min( Ans[ Ref[ i ] ], k ) + 'a' - 1 );
printf( "\n" );
}
return 0;
}

CF1213F Unstable String Sort的更多相关文章

  1. CF1213F Unstable String Sort(差分)

    其实全部可以为同一种字符串,但题目要求\(k\)种,我们考虑开始尽可能不同,最后再取\(min\) 考虑\(A\),全部不同:再做\(B\),\(S[b_{i-1}]\le S[b_{i}]\)如果开 ...

  2. Codeforces Round #582 (Div. 3) F. Unstable String Sort

    传送门 题意: 你需要输出一个长度为n的字符序列(由小写字母组成),且这个字符串中至少包含k个不同的字符.另外题目还有要求:给你两个长度为p和q的序列,设字符序列存在s中 那么就会有s[Pi]< ...

  3. Codeforces 1213F Unstable String Sort

    cf题面 中文题意 求一个由最多26个.最少k个小写字母构成的,长度为n的字符串,这个字符串要满足的要求是--当其中字母按照p和q两个\(1\)~\(n\)的全排列重新排序时,新的字符串是按照升序排好 ...

  4. codeforces1213F Unstable String Sort 思维

    题目传送门 题意:a和b都代表字符串的下标,至少用k个字符,构造一个长度为n的字符串,将这个字符串中的字符按无论是按$a$写还是按$b$写,字典序都非递减. 思路:如果将$a[l,r]=b[l,r]$ ...

  5. 830. String Sort

    830. String Sort 题解 int alpha[256] = {0};//记录字符的次数 bool cmp(char a,char b) { if(alpha[a]==alpha[b])/ ...

  6. Codeforces Round 582

    Codeforces Round 582 这次比赛看着是Div.3就打了,没想到还是被虐了,并再次orz各位AK的大神-- A. Chips Moving 签到题.(然而签到题我还调了20min--) ...

  7. G面经prepare: Sort String Based On Another

    Given a sorting order string, sort the input string based on the given sorting order string. Ex sort ...

  8. c#: List.Sort()实现稳固排序(stable sort)

    1. 源起: KV 7.0加入列表管理功能,处理排序问题时,对空列表执行按大小.日期.长度排序发现,其中次序会发生改变,令人纳闷. 没天理呀,不应该啊!List.Sort()方法,它为什么? 对此问题 ...

  9. [LeetCode] Sort Characters By Frequency 根据字符出现频率排序

    Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...

随机推荐

  1. HDU-5238 Calculator

    题目描述 给定一个关于 \(x\) 的表达式,形如下例:\(×4+2^3+8×6\) 按如下方法计算:\((((x×4)+2)^3+8)×6\) 运算符只有 加号,乘号,幂运算三种,给定的式子中有 \ ...

  2. excel库中数据下载

    PHP实现EXCEL下载数据 <?php include("Classes/PHPExcel.php"); $exce=new PHPExcel(); $exce->s ...

  3. Mysql之SQL随笔

    1.创建数据库 create database if not exists shop default character set utf8mb4 default collate utf8mb4_uni ...

  4. IdentitiServser4 + Mysql实现Authorization Server

    Identity Server 4官方文档:https://identityserver4.readthedocs.io/en/latest/ 新建2个asp.net core 项目使用空模板 Aut ...

  5. Design Support库中的控件

    1.NavigationView滑动菜单 2.FloatIngActionButton悬浮按钮 3.Snackbar二次交互提示的按钮 4.Coordinatorlayout,监听子控件的各种事件(加 ...

  6. spring boot入门与进阶教程

    SpringBoot入门.SpringBoot进阶.Spring Cloud微服务.Spring Ecosystem 微服务相关.Spring Boot 入门 IDEA 版本.Spring Boot集 ...

  7. Nginx之常用操作

    1) 将XXX.com 重定向到 www.XXX.com server { client_max_body_size 20m; listen ; server_name www.xxx.com xxx ...

  8. PostMan测试Web Service

    1.设置URL 2.设置请求模式:Post 3.设置Header:添加 Content-Type ,值为 text/xml;charset=utf-8 4.设置Body:勾选raw 5.输入Body内 ...

  9. TypeScript 和 JavaScript 的区别

    TypeScript 和 JavaScript 是目前项目开发中较为流行的两种脚本语言,我们已经熟知 TypeScript 是 JavaScript 的一个超集.JavaScript 和 TypeSc ...

  10. ubuntu修改apt源

    1.修改之前首先做好备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.编辑源列表文件 sudo vim /etc/apt/sou ...