题解:

A 喵哈哈村的跳棋比赛

题解:其实我们要理解题意就好了,画画图看看这个题意。x<y,那么就交换;x>y,那么x=x%y。

如果我们经过很多次,或者y<=0了,那么就会无限循环。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; long long x,y; void work(){
while(1){
if(x==0){
cout<<y<<endl;
break;
}
if(x<y)swap(x,y);
if(x==0){
cout<<y<<endl;
break;
}
if((y<=0)&&(x>y)){
cout<<"N/A\n";
break;
}
x%=y;
}
} int main(){
while(cin>>x>>y)work();
return 0;
}

喵哈哈村的扔骰子大赛

题解:暴力dfs就可以,dfs(i,j),i是当前扔到第j个骰子,j表示当前和的组合,我们把组合用状态压缩表示一下。你本地打表其实也可以

代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int ans=0;
inline int Gcd(int a,int b){return b?Gcd(b,(a%b)):a;}
void go(int v,long long lop){
if(v>n){
if(lop&((long long)1<<(long long)m)) ans++;
return;
}
for(int i=1;i<=6;i++)
go(v+1,lop|(lop<<i));
}
int main(){
scanf("%d%d",&n,&m);
go(1,1);
int d=1;
for(int i=1;i<=n;i++)d*=6;
if(ans==0) printf("0\n");
else if(ans==d) printf("1\n");
else{
int gc=Gcd(ans,d); printf("%d/%d",ans/gc,d/gc);
}
}

喵哈哈村的魔方大赛

题解:最多转两次,暴力模拟一下吧

#include <iostream>
#include <algorithm>
using namespace std;
int F(char f)
{
switch(f)
{
case 'U':
return 0;
case 'D':
return 1;
case 'L':
return 2;
case 'R':
return 3;
case 'F':
return 4;
case 'B':
return 5;
}
}
int k[9][6] = {
{0, 1, 5, 4, 2, 3},
{0, 1, 3, 2, 5, 4},
{0, 1, 4, 5, 3, 2},
{5, 4, 2, 3, 0, 1},
{1, 0, 2, 3, 5, 4},
{4, 5, 2, 3, 1, 0},
{3, 2, 0, 1, 4, 5},
{1, 0, 3, 2, 4, 5},
{2, 3, 1, 0, 4, 5}
};
int main()
{
int n, x1, y1, z1, x2, y2, z2, fa1, fa2;
char f1, f2;
cin >> n >> x1 >> y1 >> z1 >> f1 >> x2 >> y2 >> z2 >> f2;
fa1 = F(f1);
fa2 = F(f2);
if (x1 == x2 && y1 == y2 && z1 == z2 && fa1 == fa2)
cout << 0;
else if (
x1 == z2 && y1 == y2 && z1 == n + 1 - x2 && fa1 == k[0][fa2] ||
x1 == n + 1 - x2 && y1 == y2 && z1 == n + 1 - z2 && fa1 == k[1][fa2] ||
x1 == n + 1 - z2 && y1 == y2 && z1 == x2 && fa1 == k[2][fa2] ||
x1 == x2 && y1 == n + 1 - z2 && z1 == y2 && fa1 == k[3][fa2] ||
x1 == x2 && y1 == n + 1 - y2 && z1 == n + 1 - z2 && fa1 == k[4][fa2] ||
x1 == x2 && y1 == z2 && z1 == n + 1 - y2 && fa1 == k[5][fa2] ||
x1 == y2 && y1 == n + 1 - x2 && z1 == z2 && fa1 == k[6][fa2] ||
x1 == n + 1 - x2 && y1 == n + 1 - y2 && z1 == z2 && fa1 == k[7][fa2] ||
x1 == n + 1 - y2 && y1 == x2 && z1 == z2 && fa1 == k[8][fa2]
)
cout << 1;
else
{
if (x1 > (1 + n) / 2)
x1 = n + 1 - x1;
if (x2 > (1 + n) / 2)
x2 = n + 1 - x2;
if (y1 > (1 + n) / 2)
y1 = n + 1 - y1;
if (y2 > (1 + n) / 2)
y2 = n + 1 - y2;
if (z1 > (1 + n) / 2)
z1 = n + 1 - z1;
if (z2 > (1 + n) / 2)
z2 = n + 1 - z2;
if (x1 > y1)
swap(x1, y1);
if (x1 > z1)
swap(x1, z1);
if (y1 > z1)
swap(y1, z1);
if (x2 > y2)
swap(x2, y2);
if (x2 > z2)
swap(x2, z2);
if (y2 > z2)
swap(y2, z2);
if (x1 == x2 && y1 == y2 && z1 == z2)
cout << 2;
else
cout << -1;
}
return 0;
}

