A.直接做。

 #include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
typedef long long ll;
using namespace std; const int N=;
int n,m,a[N],cnt[N],tot;
vector<int> pos[N];
ll ans; int main(){
scanf("%d%d",&m,&n);
rep(i,,n) scanf("%d",&a[i]),pos[a[i]].push_back(i);
rep(i,,m){
if (i>){
if (pos[i].empty()) ans++;
else{
int x=pos[i][];
if (pos[i-].empty() || pos[i-][pos[i-].size()-]<x) ans++;
}
}
if (pos[i].empty()) ans++;
if (i<m){
if (pos[i].empty()) ans++;
else{
int x=pos[i][];
if (pos[i+].empty() || pos[i+][pos[i+].size()-]<x) ans++;
}
}
}
cout<<ans<<endl;
return ;
}

B.显然转的角度是n的约数,枚举约数暴力判断是否合法即可。

 #include<cstdio>
#include<algorithm>
#include<vector>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
using namespace std; const int N=;
int n,m,x,y;
vector<int>E[N]; vector<int>work(vector<int>a,int b){
int sz=a.size(),p=;
rep(i,,sz-) if((a[i]+b)%n<(a[p]+b)%n)p=i;
vector<int>c(sz);
rep(i,p,sz-) c[i-p]=(a[i]+b)%n;
rep(i,,p-) c[i+sz-p]=(a[i]+b)%n;
return c;
} int main(){
scanf("%d%d",&n,&m);
rep(i,,m) scanf("%d%d",&x,&y),x--,y--,E[x].push_back(y),E[y].push_back(x);
rep(i,,n-) sort(E[i].begin(),E[i].end());
rep(k,,n-) if (n%k==){
int flag=;
rep(i,,n-) if (work(E[i],k)!=E[(i+k)%n]){ flag=; break; }
if (flag){ puts("Yes"); return ; }
}
puts("No");
return ;
}

C.数据范围明显欺诈,讲一下我的思路,不是严谨证明。尝试从最终局面倒推:

最后局面:有石子的堆数小于n/2。(必败)

倒数第二步:至少有一堆没有石子,这样就可以通过拿走n/2堆的全部石子来转移到最终局面。(必胜)

倒数第三步:所有堆都有石子,且至少有n/2+1个堆的石子个数为1。因为面临此局面的人一定不希望制造出一个没有石子的堆,只有迫不得已的情况下才会制造出,也就是所选堆中有至少一个堆只有一个石子。(必败)

倒数第四步:至少有一堆有且仅有一个石子,这样就可以通过让另外n/2堆都只剩一个石子来达到倒数第三步的局面。(必胜)

倒数第五步:至少有n/2+1个堆的式子个数为2,分析与倒数第三步类似。(必败)

根据上面的分析可以得出,当含有最小石子数的堆数超过半数时必败,否则必胜。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
typedef long long ll;
using namespace std; const int N=,inf=1e9;
int n,mn=inf,tot,a[N]; int main(){
scanf("%d",&n);
rep(i,,n) scanf("%d",&a[i]),mn=min(mn,a[i]);
rep(i,,n) if (a[i]==mn) tot++;
if (tot<=n/) puts("Alice"); else puts("Bob");
return ;
}

