NOIP模拟赛20161023
|
题目名 |
双色球 |
魔方 |
czy的后宫 |
mex |
|
源文件 |
ball.cpp/c/pas |
cube.cpp/c/pas |
harem.cpp/c/pas |
mex.cpp/c/pas |
|
输入文件 |
ball.in |
cube.in |
harem.in |
mex.in |
|
输出文件 |
ball.out |
cube.out |
harem.out |
mex.out |
|
时间限制 |
1000MS |
1000MS |
1500MS |
1000MS |
|
内存限制 |
256MB |
256MB |
256MB |
256MB |
|
测试点 |
10 |
10 |
10 |
10 |
|
测试点分值 |
10 |
10 |
10 |
10 |
Problem 1 双色球(ball.cpp/c/pas)
【题目描述】
机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233
“来来来,学弟,我考你道水题检验一下你的水平……”
一个栈内初始有n个红色和蓝色的小球,请你按照以下规则进行操作
- 只要栈顶的小球是红色的,将其取出,直到栈顶的球是蓝色
- 然后将栈顶的蓝球变成红色
- 最后放入若干个蓝球直到栈中的球数为n
以上3步骤为一次操作
如栈中都是红色球,则操作停止,请问几次操作后停止
chenzeyu97出完题发现他自己不能AC所以想请你帮忙
【输入格式】
第一行为一个整数n,表示栈的容量为n
第二行为一个字符串,第i个字符表示自顶向下的第i个球的颜色,R代表红色,B代表蓝色
【输出格式】
一个整数表示操作数
【样例输入】
样例1:
3
RBR
样例2:
4
RBBR
【样例输出】
样例1:2
样例2:6
【数据范围】
50%的数据,1<=n<=20
100%的数据,1<=n<=50
模拟,复杂度好像会爆炸
发现一个蓝色变成红色,它前面必须全是红色
考虑全蓝色的情况f[i]=2*f[i-1]+1,就是汉诺塔
这样从前往后扫,每个蓝色带来的操作数就是f[i]-f[i-1](因为前面已经是红色了,一个f[i-1]不用了)
PS:灰哥的找规律做法,每个位置变蓝的操作数1,2,4,8,16.........
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=;
typedef long long ll;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,a[N],p=;
ll f[N];
char s[N];
int main(int argc, const char * argv[]){
freopen("ball.in","r",stdin);
freopen("ball.out","w",stdout); n=read();
scanf("%s",s+);
for(int i=;i<=n;i++) a[i]= s[i]=='R'?:;
for(int i=;i<=n;i++) f[i]=*f[i-]+;
ll ans=;
for(int i=;i<=n;i++)
if(a[i]==) ans+=f[i]-f[i-];
printf("%lld",ans);
}
Problem 2 魔方(cube.cpp/c/pas)
【题目描述】
ccy(ndsf)觉得手动复原魔方太慢了,所以他要借助计算机。
ccy(ndsf)家的魔方都是3*3*3的三阶魔方,大家应该都见过。
(3的“顺时针”改为“逆时针”,即3 4以图为准。)
ccy(ndfs)从网上搜了一篇攻略,并找人翻译成了他自己会做的方法。现在告诉你他的魔方情况,以及他从网上搜到的攻略,请你求出最后魔方变成什么样子。
【输入格式】
第一行,一串数字,表示从网上搜到的攻略。
下面6*3行,每行3个数字,每三行表示魔方一个面的情况,六个面的顺序是前、后、左、右、上、下。
【输出格式】
6*3行,表示处理后的魔方,形式同输入。
【样例输入】
23
121
221
111
123
321
111
123
321
132
132
231
132
121
112
233
332
111
333
【样例输出】
123
222
113
212
321
113
122
321
132
121
333
121
211
312
113
331
111
331
【样例解释】
【数据范围】
40%的数据,攻略的长度小于5且仅有4种操作的其中一种
100%的数据,攻略的长度小于100
洛谷2007
大模拟
注意每个图的方向很奇葩,参考样例
样例和数据有点问题,顶部的顺时针和逆时针旋转颠倒了,按着错误来就过了
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=;
typedef long long ll;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,s[N],a[][][],b[];
char tmp[N],t[][][];
void cpy(int x[][],int y[][]){
for(int i=;i<=;i++)
for(int j=;j<=;j++) y[i][j]=x[i][j];
}
void rot(int p,int d){//1 shun 2 ni
int na[][];
cpy(a[p],na);
if(d==){
for(int i=;i<=;i++) b[i]=na[][i];
for(int i=;i<=;i++) a[p][][i]=na[-i+][];
for(int i=;i<=;i++) a[p][i][]=na[][i];
for(int i=;i<=;i++) a[p][][i]=na[-i+][];
for(int i=;i<=;i++) a[p][i][]=b[i];
}else{
for(int i=;i<=;i++) b[i]=na[][i];
for(int i=;i<=;i++) a[p][][i]=na[i][];
for(int i=;i<=;i++) a[p][i][]=na[][-i+];
for(int i=;i<=;i++) a[p][][i]=na[i][];
for(int i=;i<=;i++) a[p][i][]=b[-i+];
}
}
void sol(int flag){
if(flag==){
for(int i=;i<=;i++){
b[i]=a[][i][];
a[][i][]=a[][i][];
a[][i][]=a[][i][];
a[][i][]=a[][i][];
a[][i][]=b[i];
}
rot(,);
}else if(flag==){
for(int i=;i<=;i++){
b[i]=a[][i][];
a[][i][]=a[][i][];
a[][i][]=a[][i][];
a[][i][]=a[][i][];
a[][i][]=b[i];
}
rot(,);
}else if(flag==){
for(int i=;i<=;i++){
b[i]=a[][][i];
a[][][i]=a[][][i];
a[][][i]=a[][][i];
a[][][i]=a[][][i];
a[][][i]=b[i];
}
//rot(5,2); right
rot(,);
}else if(flag==){
for(int i=;i<=;i++){
b[i]=a[][][i];
a[][][i]=a[][][i];
a[][][i]=a[][][i];
a[][][i]=a[][][i];
a[][][i]=b[i];
}
//rot(5,1); right
rot(,);
} // for(int i=1;i<=6;i++)
// for(int j=1;j<=3;j++){
// for(int k=1;k<=3;k++)
// printf("%d",a[i][j][k]);
// putchar('\n');
// }
// printf("\n\n\n");
}
int main(int argc, const char * argv[]){
freopen("cube.in","r",stdin);
freopen("cube.out","w",stdout);
scanf("%s",tmp+);
int n=strlen(tmp+);
for(int i=;i<=n;i++) s[i]=tmp[i]-'';
for(int i=;i<=;i++)
for(int j=;j<=;j++){
scanf("%s",t[i][j]+);
int len=strlen(t[i][j]+);
for(int k=;k<=len;k++) a[i][j][k]=t[i][j][k]-'';
}
for(int i=;i<=n;i++) sol(s[i]);
for(int i=;i<=;i++)
for(int j=;j<=;j++){
for(int k=;k<=;k++)
printf("%d",a[i][j][k]);
putchar('\n');
} }
Problem 3 czy的后宫(harem.cpp/c/pas)
【题目描述】
czy要妥善安排他的后宫,他想在机房摆一群妹子,一共有n个位置排成一排,每个位置可以摆妹子也可以不摆妹子。有些类型妹子如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看了。假定每种妹子数量无限,求摆妹子的方案数。
【输入格式】
输入有m+1行,第一行有两个用空格隔开的正整数n、m,m表示妹子的种类数。接下来的m行,每行有m个字符1或0,若第i行第j列为1,则表示第i种妹子第j种妹子不能排在相邻的位置,输入保证对称。(提示:同一种妹子可能不能排在相邻位置)。
【输出格式】
输出只有一个整数,为方案数(这个数字可能很大,请输出方案数除以1000000007的余数。
【样例输入】
2 2
01
10
【样例输出】
7
【样例说明】
七种方案为(空,空)、(空,1)、(1、空)、(2、空)、(空、2)、(1,1)、(2,2)。
【数据范围】
20%的数据,1<n≤5,0<m≤10。
60%的数据,1<n≤200,0<m≤100。
100%的数据,1<n≤1000000000,0<m≤100。
ch30 摆花
一眼看出正解:矩阵乘法加速DP
然后已忘记矩阵乘法
就打了个裸DP加滚动数组加卡常,还是60
f[i][j]前i个mz以j结尾
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int M=,MOD=;
typedef long long ll;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,m,g[M][M];
ll f[][M],p=;
char s[M];
inline void mod(ll &x){if(x>=MOD) x-=MOD;}
void dp(){
for(int j=;j<=m;j++) f[p][j]=;
for(int i=;i<=n;i++){
p^=;
for(int j=;j<=m;j++){
f[p][j]=;
for(int k=;k<=m;k++) if(g[j][k]){
f[p][j]+=f[p^][k];
mod(f[p][j]);
}
}
}
} int main(int argc, const char * argv[]){
freopen("harem.in","r",stdin);
freopen("harem.out","w",stdout); n=read();m=read();
for(int i=;i<=m;i++){
scanf("%s",s+);
for(int j=;j<=m;j++) g[i][j]=(s[j]-'')^;
}
for(int i=;i<=m;i++) g[i][]=g[][i]=;
dp();
ll ans=;
for(int i=;i<=m;i++) ans=(ans+f[p][i])%MOD;
printf("%lld",ans); }
正解
http://www.cnblogs.com/candy99/p/5991535.html
mex
我靠不是bzoj那道嘛
果断30分暴力
NOIP模拟赛20161023的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
随机推荐
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException
尝试加载 Oracle 客户端库时引发 BadImageFormatException 工程师给计算机诊断,就像医生给病人诊断一样,很多同样的症状,可能是由多种截然不同的原因导致的. 最近进行C# ...
- SQL Server:APPLY表运算符
SQL Server 2005(含)以上版本,新增了APPLY表运算,为我们日常查询带来了极大的方便. 新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表 ...
- tomcat启动时候报错Can't convert argument: null
一.启动报错: 为了避免导入的项目重名,我先修改了前一个项目的名称. 重新启动该项目至tomcat,报错:java.lang.IllegalArgumentException: Cant conver ...
- EC笔记,第二部分:7.为多态基类声明虚析构函数
7.为多态基类声明虚析构函数 1.为多态基类声明虚析构函数 code1: class A{ public: int* a; A():a(new int(5)) {} ~A(){ delete a; } ...
- Difficult Melody(映射)
题目链接 http://vjudge.net/contest/137242#problem/D Description You're addicted to a little game called ...
- bzoj 1001狼抓兔子(对偶图+最短路)最大流
推荐文章:<浅析最大最小定理在信息学竞赛中的应用>--周冬 题目 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...
- 23、ASP.NET MVC入门到精通——业务层和数据层父类及接口-T4模板
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在上一篇中,我们已经把项目的基本框架搭起来了,这一篇我们就来实现业务层和数据层的父接口及父类. 1.我们先来定义一个业务层父接口IBaseB ...
- 原生JS实战:写了个斗牛游戏,分享给大家一起玩!
本文是苏福的原创文章,转载请注明出处:苏福CNblog:http://www.cnblogs.com/susufufu/p/5869953.html 该程序是本人的个人作品,写的不好,未经本人允许,请 ...
- Android—基于Socket与上传图片到客户端
最近项目中需要客户端和Socket互相传递数据时候需要相互传递图片所以做下总结以免以后忘记,也希望给大家带来帮助. 先上客户端的代码: 根据图片名称上传照相机中单个照片(此方法为自己封装) 参数所代表 ...
- xcode8打包ipa文件, application loader上传成功,但是iTunes Connect不显示构建版本
最近更新的Xcode8.今天提交新项目时.按照以往的流程走 Xcode 编译ipa文件.applicaiton loader提交成功 但是.iTunes connect构建版本不显示.非常疑惑.平时等 ...