A

注意答案会超过int,考虑分l,r奇数和偶数来考虑即可。

#include<bits/stdc++.h>
using namespace std; long long l,r;
int main(){
while(cin>>l>>r){
if(l%2==1){
l++;
}
if(r%2==1){
r--;
}
if(l>r){
cout<<"0"<<endl;
continue;
}
cout<<(r-l+2)/2<<endl;
}
}

B

如果这个马存活下来,说明前面没有比他跑得快的。

按着坐标排序,记录前缀最大值就好了。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
pair<int,int> P[maxn];
int n;
int main(){
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;i++){
scanf("%d%d",&P[i].first,&P[i].second);
}
int Mx = -1;
int Ans = 0;
sort(P+1,P+1+n);
for(int i=1;i<=n;i++){
if(Mx>P[i].second){
continue;
}
Mx = max(P[i].second,Mx);
Ans++;
}
cout<<Ans<<endl;
}
}

C

dp1[i]表示以i结尾的最长上升序列,dp2[i]表示以i开头的最长下降序列。

然后check一下就好了。

#include<bits/stdc++.h>
using namespace std; const int maxn = 1e6+7;
int d1[maxn],d2[maxn],a[maxn],n;
int main(){
while(scanf("%d",&n)!=EOF){
a[0]=1e9;
a[n+1]=1e9;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
if(a[i]>a[i-1])d1[i]=d1[i-1]+1;
else d1[i]=0;
}
for(int i=n;i>=1;i--){
if(a[i]>a[i+1])d2[i]=d2[i+1]+1;
else d2[i]=0;
}
int Len = 0;
int ansl=-1,ansr=-1;
for(int i=1;i<=n;i++){
if(d1[i]>0&&d2[i]>0){
if(Len<d1[i]+d2[i]){
ansl=i-d1[i]-1;
ansr=i+d2[i]-1;
Len=d1[i]+d2[i];
}else if(Len==d1[i]+d2[i]){
if(ansl>i-d1[i]-1){
ansl=i-d1[i]-1;
ansr=i+d2[i]-1;
}
}
}
}
cout<<ansl<<" "<<ansr<<endl;
}
}

D

模拟题,做起来比较烦。

理清思路去写就好了,其实只要把这个数据[[][]]过了,基本上就过了。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
string s;
int d[maxn];
int main(){
while(cin>>s){
memset(d,0,sizeof(d));
for(int i=0;i<s.size();i++){
if(s[i]=='[')d[i]++;
else d[i]--;
}
int Mx = 1;
for(int i=1;i<s.size();i++){
d[i]+=d[i-1];
Mx=max(Mx,d[i]);
}
int len=2*Mx-1,len2=0;
int flag = 0;
for(int i=0;i<s.size();i++){
if(s[i]=='['){
int Flag = 0;
if(flag==0){
Flag = 1;
flag = 1;
}else if(flag==1){
len-=2;
len2++;
}
if(len2){
for(int j=0;j<len2-1;j++){
printf(" ");
}
if(Flag==0)
printf("|");
else
printf(" ");
}
printf("+");
for(int j=0;j<len;j++)
printf("-");
printf("+");
if(len2){
if(Flag==0)
printf("|");
}
printf("\n");
}else{
int Flag = 0;
if(i+1<s.size()&&s[i+1]=='['){
Flag = 1;
}
if(flag==1){
flag = 0;
len2++;
if(len2){
for(int j=0;j<len2-1;j++){
printf(" ");
}
printf("|");
}
for(int j=0;j<len;j++)
printf(" ");
printf("|");
printf("\n");
printf("\n");
if(len2){
for(int j=0;j<len2-1;j++){
printf(" ");
}
printf("|");
}
for(int j=0;j<len;j++)
printf(" ");
printf("|");
printf("\n");
len2--;
}else{
len+=2;
len2--;
}
if(len2){
for(int j=0;j<len2-1;j++){
printf(" ");
}
if(Flag==0)
printf("|");
else
printf(" ");
}
printf("+");
for(int j=0;j<len;j++)
printf("-");
printf("+");
if(len2){
if(Flag==0)
printf("|");
}
printf("\n");
}
}
}
return 0;
}

E

简单博弈论。

相当于在nn的矩阵里铺21的地砖.

所以胜利的结果显然跟n的奇偶有关.

#include<bits/stdc++.h>
using namespace std; int main(){
long long n;
while(cin>>n){
if(n%2==0){
cout<<"XiaoMing"<<endl;
}else{
cout<<"XiaoHong"<<endl;
}
}
}

