QUTOJ 1363 麻烦的小卓 思维

来源:互联网 发布:mac电脑翻墙教程 编辑:程序博客网 时间:2024/05/17 21:03

1363: 麻烦的小卓

时间限制: 1 Sec  内存限制: 128 MB
提交: 223  解决: 57

题目描述

 小卓同学一直苦于单身,这天他终于鼓起勇气给自己心仪的女生买了一串珍珠项链(项链首尾相连), 当他拿到项链之后发现每个珍珠的颜色不一致(假定只有黄色和白色两种),黄白分布是任意的, 现在他能进行两种操作

      1.选取一个珍珠换成自己喜欢的颜色

      2.交换项链上两个珍珠的位置;

  请问,小卓同学最少操作几次才能够使项链中的颜色交替分布

  注:如果永远不能达到小卓同学想要的情况,输出: What a pity!

输入

多组数据

  第一行输入n表示珍珠项链的长度 ( 3 <=n<=100 000);

  第二行输入长度为n的字符串, ‘w’表示白色珍珠,’y’表示为黄色珍珠;

输出

 最少的操作次数

样例输入

4
wyyw3
wyw
6
wwwwww

样例输出

1
What a pity!
3
思路:要让我们最小的步数去颜色交替,由于会成环,所以当有奇数个珍珠时一定不可以交替,直接特判.
当为偶数时,珍珠最后的交替结果一定是 wywywy... 或 ywywyw...其中的一种,那么我们就分别将给定的序列与最后结果的两种可能序列比对,如果原来的位置为y
而我们是w 那么w的操作数要+1,反之y+1。
对两种序列比对完后,我们每次取的都是w和y的最大值,因为min(w,y)的次数是通过交换使序列交替,而剩下的那些需要我们去改变其颜色,最后再取两种操作中
最小的即可.
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char s[100010];int n;int main(){   while(scanf("%d",&n)!=EOF)     {    scanf("%s",s);//还有我想知道为啥邀请赛的时候我getchar+gets过不看了这个题;          if(n&1)          {          printf("What a pity!\n");          continue;}          char c;          int y=0,w=0,ans1,ans2;          c='w';          for(int i=0;i<n;i++)          {    if(c!=s[i])                {  if(c=='w')                    y++;                   else                    w++;                }                if(c=='w')                 c='y';                else                 c='w';           }        ans1=max(y,w);        c='y';        w=0;        y=0;        for(int i=0;i<n;i++)        {   if(s[i]!=c)            {   if(c=='w')                    y++;                else                   w++;              }                if(c=='w')                c='y';               else                c='w';        }        ans2=max(y,w);        printf("%d\n",min(ans1,ans2));               }     return 0;}
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 店员不维护老板怎么办 准考证号会过期怎么办 驾校准考证丢了怎么办 科目二下大雨怎么办 考科目二下雨天怎么办 普通话总是二乙怎么办 科目二很紧张怎么办 18年科目四缺考怎么办 个人医保卡欠费怎么办 医保欠费不想交怎么办 怀化市驾考绿色通道怎么办? 签注易不能办理怎么办 网上怎么办护照和签证 意大利被偷护照怎么办 户口在学校 怎么办签证 户口换了身份证怎么办 广州在校大学生怎么办护照 民间借贷无法还怎么办 退伍档案没接收怎么办 档案被单位扣住怎么办 公积金提不出来怎么办 公积金还贷款怎么办手续 科一预约失败怎么办 科四忘记预约怎么办 我科目一缺考了怎么办? 无可选考试场地怎么办 早产儿脑部发育不好怎么办 宝宝脑部发育不好怎么办 小孩脑部发育不好怎么办 8岁儿童智力低下怎么办 儿童食物不耐受怎么办 忘记就诊卡号怎么办 nt检查预约不到怎么办 听力不好科目三怎么办 青岛公安不立案怎么办 长春驾照丢了怎么办 驾照超期一个月怎么办 太原暂住证丢了怎么办 太原居住证丢了怎么办 太原自行车丢了怎么办 太原身份证丢了怎么办