喵哈哈村的种树大赛

题解:简单的线段树的区间更新,区间求gcd的题。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int n,m,M;
int Tree[1048576<<2],tree[1048576]; inline int gcd(int x,int y)
{
x=x<0?-x:x; y=y<0?-y:y;
for (int r;y;r=x%y,x=y,y=r);
return x;
} int main()
{
scanf("%d%d",&n,&m);
for(M=1;M<=n+1;M<<=1);
while(m--)
{
int opt;
scanf("%d",&opt);
if(opt==1)
{
int l,r,t;
scanf("%d%d%d",&l,&r,&t);
for(int x=l;x<=n;x+=x&(-x))tree[x]+=t;
for(int x=r+1;x<=n;x+=x&(-x))tree[x]-=t;
Tree[l+=M]+=t;
for(int x=(l>>1);x;x>>=1)Tree[x]=gcd(Tree[x<<1],Tree[(x<<1)|1]);
Tree[r+=M+1]-=t;
for(int x=(r>>1);x;x>>=1)Tree[x]=gcd(Tree[x<<1],Tree[(x<<1)|1]);
}else
{
int l,r;
scanf("%d%d",&l,&r);
int ret=0,tmp=0;
for(int x=l+M,y=r+M+1;x^y^1;x>>=1,y>>=1)
{
if(!(x&1))ret=gcd(ret,Tree[x^1]);
if(y&1)ret=gcd(ret,Tree[y^1]);
}
for(int x=l;x;x-=x&(-x))tmp+=tree[x];
ret=gcd(ret,tmp);
printf("%d\n",ret);
}
}
}

喵哈哈村的玩手机大赛