喵哈哈村的魔法考试 Round #12 (Div.2) 题解的更多相关文章

  1. 喵哈哈村的魔法考试 Round #2 (Div.2) 题解

    喵哈哈村的魔法考试 Round #2 (Div.2) 题解 A.喵哈哈村的战争 题解: 这道题就是for一遍,统计每个村子的战斗力的和,然后统计哪个村子的战斗力和大一点就好了. 唯一的坑点,就是这道题 ...

  2. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解

    喵哈哈村的魔法考试 Round #1 (Div.2) 题解 特别感谢出题人,qscqesze. 也特别感谢测题人Xiper和CS_LYJ1997. 没有他们的付出,就不会有这场比赛. A 喵哈哈村的魔 ...

  3. 喵哈哈村的魔法考试 Round #7 (Div.2) 题解

    喵哈哈村的魔法考试 Round #7 (Div.2) 注意!后四道题来自于周日的hihocoder offer收割赛第九场. 我建了个群:欢迎加入qscoj交流群,群号码:540667432 大概作为 ...

  4. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解&源码(A.水+暴力,B.dp+栈)

    A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05   最后更新: 2017年2月21日 20:06   时间限制: 1000ms   内存限制: 128M 描述 传说喵哈哈村有三种神 ...

  5. 喵哈哈村的魔法考试 Round #19 (Div.2) 题解

    题解: 喵哈哈村的魔力源泉(1) 题解:签到题. 代码: #include<bits/stdc++.h> using namespace std; int main(){ long lon ...

  6. 喵哈哈村的魔法考试 Round #14 (Div.2) 题解

    喵哈哈村的四月半活动(一) 题解: 唯一的case,就是两边长度一样的时候,第三边只有一种情况. #include <iostream> #include <cstdio> # ...

  7. 喵哈哈村的魔法考试 Round #10 (Div.2) 题解

    喵哈哈村与哗啦啦村的大战(一) 最大值就是全部+3,最小值就是全部-3,注意不能降为负数. #include<bits/stdc++.h> using namespace std; con ...

  8. 喵哈哈村的魔法考试 Round #8 (Div.2) 题解

    喵哈哈村的美食面馆 签到题,就不停的if就好了. #include<bits/stdc++.h> using namespace std; string name[5]={"ni ...

  9. 喵哈哈村的魔法考试 Round #4 (Div.2) 题解

    有任何疑问,可以加我QQ:475517977进行讨论. A 喵哈哈村的嘟嘟熊魔法(1) 题解 这道题我们只要倒着来做就可以了,因为交换杯子是可逆的,我们倒着去模拟一遍就好了. 有个函数叫做swap(a ...

随机推荐

  1. C/C++:函数调用规则__stdcall,__cdecl,__pascal,__fastcall

    __cdecl __cdecl 是 C Declaration  的缩写,表示 C 语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈.被调用函数不会要求调用者传递多 ...

  2. python操作mysql数据库的常用方法使用详解

    python操作mysql数据库 1.环境准备: Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get instal ...

  3. 转载:《理解RESTful架构》 阮一峰

    原文:http://www.ruanyifeng.com/blog/2011/09/restful.html 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件&q ...

  4. JOptionPane类提示框常用方法总结

    JOptionPane类封装了很多的方法,总结如下: 1.showMessageDialog 显示一个带有OK 按钮的模态对话框. 下面是几个使用showMessageDialog 的例子: Java ...

  5. Python-css高级

    1. 伪类和伪元素 1. 伪类 1. :link 2. :visited 3. :hover (重要) 4. :active 5. :focus(input标签获取光标焦点) 2. 伪元素 1. :f ...

  6. win7 X64系统上 PL/SQL不能识别Oracle实例

    电脑系统为Win7 64位,安装的PLSql为64位,安装的Oracle客户端为运行时类型的,应该为32位客户端 电脑上之前安装的32位toad可以识别Oracle实例 在系统添加了oracle_ho ...

  7. Json学习整理

    1:javascript对JSON的支持 2:java对JSON的支持 alibaba->fastjson 封装工具类: import com.alibaba.fastjson.JSONObje ...

  8. wap页面

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  9. MySQL表的定期分析检查优化

    Analyze Table 分析表   MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示 ...

  10. Linux学习笔记:ftp中binary二进制与ascii传输模式的区别

    在使用ftp传输文件时,常添加上一句: binary  -- 使用二进制模式传输文件 遂查资料,如下所获. FTP可用多种格式传输文件,通常由系统决定,大多数Linux/UNIX系统只有两种模式:文本 ...