【题解】ball 数论
题目
题目描述:
众所周知的是Dr.Bai 穷困潦倒负债累累,最近还因邦邦的出现被班上的男孩子们几乎
打入冷宫,所以Dr.Bai 决定去打工赚钱。
Dr.Bai 决定做玩♂球的工作,工作内容如下。
老板提供一根圆筒,里面随意的放着n 个球
仅有粉红色和蓝色。
因为老板喜欢粉红色,于是他要求Dr.Bai进行操作使得筒内只有粉红色球,而操作也有规定,将一下三个步骤算作一次操作:
将顶端的粉色球弹出,直到是蓝色球。
然后把第一个蓝色球变成可爱的粉红色。
向筒里面扔蓝色球,直到球的数量又是优美的n。
然而斤斤计较精打细算的Dr.Bai 想要知道他最少多少次操作使得任务完成,这样的话
Dr.Bai 就能去摸鱼了
可是Dr.Bai 心里只有更高更妙的物理,所以Dr.Bai 请你来帮他计算次数。
输入格式
输入为两行,第一行为一个正整数n(代表球的数量)
第二行为长为n 仅由B 和P 组成的字符串。
输出格式
输出仅一行,为一个正整数m(代表最少使得筒内仅有粉红色球的操作数)
样例
输入
4
PBBP
输出
6

