题目链接

题意,求出合法的长度为n的字典序第k小字符串,合法的定义为除了最后一位,每一位的取值范围为'A'到'A'+pos-1,而最后一位的取值范围'A'到当前字符串最大值+1。

队友tql,Orz

一开始就想爆搜,但是不知道如何判断当前位为X时的合法字符串个数。然后队友就莽过去了Orz。

大致做法就是类似数位dp的方式预处理出第i位为j时有多少合法字符串,这样求答案时就可以直接判断能否满足第k个,满足就继续搜下去,不满足就k-dp[i][j]。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef __int128 ll;
 4 const int mod = 1e9 + 7;
 5 ll dp[30][30];
 6 int ans[30];
 7 int n; ll k;
 8 ll read() {
 9     ll x = 0, f = 1;
10     char c = getchar();
11     for (; !isdigit(c); c = getchar()) if (c == '-') f = -1;
12     for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';
13     return x * f;
14 }
15 ll dfs(int pos, int limit) {
16     if (pos == n + 1)return 1;
17     if (dp[pos][limit] != -1)return dp[pos][limit];
18     ll sum = 0;
19     for (int i = 0; i <= limit; i++)
20         sum += dfs(pos + 1, max(limit, i + 1));
21     dp[pos][limit] = sum;
22     return dp[pos][limit];
23 }
24 void solve(int pos, int limit, ll k) {
25     if (pos == n) {
26         for (int i = 0; i < n; i++)
27             printf("%c", ans[i] + 'A');
28         printf("\n");
29         return;
30     }
31     for (int i = 0; i <= limit; i++) {
32         ll lim = max(limit, i + 1);
33         if (dp[pos + 1][lim] >= k) {
34             ans[pos] = i;
35             solve(pos + 1, lim, k);
36             break;
37         }
38         else
39             k -= dp[pos + 1][lim];
40     }
41 }
42 int main() {
43     int t, cnt = 1;
44     scanf("%d", &t);
45     while (t--) {
46         scanf("%d", &n);
47         k = read();
48         for (int i = 0; i <= 26; i++)
49             for (int j = 0; j <= 26; j++)
50                 dp[i][j] = -1;
51         for (int i = 0; i < 30; ++i) dp[n][i] = 1;
52         dfs(0, 0);
53         printf("Case #%d: ", cnt++);
54         solve(0, 0, k);
55     }
56 }

转载于:https://www.cnblogs.com/sainsist/p/11525638.html

[2019上海网络赛F题]Rhyme scheme相关推荐

  1. Peekaboo(2019年上海网络赛K题+圆上整点)

    目录 题目链接 题意 思路 代码 题目链接 传送门 题意 你的位置在\(O(0,0)\),\(A\)的位置为\((x_1,y_1)\),\(B\)的位置为\((x_2,y_2)\),现在已知\(a=O ...

  2. hdu5455(2015沈阳网络赛F题)

    题意: 给出一个串,问用题中定义的那些串来组成这个串最少要用多少个. 思路: 没啥说的,注意一下输入的串中可能出现除了c和f的字母. 代码: #include<cstdio> #inclu ...

  3. 2017acm乌鲁木齐赛区网络赛F题tarjan缩点

    poj1236是问把一棵树变成强联通分量,于是答案就是rudu为0的和出度为0的最大值,因为假设入度为0的多一些,先每个出度为0的连接一个入度为0的,那么还剩一些入度为0的,这时候入度为0的随意连接一 ...

  4. hdu5489(2015合肥网络赛F题)

    转载自:http://blog.csdn.net/lwt36/article/details/48774103 题意: 给出一个数列,在其中删除连续的L个数字,使得剩余的数字LIS最大,输出此LIS. ...

  5. hdu5442(2015长春网络赛F题)

    题意: 给出一个字符串,只由'a'~'z'组成,字符串是一个首尾相接的串.我们要找到一个起点,顺时针或者逆时针的读这个串,找到字典序最大的读法,如果有多种,输出起点坐标小的那个,如果起点坐标一样,输出 ...

  6. 2019上海网络赛icpc

    B. Light bulbs: 思路:对前端点排序,然后取前两个区间进行分析,分别为L1,R1,L2,R2.分L1==L2,R1<L2,R1>=L2,L1<L2&&R ...

  7. 2019上海网络赛 C Triple

    链接:Triple - 题库 - 计蒜客 题意:给定三个长度 n 的数组 a , b , c ,求有多少个(i,j,k)满足 ai , bi , ci 三个数构成不严格三角形(可以是直线) 分析:FF ...

  8. 单片机STM8S测量电压电路_纸张计数测量显示装置+【2019年电赛F题国一获奖作品】...

    一 题目要求: 二 设计方案 1.硬件部分 硬件部分的制作,当初我们组内讨论了三套方案 用FCD2214芯片去采,两极板之间的电容,通过FCD2214转化为AD值,经过测试,发现FCD2214的值,受 ...

  9. 2019 ACM - ICPC 上海网络赛 E. Counting Sequences II (指数型生成函数)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  10. 网络技能大赛-2019年国赛真题[2019年全国职业技能大赛高职组计算机网络应用赛项真题-H卷]路由交换部分答案详解

    网络技能大赛-2019年国赛真题[2019年全国职业技能大赛高职组计算机网络应用赛项真题-H卷]路由交换部分答案详解 2022年全国职业技能大赛网络系统管理赛项相较2021年再次做出改动,Linux部 ...

最新文章

  1. 排列(permutation)2_6
  2. python画图简单代码-简单画图 - python代码库 - 云代码
  3. Bash scripts
  4. HttpContext.Current.Cache 过期时间
  5. 使用存储过程及触发器案例
  6. 100+经典Java面试题及答案解析
  7. 来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor
  8. shell的交互式和非交互式登录
  9. iPhone 14系列升级巨大:两款Pro版或将配置4800万像素镜头
  10. Ubuntu18.04 下联想电脑 无法连接WIFI问题解决
  11. 《JavaScript高级程序设计(第2版)》
  12. HBase常用操作备忘
  13. gbq6什么软件能打开_GBQ5是啥文件,用哪个软件打开
  14. 智慧城市:大数据运营中心 IOC —— Web GIS 地图应用
  15. 锐捷AP组建无线网络-保姆级教程
  16. 针对灰产外挂的分析与研究
  17. 剑指Offer(第二版)-思路简述-第一期(简单难度)
  18. SQLite3 获取最小可用ID,ID无需包含1
  19. dd命令参数详解及数据操作实战
  20. 透过案例看清API接口的作用——演示1688商品详情接口

热门文章

  1. easyui源码翻译1.32--Droppable(放置)
  2. Java游戏开发框架LGame-0.2.6发布(含PC及Android版)
  3. 全网最雕10名月薪超过5W的程序员,和他们的公众号!
  4. 使用类型注解让 Python 代码更易读
  5. R语言机器学习:xgboost的使用及其模型解释
  6. 保险行业持续扩展,巨杉数据库再次中标人保财险
  7. Python_正则(设置pattern变量实例)
  8. Java笔记——泛型擦除
  9. centos 网络开启
  10. DisplayX显示器测试、显示器屏幕检测