题目描述

托米没有完成上一个任务,准备施展黑魔法推倒 1317

黑魔法咒语被描述为一个 长为 n 的,仅包含小写英文字母 'a'...'i' 的字符串,在托米所在的星球,魔法造成的每次有效伤害都是来自他的一个子序列,对于每一个 'a'... 'i' 的排列(共 9! 种),若作为咒语的子序列出现, 就会造成 1 的伤害

而咒语的总伤害为所有 'a'... 'i' 的排列造成的伤害值之和,托米能打出多少点的伤害,是否能击败 1317 呢?

输入描述:

一行输入一个字符串 s

输出描述:

一行输出一个数,表示伤害值

输入

aabcdefghi

输出

1

其实这道题只要暴力所有全排列,对于每个全排列judge一下就ok了

暴力全排列只需要调用next_permutation()函数就可以一行搞定

检测某个全排列是否在字符串中出现很显然不能O(n)暴力,会超时,考虑一个O(10)的检测方法

预处理dp[i][k]表示从第i个字符开始字母k最早出现的位置(如果不存在为-1),之后判定方法如下:

now = 1;
for(i=1;i<=9;i++)
{now = dp[now][p[i]]+1;if(now==0)break;
}
if(now!=0)     //存在ans++;

搞定

总程序:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[3005][12];
char str[3005];
int a[3005], p[15];
int main(void)
{int n, i, j, now, ans;scanf("%s", str+1);n = strlen(str+1);for(i=n;i>=1;i--)a[i] = str[i]-'a'+1;memset(dp, -1, sizeof(dp));for(i=n;i>=1;i--){for(j=1;j<=9;j++)dp[i][j] = dp[i+1][j];dp[i][a[i]] = i;}for(i=1;i<=9;i++)p[i] = i;ans = 0;while(1){now = 1;for(i=1;i<=9;i++){now = dp[now][p[i]]+1;if(now==0)break;}if(now!=0)     //存在ans++;if(next_permutation(p+1, p+10)==0)break;}printf("%d\n", ans);return 0;
}

牛客练习赛23: D. 托米的咒语(暴力)相关推荐

  1. 托米的位运算 牛客练习赛23 C

    题目:题目 1.赛时WA了6次,看题解才发现自己思路错了.正确思路见注释 //这道题第一开始想的是,先升序,转换成二进制,找到__builtin__ffc()最大的那一个数 //"" ...

  2. 牛客练习赛23 B-托米的划分 C++

    题目: 链接:https://www.nowcoder.com/acm/contest/156/B 来源:牛客网 题目描述 欧洲人托米非常喜欢数字,他经常在空闲时玩下面的游戏 对于一个数字 n, 托米 ...

  3. 牛客练习赛23 托米的咒语

    托米没有完成上一个任务,准备施展黑魔法推倒 1317 黑魔法咒语被描述为一个 长为 n 的,仅包含小写英文字母 'a'...'i' 的字符串,在托米所在的星球,魔法造成的每次有效伤害都是来自他的一个子 ...

  4. 牛客练习赛13 B 幸运数字Ⅱ 【暴力】【二分】

    题目链接 https://www.nowcoder.com/acm/contest/70/B 思路 没有代码限制 先打表 打出 幸运数字的表 然后 二分查找 第一个 大于 r 的幸运数字 然后 往 L ...

  5. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  6. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

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

  7. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  8. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  9. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

最新文章

  1. 国内人脸识别第一案,我们来谈谈国外法规和隐私保护技术
  2. VS2017离线包下载
  3. Python入门100题 | 第041题
  4. 树莓派:VNC远程控制
  5. DL之DNN:自定义MultiLayerNet(5*100+ReLU+SGD/Momentum/AdaGrad/Adam四种最优化)对MNIST数据集训练进而比较不同方法的性能
  6. matlab腔内光子寿命,mcFORnp matlab环境下,利用蒙特卡洛模拟光子包在生物组织内的光路传输 271万源代码下载- www.pudn.com...
  7. 吴恩达《神经网络与深度学习》精炼笔记(4)-- 浅层神经网络
  8. 大数据学习笔记25:MR案例——自定义输入输出格式处理个人成绩
  9. 2018年智能手表出货量曝光 苹果Apple Watch占据半壁江山
  10. 设置linux RHEL6.6本地镜像作为yum源
  11. 协同oa办公系统在线演示下载地址
  12. Inpaint 5.6 图片去水印工具 限时免费
  13. java get中文乱码怎么解决_java中get请求中文乱码怎么办?
  14. Allegro 走高速线等长线时怎么画成椭圆的走线
  15. 计算机软件网络工程师考试试题,计算机软件水平考试《网络工程师》试题及答案(6)...
  16. 2018下半年Android面试历程
  17. 【Android面试】Android中高级开发面试必问,7年外包一飞冲天
  18. (codeforces)D. Cloud of Hashtags
  19. Android监听程序进入后台,或者恢复到前台
  20. 控制理论中的几种稳定性

热门文章

  1. 零基础学python知乎-零基础人员可以学习python吗?|Python培训基础教程
  2. python能做什么工作-谁适合学Python?学了Python可以做什么工作?
  3. mysql问题排查_mysql问题排查
  4. python抛硬币正面向上概率_Python-计算抛硬币出现连续10次正面朝上的概率的仿真实验...
  5. 数据库并发抢红包_Redis悲观锁解决高并发抢红包的问题
  6. 用户名、密码都有值激活提交按钮
  7. laydate报Uncaught TypeError: Cannot read property 'appendChild' of undefined
  8. 【java笔记】random类生成随机数
  9. 《嵌入式》复习资料公共版
  10. python headers 随机_0基础学Python之反爬虫利器,搭建HTTP代理~~