题意

给定一个字符串s,给定一个长度为m的数列b

要求从s中取出 m 个字符构成一个新的字符串a(不可重复取相同位置的字符),任意排列后,是其满足对于每一个 i 都有 a[i] 到 a 中 所有比它大的(即字典序比它大,如 b > a,z > x )的字符在字符串 a 中的距离之和为 b[i]

来源:洛谷

题解

首先题目保证有解

其次按照题目给定的定义来看,b中一定会有至少一个数字是0,因为在字符串s中一定存在这样一个字符是字典序最大的导致其他的字母没有办法与他坐距离定计算

那么根据这一条,我们根据字典序从后往前,对于每一个还没确定的位置,我们计算一下如果放在这个位置上她的距离符不符合b数组的距离,如果符合就可以放;

如果当前的字符满足b数组的个数在s中出现的次数不够,就尝试后几个能不能把这些满足的位置放满

(构造题我们要构造答案,题目保证答案有解)

Code

string s;
int n;
int b[150];
char t[150];void solve(){memset(t, 0, sizeof(t));map<int, int> m;cin >> s;for(auto i : s){m[i]++;}cin >> n;for (int i = 1; i <= n; i++){cin >> b[i];}for (int c = 'z'; c >= 'a'; c--){vector<int> v;for (int i = 1; i <= n; i++){if(!t[i]){int summ = 0;for (int j = 1; j <= n; j++){if(t[j]){summ += abs(j - i);}}if(b[i] == summ){v.pb(i);}}}while(m[c] < v.size()){c--;}for(auto i : v){t[i] = c;}}for (int i = 1; i <= n; i++){cout << t[i];}cout << endl;
}

CF1367D 构造相关推荐

  1. LeetCode简单题之构造矩形

    题目 作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的. 所以,现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面.要求: 你设计的矩形 ...

  2. 兑换量子计算机,阅读 | 【量子计算机】构造置换量子门

    原标题:阅读 | [量子计算机]构造置换量子门 量子计算机的一个基本组成单位叫量子门(quantum gate),下面简单介绍些基本概念. 量子比特和量子态 量子计算机的信息存储单元是一种叫做量子比特 ...

  3. [ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据...

    主类 HTTPSendPHP.as 1 package 2 { 3 import com.JPEGEncoder.JPGEncoder; 4 import com.fylib.httpRequest. ...

  4. js把base64串解析成中文_回文问题终极篇:最小代价构造回文串

    学算法认准 labuladong 东哥带你手把手撕力扣? 点击下方卡片即可搜索? 读完本文,你可以去力扣完成第 1312 题「让字符串成为回文串的最少插入次数」,难度 Hard. 回文串就是正着读反着 ...

  5. php构造和析构方法,php5构造函数与析构函数实例

    自php5起,有了构造函数与析构函数. 这使得php更富有面向对象的魅力了. 在php4时,构造函数用的是与类同名的函数来进行构造这个动作. 例如: 复制代码 代码示例: /* * myclass.p ...

  6. 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!

    构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...

  7. 对象特性--构造函数调用规则

    默认情况下,C++编译器至少给一个类添加3个函数: 1.默认构造函数(无参,函数体为空) 2.默认析构函数(无参,函数体为空) 3.默认拷贝构造函数,对属性进行值拷贝 1.创建一个类,C++编译器会给 ...

  8. C++派生类与基类构造函数调用次序

    本文用来测试C++基类和派生类构造函数,析构函数,和拷贝构造函数的调用次序. 运行环境:SUSE Linux Enterprise Server 11 SP2  (x86_64) #include & ...

  9. jquery 1.7.2源码解析(二)构造jquery对象

    构造jquery对象 jQuery对象是一个类数组对象. 一)构造函数jQuery() 构造函数的7种用法: 1.jQuery(selector [, context ]) 传入字符串参数:检查该字符 ...

最新文章

  1. Python:数据提取之JSON与JsonPATH
  2. linux系统层次(转)
  3. 阿里云供应链大赛-榜单
  4. python四大高阶函数_四大高阶函数
  5. linux环境c语言编程 蔡晋,Linux环境C语言编程
  6. Piper蛋窝「2020.10.19-2020.10.25」本周更新内容の大预告!
  7. python爬取拉勾网_python爬虫—爬取拉钩网
  8. u盘测试工具linux,MultiBootUSB简单测试工具 V7.5.0 升级版
  9. matlab在编辑器中写完了怎么运行,在编辑器中运行测试
  10. 20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结
  11. 『译』计算机体系结构发展史(四)
  12. 管理罗盘-管理者角色认知与定位
  13. 【Axure教程】穿梭框拖动选择器
  14. FileZilla介绍及其使用
  15. 拿到offer提出离职,公司拖30天才放人,但下家公司等不了30天,怎么办?
  16. Material设计之Palette
  17. 千寻和省cors精度对比_CORS账号常见问题—什么情况需要用到千寻知寸cors账号?它比省cors更具哪些优势?...
  18. 路由器+Gdbserver+IDA Pro远程调试
  19. 3D小人竞聘述职报告PPT模板
  20. 沙县小吃炖罐做法 114沙县小吃配料网

热门文章

  1. [Python]查看Python版本
  2. 无影云电脑Linux如何修改密码
  3. 用select多路io复用实现简单聊天程序
  4. 边框圆角化方式(原文链接http://www.cnblogs.com/SJP666/p/4678730.html)
  5. 谁是世界上最好的编程语言?--编程语言70年浅谈
  6. Vim 复制 全部复制
  7. Java 基础学习(9)
  8. 清空MySQL单库下所有表数据 || 删除MySQL单库下所有表
  9. Coursera半价优惠
  10. 访问weblogic控制台报错的问题处理