【LGR-148-Div.3】洛谷基础赛 #1 & MGOI Round I
据说是普及组难度?
T1 P9502 『MGOI』Simple Round I | A. 魔法数字
\(100pts\)
题目描述
初级魔法士小 M 的魔法数字是 \(2\)。
给定一个正整数 \(n\),小 M 需要找到最大的 偶数 \(m\),使得 \(2^m<n\)。
- 又双叒叕是个水题,
然后被又双叒叕水题爆切。。。。。。 - 只要判断 \(log2(n)\%2\) 是否为偶数,并且不能正好是 \(2\) 的 \(n\) 次方,然后输出即可。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
cin>>n;
if(int(log2(n))%2==0&&int(log2(n))!=log2(n))cout<<(int)log2(n);
else if(int(log2(n))%2==1) cout<<(int)log2(n)-1;
else cout<<int(log2(n)-2);
}
T2 P9503 『MGOI』Simple Round I | B. 魔法照相馆
\(100pts\)
题目描述
小 M 正在准备入学所必需的魔法士证件,因此他来到了纵深巷的魔法照相馆。
在等待的时候,小 M 注意到魔法照相馆有三个幕布,颜色从左到右分别是红色、蓝色和白色。店主 zx 先生会根据客人的需求拉上或拉下这三个幕布,如下图所示:
幕布摆放在左边,按照红蓝白的顺序排列。人则坐在幕布右边,而 zx 先生则站在最右边给人拍照。幕布从右往左数,第一个没有拉上的幕布颜色将成为照片的背景颜色。
每次 zx 先生拉上或拉下一个幕布都需要消耗一个时间单位,而拍照不消耗时间。小 M 已经知道了他前面所有总共 \(n\) 个客人的需求。在初始状态为 全部拉下 的情况下,请你帮助小 M 计算他至少需要等待多少个时间单位。
- 水题,只要模拟状态,再对号入座,就轻轻松松 \(AC\) 了。
- (其中红色幕布不会拉上去)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,sum=0,zt=111;
char q;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>q;
//111 110 101 100
if(q=='W'&&(zt==101||zt==111))continue;
else if(q=='B'&&(zt==110))continue;
else if(q=='R'&&(zt==100))continue;
if(q=='W')
{
if(zt==110)zt=111,sum++;
else if(zt==100)zt=101,sum++;
}
if(q=='B')
{
if(zt==111||zt==100)zt=110,sum++;
else if(zt==101)zt=110,sum+=2;
}
if(q=='R')
{
if(zt==111)zt=100,sum+=2;
else if(zt==110||zt==101)zt=100,sum++;
}
}
cout<<sum;
}
- 将各个幕布的状态枚举,拉下为 \(1\) ,拉上为 \(0\) 。