题意:

      题意,哎!说道题意就蛋疼啊,比赛的时候就愣是把这个题目读成数字可以随意组合,比如123 可以拆成1 23 ,12 3 ,1 2 3,结果显然,水题当神题,各种想不出来,然后就显然的悲剧了,现在说下这个题目的意思给你一个串问你最少多少步操作可以把这个串变成合格的表达式组,每个合格表达式都是AB*的形式,A,B是数字,而且是1位的数字,只能是1位<哎!比赛的时候sb了>,然后AB*可以变成一个数字,也是1位的,是谁不重要,操作有两种,一个是在任意位置上添加一个字母1-9或者是*,另一个就是可以任意交换两个字符,问你变成合格的组合的最少步数,好像没说明白题意啊,那么我在举几个例子。1*1:我们可以直接把中间的*和后面的1交换,变成11*,11*可以转换成数字了,答案是1步11*234**:我们先把11*变成数字假如是A。34*变成B,那么就是A2B*
然后2B*可以转换成一个数字了C,加上前面的A还是一个可发数字AC,所以是0步。*:要在前面加两个数字变成AB*才能转换成一个纯数字串 所以是2

思路:

      首先我们要知道,假如最终的*个数为x,最终的数字个数a肯定是 a >= x + 1,这样的话我们的策略可以这样,我们先看看数字个数够不够,如果不够,那么先把数字填够,<这里当然是填到等于x+1的个数了,能剩则剩>,还有就是要知道,根本不用填*因为填*就是在为自己增加负担,填问数字我们就可以线性扫了,从前往后,对于每一个*如果前面的数字个数不满足了,那么就把当前的*和最后面的一个数字交换就行了,这样有点贪心的意思,具体看代码吧。





#include<stdio.h> 

#include<string.h>

#include<queue>

int num[1100];

char str[1100];

int main ()

{

   int t ,i ,Ans;

   scanf("%d" ,&t);

   while(t--)

   {

      scanf("%s" ,str);

      int l = strlen(str);

      int s1 = 0 ,s2 = 0;

      for(i = 0 ;i < l ;i ++)

      {

         if(str[i] == '*') num[i+1] = 1 ,s1 ++;

         else num[i+1] = 0 ,s2 ++;

      }  

      int now = 0;

      if(s2 < s1 - 1) now =  s1 + 1 - s2;

      Ans = now;

      for(i = 1 ;i <= l ;i ++)

      {

         if(num[i]) 

         {

            if(now >= 2) now --;

            else

            {

               Ans ++;

               for(int j = l ;j > i ;j --)

               if(!num[j])

               {

                  int t = num[i];

                  num[i] = num[j];

                  num[j] = t;

                  now ++;

                  break;   

               }

            }

         }

         else now ++;

      }

      if(!num[l]) Ans ++; 

      if(!s1) Ans = 0;

      if(num[1] && l == 1) Ans = 2; 

      printf("%d\n" ,Ans);

   }

   return 0;

}


Known Notation 39届亚洲赛牡丹江站K题的更多相关文章

  1. Building Fire Stations 39届亚洲赛牡丹江站B题

    题意:      给你一棵树,让你再里面选取两个点作为**点,然后所有点的权值是到这两个点中最近的那个的距离,最后问距离中最长的最短是多少,输出距离还有那两个点(spj特判). 思路:      现场 ...

  2. Average Score39届亚洲赛牡丹江站A题

    题意:       A班有n个人,B班有m个人,然后现在给你n-1个A班人的成绩,和m个B班人的成绩,然后题目要求求出A班剩下的没给成绩那个人的成绩范围,要求是这个人从A班转到B班后能使A,B的平均分 ...

  3. 2018ICPC网络赛(焦作站)K题题解

    一.题目链接 https://nanti.jisuanke.com/t/31720 二.题意 给$N$种船只,第$i$种船的载重量是$V_i$,数量是$2^{C_i}-1$.接下来有$Q$次询问,每次 ...

  4. 2014ACM/ICPC亚洲区域赛牡丹江站汇总

    球队内线我也总水平,这所学校得到了前所未有的8地方,因为只有两个少年队.因此,我们13并且可以被分配到的地方,因为13和非常大的数目.据领队谁oj在之上a谁去让更多的冠军.我和tyh,sxk,doub ...

  5. 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-A ( ZOJ 3819 ) Average Score

    Average Score Time Limit: 2 Seconds      Memory Limit: 65536 KB Bob is a freshman in Marjar Universi ...

  6. zoj 3822 Domination 概率dp 2014牡丹江站D题

    Domination Time Limit: 8 Seconds      Memory Limit: 131072 KB      Special Judge Edward is the headm ...

  7. 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation

    Known Notation Time Limit: 2 Seconds      Memory Limit: 65536 KB Do you know reverse Polish notation ...

  8. 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-I ( ZOJ 3827 ) Information Entropy

    Information Entropy Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Information ...

  9. 【2017 ICPC亚洲区域赛沈阳站 K】Rabbits(思维)

    Problem Description Here N (N ≥ 3) rabbits are playing by the river. They are playing on a number li ...

随机推荐

  1. Python爬虫学习一------HTTP的基本原理

    昨天刚买的崔大大的<Python3网络爬虫开发实战>,今天就到了,开心的读完了爬虫基础这一章,现记录下自己的浅薄理解,如有见解不到位之处,望指出. 1.HTTP的基本原理 ①我们经常会在浏 ...

  2. Django 页面缓存的cache_key是如何生成的

    页面缓存 e.g. @cache_page(time_out, key_prefix=key_prefix) def my_view(): ... 默认情况下,将使用配置中的default cache ...

  3. python基础学习之描述符和装饰器

    描述符的了解: 描述符协议: python描述符是一个"绑定行为"的对象属性,在描述符协议中,它可以通过方法重写属性的访问.这些方法有: __get__, __set__, 和__ ...

  4. 翻译:《实用的Python编程》06_01_Iteration_protocol

    目录 | 上一节 (5.2 封装) | 下一节 (6.2 自定义迭代) 6.1 迭代协议 本节将探究迭代的底层过程. 迭代无处不在 许多对象都支持迭代: a = 'hello' for c in a: ...

  5. 在vscode中go编码发生的问题整理

    引言 使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理. 前期准备,必看 ...

  6. P1049_装箱问题(JAVA语言)

    思路:动态规划的背包问题.使箱子剩余空间最小,也就是使箱内装的物品体积达到最大,我们可将物品的体积视为价值,然后按照01背包问题求解即可. //直接上模板 题目描述 有一个箱子容量为VV(正整数,0 ...

  7. 攻防世界 reverse 进阶 notsequence

    notsequence  RCTF-2015 关键就是两个check函数 1 signed int __cdecl check1_80486CD(int a1[]) 2 { 3 signed int ...

  8. 13、Script file 'E:\Anaconda Distribution\Anaconda\Scripts\pip-script.py' is not present.

    pip-script.py文件缺失问题 问题: Script file 'E:\Anaconda Distribution\Anaconda\Scripts\pip-script.py' is not ...

  9. 极速精简 Go 版 Logstash

    前言 今天来介绍 go-zero 生态的另一个组件 go-stash.这是一个 logstash 的 Go 语言替代版,我们用 go-stash 相比原先的 logstash 节省了2/3的服务器资源 ...

  10. SyntaxError :invalid syntax Python常见错误

    1.忘记在 if , elif , else , for , while , class ,def 声明末尾添加 ":" 2.使用 = 而不是 ==,= 是赋值操作符而 == 是等 ...