题目
Description
N个士兵排成一队进行军事训练,每个士兵的等级用1…K范围内的数来表示,
长官每隔1小时就随便说出M个等级a1,a2…am(1≤ai≤K,M个等级中允许有重复),
如果这M个等级组成的序列是排成一队的N个士兵等级序列的子序列,
那么训练继续;否则训练结束。长官想知道,M至少为多少时,训练才有可能结束。
例:士兵等级序列为1 5 3 2 5 1 3 4 4 2 5 1 2 3,
长官说出的等级序列为5 4,那么训练继续,
如果长官说出的等级序列为4 4 4,那么训练结束。
Input
第一行为两个整数N和K(1≤N≤100000,1≤K≤10000),下面N行,每行一个数,按队伍顺序表示每个士兵的等级。
Output
包括一行,只包含一个数M,表示当长官至少说出M个等级的时候,训练才有可能结束。
Sample Input
14 5
1
5
3
2
5
1
3
4
4
2
5
1
2
3
Sample Output
3

思路
这道题目乍一看是水题但实际上就***
首先!题目里面说的子序列不是子串!
子串是在一个串里面连续的一段,特别的,空串或这个串也是这个串的子串。
而子序列没这么多要求啊!
它只要求:这个串里出现的元素是在原串里面按顺序出现的就可以了!!!
那么代码实现就很简单了,先实现最大能喊 几次不结束,然后+1输出就可以了。

代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[100010],c[100010],n,m,k,ans;
 4 int read()
 5 {
 6    int x=0,f=1;
 7    char ch=getchar();
 8    while(ch<'0'||ch>'9'){
 9        if(ch=='-')
10            f=-1;
11        ch=getchar();
12    }
13    while(ch>='0'&&ch<='9'){
14        x=(x<<1)+(x<<3)+(ch^48);
15        ch=getchar();
16    }
17    return x*f;
18 }
19 int main()
20 {
21     n=read(),m=read();
22     for(int i=1;i<=n;i++)
23         a[i]=read();
24     for(int i=1;i<=n;i++)
25     {
26         if(c[a[i]]==ans)
27         {
28             c[a[i]]++;
29             k++;
30         }
31         if(k==m)
32         {
33             ans++;
34             k=0;
35         }
36     }
37     cout<<ans+1<<endl;
38     return 0;
39 }

转载于:https://www.cnblogs.com/moyujiang/p/11213477.html

【题解】士兵训练-C++相关推荐

  1. 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest 不完整题解与训练赛复盘

    RT,训练赛复盘+题解,赛中过6题,又比理论上界少1题( 发挥比较惊险刺激,前期直接拉闸,中后期翻盘成功. (别问我为什么又紫了,这波是两场div1各掉快100分,第二场试图跳车,不知道跳下去没有) ...

  2. JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练

    Description Input 第一行两个数n,q 表示士兵数以及阅兵次数. 接下来一行n-1 个整数,第i 个整数表示士兵i+1 的直属教官. 接下来n 行每行两个整数i i b ,l 描述一位 ...

  3. NOI训练行动路线图

    编写程序是一门科学,也是一门艺术. 程序是科学与艺术的变奏曲. 本文提供有关NOI和NOIP训练资源,有助提高程序设计能力,适合所有程序设计初学者. 序言 <NOI题解-CCF>程序几乎都 ...

  4. 用链表实现士兵队列训练

    一 问题描述 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队.训练的规则为从头开始进行1到2报数,凡报2的出列,剩下的向小序号方向靠拢,再从头开始进行1到3报数,凡报到3出列,剩 ...

  5. arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器

    摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...

  6. 比赛-模拟赛 (17 Aug, 2018) (待施工)

    1.) 小X的质数 线性筛就可以了.由唯一分解定理,如果 $ x = p_a \cdot p_b $ ,那么 \(x\) 也一定只能这样分解质因数.所以 \(x\) 也是符合题目条件的数. #incl ...

  7. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——第1章 系统•嵌入•硬件 01-01 Welcome on board!...

    本节书摘来自异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第1章,第01-01节,作者 邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  8. Meaningless Sequence Gym - 102832D

    Meaningless Sequence Gym - 102832D 题意: 给你n和c,an的公式如下图 让你求a0+-an的和,mod 1e9+7 题解: 训练时推了好一阵子才和队友推出 我看网上 ...

  9. 一个月 200 题,命中 80%,拿下 BAT,我独特的高效刷题法

    来源 | 陈同学在搬砖 我叫陈同学 机械专业  非科班  渣硕 擅长搬砖和划水 我和各位一样 我也是21届的 我也在近经历秋招 然后拿到过BATH的offer (字节跳动 阿里巴巴 腾讯 华为) 还有 ...

最新文章

  1. 每天一道LeetCode-----给定一个矩阵,如果某个元素是0,就将所在行所在列上所有元素否置0
  2. Java Scanner next()方法与示例
  3. 我可能不适合做前端,你呢?
  4. LA 2957 最大流,最短时间,输出路径
  5. linux windows 结构体,Linux下C语言——结构体对齐
  6. Mac 应用开发--Cocoa运用程序显示或隐藏MainNemu
  7. vue 富文本编辑器,插件
  8. [TransactionInterceptor] [ERROR] Applicationexception overridden by rollback exception
  9. 文献阅读—GAIN:Missing Data Imputation using Generative Adversarial Nets
  10. 金融区块链标准规范解读
  11. HUAWEI Mate bookD 加装固态
  12. 快应用联盟展示入口合集(11月更新)
  13. Linux后台运行Jar方法
  14. (理财六)贷款用途的分类
  15. 定义符号常量pi.const float pi= 3.1415926f; 这句话是否正确
  16. 竣达技术丨多台精密空调微信云监控方案
  17. 百度feed 寒假实习 一面二面(offer)
  18. 历年 ESRI 开发者大会 网盘资料
  19. oracle sql 获取当前时间,Oracle 在SQL语句中如何获取系统当前时间并进行操作
  20. 电池工况测试 matlab,电动汽车锂电池荷电状态估计研究

热门文章

  1. 肖特基二极管与普通二极管的区别
  2. Vitamio 依赖导入 步骤
  3. (zz)计算复杂性:NP=P?
  4. UA OPTI570 量子力学23 角动量基础
  5. html在线弹幕,HTML5 弹幕
  6. html select不允许选择,设置select下拉框不能选择
  7. 产品创新与研发管理的八大典型问题
  8. A brief introduction to complex analysis
  9. 蓝牙5.2发布对TWS耳机有什么影响?耳机工厂告诉你!
  10. 实验一Linux开发环境搭建与LED点亮