D.显然b的位数就是|s|,枚举a的位数m。然后可以通过题目条件得到一些形如“a[i]与a[j]相同”“b[i]与b[j]相同”“a[i]与b[j]相同”“a[i]与b[j]不同”“a[i]为0/1”“b[i]为0/1”的约数。我的做法是,建立n+m+2个点分别表示b的每一位、a的每一位、0、1。对于“相同”约束连权值为0的边,“不同”约束连1边。若图中存在奇环或存在长度为偶数的0到1的路径时无解。否则对于一个连通块,确定其中一个值就可以确定所有值,而这个连通块的取值与连通块之外的点无关,于是答案就是2^(除0和1所在的连通块之外的连通块数)。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
#define For(i,x) for (int i=h[x],k; i; i=nxt[i])
typedef long long ll;
using namespace std; const int N=,M=N*,mod=;
bool flag;
char s[N];
int n,ans,cnt,h[N],vis[N],to[M],nxt[M],val[M]; void add(int u,int v,int w){
to[++cnt]=v; val[cnt]=w; nxt[cnt]=h[u]; h[u]=cnt;
to[++cnt]=u; val[cnt]=w; nxt[cnt]=h[v]; h[v]=cnt;
} void dfs(int x){
For(i,x) if (~vis[k=to[i]]){
if ((vis[x]^val[i])!=vis[k]){ flag=; return; }
}else vis[k]=vis[x]^val[i],dfs(k);
} int main(){
scanf("%s",s+); n=strlen(s+);
rep(m,,n-){
cnt=; int res=; flag=;
rep(i,,n+m+) h[i]=,vis[i]=-;
add(n,n+m+,); add(m+n,n+m+,);
rep(i,,n) add(i,n-i+,);
rep(i,,m) add(i+n,m-i++n,);
rep(i,,m){
if (s[n-i+]=='') add(i,i+n,);
if (s[n-i+]=='') add(i,i+n,);
}
rep(i,m+,n){
if (s[n-i+]=='') add(i,n+m+,);
if (s[n-i+]=='') add(i,n+m+,);
}
vis[n+m+]=; dfs(n+m+);
if (vis[n+m+]==) continue;
vis[n+m+]=; dfs(n+m+);
rep(i,,n+m) if (vis[i]==-) vis[i]=,res=*res%mod,dfs(i);
if (flag) continue;
ans=(ans+res)%mod;
}
printf("%d\n",ans);
return ;
}

Codeforces Round #557 (Div. 1)的更多相关文章

  1. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  2. Codeforces Round #557 Div. 1 based on Forethought Future Cup - Final Round

    A:开场就读错题.读对了之后也没啥好说的. #include<bits/stdc++.h> using namespace std; #define ll long long #defin ...

  3. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  4. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  5. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  6. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  7. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  8. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  9. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

随机推荐

  1. Android页面切换

    参考地址: http://www.crifan.com/android_how_to_create_new_ui_and_switch_to_another_new_ui/ 想要实现,在Android ...

  2. Nexus3.X忘记admin密码找回

    一.问题背景 nexus3 这种东西,传完一次,很少动了,很容易忘记密码,不要急有方法找回. 官方网站关于解决该问题的方法: https://support.sonatype.com/hc/en-us ...

  3. net.ipv4.tcp_fin_timeout的错误理解

        按照文档的说法,貌似长久以来我对于tcp_fin_timeout的理解都是错误的 先备份在这里,再验证 提高Linux应对短连接的负载能力 在存在大量短连接的情况下,Linux的TCP栈一般都 ...

  4. 【转载】 Tensorflow中padding的两种类型SAME和VALID

    原文地址: https://blog.csdn.net/jasonzzj/article/details/53930074 -------------------------------------- ...

  5. 在gitlab新建分支,IDEA切换时找不到的解决办法

    VCS——>Git——>Fetch

  6. Python核心编程(第二版)PDF

    Python核心编程(第二版) 目录 第1部分 Python核心第1章 欢迎来到Python世界1.1 什么是Python1.2 起源1.3 特点1.3.1 高级1.3.2 面向对象1.3.3 可升级 ...

  7. C# 子线程与主线程通讯方法一

    最近在项目中要用到子线程运行结束向主线程通知的需求,利用线程上下文来实现线程之间的同步. 子线程结束后调用同步函数,向主线程发送时间字符串,改变主窗体的label标签 label标签改变事件触发处理函 ...

  8. LeetCode_263. Ugly Number

    263. Ugly Number Easy Write a program to check whether a given number is an ugly number. Ugly number ...

  9. Navicat Premium教程

    介绍 Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL.SQLite.Oracle 及 PostgreSQL 资料库,让 ...

  10. jmeter的安装教程

    JMETER安装教程 jmeter的安装教程 1:安装jdk并且配置好环境变量,此处就不做赘述(前面的文档中有) 2:下载jmeter文件和jmeter的插件文件 JMeter:http://jmet ...