题解:最大流,A-手机-B就好了,但是暴力连图是会挂的,所以我们倍增优化一下连接的正方形就好(x

代码:

#include<cstdio>
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
const int N=56010,inf=~0U>>2;
int n,S,T,h[N],gap[N],maxflow;
struct edge{int t,f;edge *nxt,*pair;}*g[N],*d[N];
int r,c,a,b,x1,x2,y1,y2,w;
int i,j,k,fs[62][62][6],ft[62][62][6],pow[8],log[62];
inline int min(int a,int b){return a<b?a:b;}
inline void add(int s,int t,int f){
edge *p=new(edge);p->t=t;p->f=f;p->nxt=g[s];g[s]=p;
p=new(edge);p->t=s;p->f=0;p->nxt=g[t];
g[t]=p;g[s]->pair=g[t];g[t]->pair=g[s];
}
int sap(int v,int flow){
if(v==T)return flow;
int rec=0;
for(edge *p=d[v];p;p=p->nxt)if(h[v]==h[p->t]+1&&p->f){
int ret=sap(p->t,min(flow-rec,p->f));
p->f-=ret;p->pair->f+=ret;d[v]=p;
if((rec+=ret)==flow)return flow;
}
d[v]=g[v];
if(!(--gap[h[v]]))h[S]=T;
gap[++h[v]]++;
return rec;
}
int main(){
for(pow[0]=i=1;i<8;i++)pow[i]=pow[i-1]<<1;
for(i=1;i<62;i++)for(j=i;j>1;j>>=1,log[i]++);
read(r);read(c);read(a);read(b);
for(i=1;i<=r;i++)for(j=1;j<=c;j++){
fs[i][j][0]=++n,ft[i][j][0]=++n;
read(k);
add(fs[i][j][0],ft[i][j][0],k);
}
for(k=1;k<6;k++)for(i=1;i<=r;i++)for(j=1;j<=c;j++)if(i+pow[k]-1<=r&&j+pow[k]-1<=c){
fs[i][j][k]=++n,ft[i][j][k]=++n;
add(fs[i][j][k],fs[i][j][k-1],inf),add(ft[i][j][k-1],ft[i][j][k],inf);
add(fs[i][j][k],fs[i+pow[k-1]][j][k-1],inf),add(ft[i+pow[k-1]][j][k-1],ft[i][j][k],inf);
add(fs[i][j][k],fs[i][j+pow[k-1]][k-1],inf),add(ft[i][j+pow[k-1]][k-1],ft[i][j][k],inf);
add(fs[i][j][k],fs[i+pow[k-1]][j+pow[k-1]][k-1],inf),add(ft[i+pow[k-1]][j+pow[k-1]][k-1],ft[i][j][k],inf);
}
S=n+a+b+1;T=S+1;
while(a--){
read(w),read(x1),read(y1),read(x2),read(y2);
add(S,i=++n,w);
k=log[j=x2-x1+1];
add(i,fs[x1][y1][k],inf);
add(i,fs[x1][y2-pow[k]+1][k],inf);
add(i,fs[x2-pow[k]+1][y1][k],inf);
add(i,fs[x2-pow[k]+1][y2-pow[k]+1][k],inf);
}
while(b--){
read(w),read(x1),read(y1),read(x2),read(y2);
add(i=++n,T,w);
k=log[j=x2-x1+1];
add(ft[x1][y1][k],i,inf);
add(ft[x1][y2-pow[k]+1][k],i,inf);
add(ft[x2-pow[k]+1][y1][k],i,inf);
add(ft[x2-pow[k]+1][y2-pow[k]+1][k],i,inf);
}
gap[0]=T;
for(i=0;i++<T;)d[i]=g[i];
while(h[S]<T)maxflow+=sap(S,inf);
printf("%d",maxflow);
return 0;
}

喵哈哈村的魔法考试 Round #20 (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 #18 (Div.2) 题解

    喵哈哈村的古怪石碑(一) 题解:暴力check一下是等比数列还是等差数列,然后输出答案即可.注意如果数据范围是1e9的话,就要快速幂了. 代码: #include <cstdio> #in ...

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

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

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

    喵哈哈村的木星传说(一) 旋转90°,找找规律就知道(x,y)->(n-1-y,x) 然后输出就好了. #include<bits/stdc++.h> using namespace ...

随机推荐

  1. 对WinMain程序入口函数返回值为msg.wParam的几点理解

    原文地址:http://blog.csdn.net/setflvet/article/details/6983224 1.在WinMain主函数中,最后的返回值是msg.wParam,这个参数是传递给 ...

  2. zabbix系列(六)zabbix添加对ubuntu系统的监控

    在ubuntu os上安装agent,使用如下命令: wget http://mirrors.aliyun.com/zabbix/zabbix/3.0/ubuntu/pool/main/z/zabbi ...

  3. 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程

    使用vue全家桶制作博客网站   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue. ...

  4. 取消Eclipse控制台显示行数的限制

    --------------------------------------------------------------------------------------------------- ...

  5. pyhon----模块

    sys模块: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 s ...

  6. pytest七:assert断言

    断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed py ...

  7. python 全栈开发,Day110(django ModelForm,客户管理之 编辑权限(一))

    昨日内容回顾 1. 简述权限管理的实现原理. 粒度控制到按钮级别的权限控制 - 用户登陆成功之后,将权限和菜单信息放入session - 每次请求时,在中间件中做权限校验 - inclusion_ta ...

  8. python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)

    一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...

  9. 里氏代换原则(Liskov Substitution Principle,LSP)

    第一种定义: 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换为o2,程序P的行为没有发生变化,那么类型S是类型T的子类型. 第二种定义: 所有引 ...

  10. 如何获取JMX监控WebSphere所需的com.ibm.ws.admin.client_8.5.0等jar包

    https://blog.csdn.net/weixin_38645718/article/details/83346007