数据范围
对于20%的数据:1<=N<=10
对于30%的数据:1<=N<=20
对于100%的数据:1<=N<63
思路
部分分
很明显的就是纯模拟,也比较好打,时间复杂度是 O(2n)
正解
将状态二进制化后……我们就能找规律了。
其实好像叫做模拟计数问题,但是我觉得就是找规律
在自栈顶向下的第 k 个位置上的蓝球变为粉球的代价是 2k-1次。
对于整体的栈,我们进行单独思考,对仅有第一个球为 P 时操作数为 1,那么仅有第 N
个球为 B 时,前面的 P 球被弹出,第 N 个球变为 P,又填入了 N-1 个 B 球。接下来的问题就是将前面的 N-1 个 B 球转化掉。
于是从栈底往栈顶推,保证栈底开始向上连续个球全部变为 P,之后就不需要再对这
连续个 P 球操作,问题就变为子问题。然后对于第 N 个为 B 的球的操作数,等于前面 N-1 个球转化的操作数之和加上自己
为 1 的操作数,可以推出 1,2(1+1),4(1+2+1),8(1+2+4+1)……
所以知道了对于任意一种只有一个 B 球的情况的操作数接下来需要证明彼此间不能互相影响(注意点 1),于是答案就是里面所有为 B 的球
的操作数之和。那么程序上的实现就是很简单的二进制转十进制了。
要注意两个点。
1.意识到蓝球不会对彼此产生影响,因为可见使得蓝球变为粉球,仅有操作中的第
二步,那么当一个蓝球 可以发生改变的时候,他之前的蓝球定然已经全部转化成
粉球了,同理它的转化也不会影响到之后的蓝球的转化,因此才能确定最后答案
是各个蓝球的代价数之和,即转化为二进制后直接转为十进制作为答案。2.这是个栈!所以要注意加入的顺序,最后转化的二进制串是和输入反过来的
代码
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
char s[70],a[70]={0};
int n;
int main(){
freopen("ball.in","r",stdin);
freopen("ball.out","w",stdout);
int n;
scanf("%d",&n);
scanf("%s",s);
for(register int i=0;i<n;++i) if(s[i]=='B') a[i]++;
long long ans=0;
for(register int i=0;i<=n;++i) {
if(a[i])
ans+=pow(2,i);
}
printf("%lld",ans);
return 0;
}
【题解】ball 数论的更多相关文章
- POJ 1845-Sumdiv 题解(数论,约数和公式,逆元,高中数学)
题目描述 给定A,B,求A^B的所有因数的和,再MOD 9901 输入 一行两个整数 A 和 B. 输出 一行,一个整数 样例输入 2 3 样例输出 15 提示 对于100%的数据满足:0 <= ...
- UVA571Jugs题解--简单数论(其实是瞎搞)
题目链接 https://cn.vjudge.net/problem/UVA-571 分析 刚做了道倒水问题的题想看看能不能水二倍经验,结果发现了这道题 题意翻译:https://www.cnblog ...
- Codeforces 515C 题解(贪心+数论)(思维题)
题面 传送门:http://codeforces.com/problemset/problem/515/C Drazil is playing a math game with Varda. Let’ ...
- luoguP1082 同余方程 题解(NOIP2012)(数论)
luoguP1082 同余方程 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include& ...
- 【BZOJ4173】数学 题解(数论)
前言:体验到了推式子的快感orz 题目大意:求$\varphi(n)*\varphi(m)*\sum_{n\ mod\ k+m\ mod\ k\geq k} \varphi(k)\ mod\ 9982 ...
- 2017年浙江理工大学程序设计竞赛校赛 题解&源码(A.水, D. 简单贪心 ,E.数论,I 暴力)
Problem A: 回文 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1719 Solved: 528 Description 小王想知道一个字 ...
- Bzoj 3505: [Cqoi2014]数三角形 数论
3505: [Cqoi2014]数三角形 Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description
- Tsinsen A1504. Book(王迪) 数论,贪心
题目:http://www.tsinsen.com/A1504 A1504. Book(王迪) 时间限制:1.0s 内存限制:256.0MB Special Judge 总提交次数:359 ...
- 「POJ3696」The Luckiest number【数论,欧拉函数】
# 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...
随机推荐
- idea下不能运行main 函数
解决办法: 需要修改.idea/workspace.xml 在<component name="PropertiesComponent">里添加<property ...
- 8张图带你了解iptables的前世今生
1 安全技术和防火墙 1 安全技术和防火墙 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化.定位来自内 外网络的威胁情况,主要以提供报警和事后监 ...
- 使用MindSpore的线性神经网络拟合非线性函数
技术背景 在前面的几篇博客中,我们分别介绍了MindSpore的CPU版本在Docker下的安装与配置方案.MindSpore的线性函数拟合以及MindSpore后来新推出的GPU版本的Docker编 ...
- TLB和CPU缓存
TLB 如果每次应用程序访问一个线性地址都需要先解析(查PDT,PTT)那么效率十分低,为了提高执行效率CPU在CPU内部建立了一个TLB表,此表和寄存器一样访问速度极高.其会记录线性地址和物理地址之 ...
- UVA OJ 10035 - Primary Arithmetic
Primary Arithmetic Children are taught to add multi-digit numbers from right-to-left one digit at a ...
- 【Cocos2d-x】屏蔽Emoji并解决由于Emoji导致的崩溃问题
IOS的Emoji表情因为编码问题,在Android手机上无法正常显示,如果当前的cc.Label节点使用的是系统字,在系统字库中找不到对应编码的字符,会导致崩溃. 为了解决这个问题,又要兼顾新老版本 ...
- [bug] Scala eclipse:找不到或无法加载主类
原因 混合java 和scala 无法编译 解决 右键项目 > properties > scala Compiler >勾选Use Project Setting > Sca ...
- WIKI和JIRA-安装与使用
1.Wiki介绍1.1 Wiki(多人协作的写作系统)是一种超文本系统,这种超文本系统支持面向社群的协作式写作,即人人可编辑.在公司的项目管理中,可以把它当作文档管理和信息组织(Portlet)系统来 ...
- 10.11 arping:发送arp请求
arping命令 是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包检查局域网内所有设备的硬件地址. arping 命令的参数选项及说明 -c <次数> ...
- Mybatis Plus 多租户架构实现(完美教程)
一.背景介绍 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性. 简单讲 ...