ZJNU 1531 - 丢手绢--中级
可以将相同的人数分块存在数组gp中先
例如RRGGGRBBBBRR
则gp[1~5]={2,3,1,4,2}
首先可以知道,如果要让没有相邻的相同,只需要每个gp[i]/2向下取整即可得出最少需要改变的个数
例如RGGGR,只看G,只需要改变中间的G即可
例如RGGGGR,只看G,可以选择改变1和3或者2和4位置的G、
最后,考虑首尾成环对答案的影响
例如RRRGRRR
gp[1~3]={3,1,3}
则由上面的说法可以得到答案为3/2+1/2+3/2=1+0+1=2人
但实际上首尾连接后有6个R坐在一起
至少需要改变3个人才能满足题意
另,如果所有人都同色
例如RRRRR
根据上面说法只需要改变5/2=2人
即改变2和4位置的人
但是这样1和5首尾相连后会导致同色的人坐在一起
这种情况下答案需要特判为(5+1)/2=3人
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
ios::sync_with_stdio();cin.tie();
int T,t,N,m,i,gp[],ans;
string s;
cin>>T;
for(t=;t<=T;t++){
cin>>N>>s;
s=" "+s;//下标移位
ans=m=;
for(i=;i<=N;i++)
if(s[i]==s[i-])
gp[m]++;
else
gp[++m]=;
if(s[]==s[N]&&N!=)
if(m!=){
gp[]+=gp[m];
m--;
}
else
gp[]++;
for(i=;i<=m;i++)
ans+=gp[i]/;
cout<<"Case #"<<t<<":\n"<<ans<<'\n';
} return ;
}
ZJNU 1531 - 丢手绢--中级的更多相关文章
- python玩丢手绢问题,出局的顺序
# 丢手绢问题# 游戏规则: 有N个小朋友玩丢手绢游戏,做成一圈,从第一个小朋友开始数数,从一开始数,数到指定数字的小朋友要出列,然后下一个小朋友继续从1开始数,依次类推,算出最后一个留下来的小朋友是 ...
- NC207040 丢手绢
NC207040 丢手绢 题目 题目描述 "丢丢丢手绢,轻轻地放在小朋友的后面,大家不要告诉她,快点快点抓住她,快点快点抓住她." 牛客幼儿园的小朋友们围成了一个圆圈准备玩丢手绢的 ...
- HOJ———丢手绢
hide handkerchief Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 丢手绢问题(约瑟夫问题)的python实现
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉. def fnA(p, personNum, cnt): times = cnt // pe ...
- Josephus problem(约瑟夫问题,丢手绢问题)
约瑟夫问题 约瑟夫环问题是一个数学应用题:已知n个人(以编号1,2,3.....,n)围坐在一张圆桌的周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列 ...
- ZJNU 1164 - 考试排名——中级
1.如果一个单元为0,表示没做过这题,不计入成绩 2.如果一个单位为负数,表示做错了这题,不计入成绩 所以只要一个单元为正数(不论是否有括号)都说明做出了这一题,计入成绩 将名字和成绩都当作字符串读入 ...
- ZJNU 1160 - 不要62——中级
取模判断,数组模拟 /* Written By StelaYuri */ #include<stdio.h> ]; int main(){ int n,m,i,s,t; ;i<;i+ ...
- ZJNU 1125 - A == B ?——中级
处理后再判断即可,处理过程注意考虑全面. /* Written By. StelaYuri */ #include<iostream> #include<string> usi ...
- ZJNU 1153 - 找单词——中级
状态转移b[i]记录价值为i的单词种类数d[j+k*i]+=b[j] , k<=a[i]&&j+k*i<=50表示价值为j+k*i的单词可以由价值为j的单词加上k个i字母转 ...
随机推荐
- JNI操作二维数组
之前的文章讲解了有关JNI使用方法,这篇文章进阶一点,介绍下JNI操作二维数组的方法.有了之前文章的操作JNI的方法,这里直接上代码了. Java代码部分 package com.testjni; p ...
- mysql 手动把字段设置为null
在根据经纬度计算距离的时候,发现有的视频点距离我当前位置的距离计算出来的为0,有的距离计算出来是几千公里,仔细看下数据库,发现了问题所在 计算出来几千公里的视屏点的经纬度是空不是null,然后我们手动 ...
- 每天一点点之vue框架开发 - History 模式下线上路由报404错误
vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 如果不想要很丑的 hash,我们可以用路由的 his ...
- 51nod 算法马拉松3 A:序列分解
序列分解 System Message (命题人) 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 小刀和大刀是双胞胎兄弟.今天他们玩一个有意思的游戏. 大刀给小刀准备了一个长度为n ...
- EUI库 - 10 - 使用自定义组件
步骤 1 在根节点,添加一个自定义的命名空间 2 可以设置skinName 自定义组件规范 1 不复用的不要用自定义组件 2 属性必须要有默认值(赋值为null也可以),因为TS编译器会把没有默 ...
- Ganglia 安装 No package 'ck' found
安装ConcurrecyKit,下载地址:https://github.com/concurrencykit/ck 编译安装即可 下面是一个歪果仁的解决办法,不过我没用上 I was buildi ...
- Jquery获取html标签,包含该标签本身
$(".test").prop("outerHTML"); 原生JS DOM里有一个内置属性 outerHTML,用来获取当前节点的html代码(包含当前节点) ...
- Dubbo与Zookeeper 简介
转自http://blog.csdn.net/congcong68/article/details/41113239 首先说一下Dubbo解决什么问题: (1)当服务越来越多时,服务Url配置管理变得 ...
- HDU_1059 多重背包问题
F - Dividing Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit ...
- 优秀的linux学习网站
从网络上拷贝别人归纳的列表. Linux优秀网站列表 国内 http://www.chinaunix.net/ 国内最火爆的unix/linux论坛 http://www.linuxforum.net ...