A

签到

#include<bits/stdc++.h>
using namespace std;
int n,m,s[],t[],ans;
int main()
{
scanf("%d%d",&n,&m);
for(int i=,x;i<=n;i++)scanf("%d",&x),s[x&]++;
for(int i=,x;i<=m;i++)scanf("%d",&x),t[x&]++;
ans=min(s[],t[])+min(s[],t[]);
printf("%d",ans);
}

B

要求40次,而log(1e6)≈20,也就是说最多20个二进制位,可以每次翻转最高的“0”位,然后再+1即可。证明:若为11...10...00,则翻转最高0位后直接结束;若为全1,也是直接结束;若后面存在1,翻转后必然存在0,使得最高位向后走。

#include<bits/stdc++.h>
using namespace std;
int n,m,tim,a[];
bool judge(int x)
{
int flag=;
for(int i=;i>=;i--)
if(x&(<<i))flag=;
else if(!flag)return ;
return ;
}
int main()
{
cin>>n;
while(!judge(n))
{
tim++;
if(tim&)
{
int flag=;
for(int i=;i>=;i--)if(n&(<<i))flag=;else if(!flag){a[++m]=i+;break;}
n^=(<<a[m]+)-;
}
else n++;
}
printf("%d\n",tim);
for(int i=;i<=m;i++)printf("%d ",a[i]);
}

C

签到,开始还看成了最大公约数,自闭。其实就是枚举差值的每个因数,暴力加一下即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,d,ans,mn;
void work(ll x)
{
ll t=(x-a%x)%x,A=a+t,B=b+t,g=A/__gcd(A,B)*B;
if(g<mn)mn=g,ans=t;
else if(g==mn&&t<ans)ans=t;
}
int main()
{
cin>>a>>b;
if(a==b){cout<<;return ;}
if(a>b)d=a-b;else d=b-a;
mn=a/__gcd(a,b)*b;
for(ll i=;i*i<=d;i++)
if(d%i==)work(i),work(d/i);
cout<<ans;
}

D

被这题搞自闭了,看到什么最大值对1e9+7取模以为是个神仙题,后来才发现是个SB贪心题,其实就是能选的边尽量选,后来证明了一下:只有一个儿子显然,有两个儿子可以证明:如果自己能选没选,那么两个儿子的边也只能选1个,还会影响后面,如果自己不能选,随机选一个是也是对的。然后可以f[i][j][0/1]表示走了i步,前缀和为j,该点与父亲的边是否被选的节点数有几个,直接暴力转移即可。

#include<bits/stdc++.h>
using namespace std;
const int N=,mod=1e9+;
int n,ans,f[*N][N][];
void add(int&x,int y){x=(x+y)%mod;}
int main()
{
scanf("%d",&n);
f[][][]=;
for(int i=;i<=*n;i++)
for(int j=;j<=n;j++)
{
int lc=n+,rc=n+;
if(j+<=*n-i-)lc=j+;
if(j)rc=j-;
if(lc>n&&rc>n)continue;
if(f[i][j][])
{
if(lc<=n&&rc<=n)add(f[i+][lc][],f[i][j][]),add(f[i+][rc][],f[i][j][]);
else if(lc<=n)add(f[i+][lc][],f[i][j][]);
else add(f[i+][rc][],f[i][j][]);
}
if(f[i][j][])
{
if(lc<=n)add(f[i+][lc][],f[i][j][]);
if(rc<=n)add(f[i+][rc][],f[i][j][]);
}
}
for(int i=;i<=*n;i++)
for(int j=;j<=n;j++)
if(f[i][j][])add(ans,f[i][j][]);
printf("%d",ans);
}

E

被D搞自闭了,E也不会了。其实这道题有一种很神奇的做法:首先当然把b[i]>c[i]的判掉,然后不难发现相邻2个值中一定一个是最大值,另一个是最小值,然后连接(n-1)条(b[i],c[i])的无向边,然后跑一遍欧拉路,若存在长度为n的欧拉路就可以输出解了。

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+;
int n,m,cnt,tot,a[N],b[N],c[N],w[N],hd[N],v[N<<],nxt[N<<],vis[N],du[N];
map<int,int>id;
void add(int x,int y)
{
v[++cnt]=y,nxt[cnt]=hd[x],hd[x]=cnt,du[x]++;
v[++cnt]=x,nxt[cnt]=hd[y],hd[y]=cnt,du[y]++;
}
int getid(int x)
{
if(!id[x])w[id[x]=++tot]=x;
return id[x];
}
void euler(int u)
{
for(int &i=hd[u];i;i=nxt[i])
if(!vis[i>>])vis[i>>]=,euler(v[i]);
a[++m]=u;
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)scanf("%d",&b[i]);
for(int i=;i<n;i++)scanf("%d",&c[i]);
cnt=;
for(int i=;i<n;i++)
if(b[i]>c[i]){puts("-1");return ;}
else add(getid(b[i]),getid(c[i]));
int S=,num=;
for(int i=;i<=tot;i++)if(du[i]&)S=i,num++;
if(num&&num!=){puts("-1");return ;}
euler(S);
if(m!=n){puts("-1");return ;}
for(int i=;i<=n;i++)printf("%d ",w[a[i]]);
}

F

神仙题,看某AC代码写了F1,大概是f[i][j][k]表示长为i,走j步,后面覆盖集合为k的方案数,直接根据题意转移状态。后来发现F2也没意思就是一样的做法,加个矩阵快速幂就行了,不过懒得写了。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+,mod=1e9+;
int n,k,m,ans,sz[],f[N][][];
int main()
{
scanf("%d%d%d",&n,&k,&m);
for(int i=;i<<<m;i++)sz[i]=sz[i>>]+(i&);
f[][][]=;
for(int i=;i<=n;i++)
{
for(int j=;j<k;j++)
for(int S=;S<<<m;S++)
if(f[i][j][S])
{
int nS=((S<<)&((<<m)-));
f[i+][j][nS]=(f[i+][j][nS]+f[i][j][S])%mod;
f[i+][j+][nS|]=(f[i+][j+][nS|]+1ll*f[i][j][S]*(sz[S]+))%mod;
}
int sum=;
for(int S=;S<(<<m);S++)sum=(sum+f[i][k][S])%mod;
ans=(ans+1ll*sum*(n-i+))%mod;
}
printf("%d",ans);
}

新号打的,初始语言默认C差评,被卡了十几分钟CE不知道,十分不爽。

result:rank95 rating+=225 now_rating=1725

Codeforces Round #554 (Div. 2)自闭记的更多相关文章

  1. Educational Codeforces Round 58 Div. 2 自闭记

    明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #inclu ...

  2. Codeforces Round #545 Div. 1自闭记

    A:求出该行该列各有多少个比其小的取max,该行该列各有多少个比其大的取max,加起来即可. #include<iostream> #include<cstdio> #incl ...

  3. Codeforces Round #528 Div. 1 自闭记

    整天自闭. A:有各种讨论方式.我按横坐标排了下然后讨论了下纵坐标单调和不单调两种情况.写了15min也就算了,谁能告诉我printf和cout输出不一样是咋回事啊?又调了10min啊?upd:突然想 ...

  4. Codeforces Round #526 Div. 1 自闭记

    日常猝死. A:f[i]表示子树内包含根且可以继续向上延伸的路径的最大价值,统计答案考虑合并两条路径即可. #include<iostream> #include<cstdio> ...

  5. Codeforces Round #567 (Div. 2)自闭记

    嘿嘿嘿,第一篇文章,感觉代码可以缩起来简直不要太爽 打个div2发挥都这么差... 平均一题fail一次,还调不出错,自闭了 又一次跳A开B,又一次B傻逼错误调不出来 罚时上天,E还傻逼了..本来这场 ...

  6. Codeforces Round #530 Div. 1 自闭记

    A:显然应该让未确定的大小尽量大.不知道写了啥就wa了一发. #include<iostream> #include<cstdio> #include<cmath> ...

  7. Codeforces Round #525 Div. 2 自闭记

    A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  8. Codeforces Round #554 (Div. 2) C. Neko does Maths (简单推导)

    题目:http://codeforces.com/contest/1152/problem/C 题意:给你a,b, 你可以找任意一个k     算出a+k,b+k的最小公倍数,让最小公倍数尽量小,求出 ...

  9. Codeforces Round #554 (Div. 2) 1152B. Neko Performs Cat Furrier Transform

    学了这么久,来打一次CF看看自己学的怎么样吧 too young too simple 1152B. Neko Performs Cat Furrier Transform 题目链接:"ht ...

随机推荐

  1. jenkins实现以gitlab为代码仓库的构建

    简介 前一篇随笔是安装jenkins的过程,比较简单,这一次说一下用jenkins配置以gitlab为代码管理仓库的maven项目的完整个构建过程,以及我碰到的一些问题.由于是maven项目,所以我们 ...

  2. [转]当CPU飙高时,它在做什么

    在开发过程中,有时候我们发现JVM占用的CPU居高不下,跟我们的预期不符,这时,CPU在做什么呢?是什么线程让CPU如此忙碌呢?我们通过如下几步,可以查看CPU在执行什么线程. 1.查找jvm进程ID ...

  3. vuex最简单、最直白、最全的入门文档

    前言 我们经常用element-ui做后台管理系统,经常会遇到父组件给子组件传递数据,下面一个简单的例子,点击按钮,把弹框显示变量数据通过子组件的props属性传递,子组件通过$emit事件监听把数据 ...

  4. android activity的生命周期和启动模式

    activity是android开发的基本中的基本每一个项目都会有activity.activity有自己的生命周期,在网上有很多博客和资料,在这里我也只是印证一下. 一个activity: 在打开a ...

  5. Input 标签 安卓 与 IOS 出现圆角 显示

    Input 标签 input[type="submit"],input[type="reset"],input[type="button"] ...

  6. RowKey设计之单调递增行键/时序数据

    ​在一个集群中,一个导入数据的进程锁住不动,所有的client都在等待一个region (因而也就是一个单个节点),过了一会后,变成了下一个region…​如果使用了单调递增 或者时序的key便会造成 ...

  7. [20190416]完善shared latch测试脚本2.txt

    [20190416]完善shared latch测试脚本2.txt --//昨天测试shared latch,链接:http://blog.itpub.net/267265/viewspace-264 ...

  8. SQL 知道字段名 全表搜索此字段属于哪个表

    SELECT name FROM sysobjects WHERE id IN (SELECT ID FROM syscolumns WHERE name='字段名')

  9. 【原】无脑操作:IDEA热部署设置

    热部署的概念:在应用正在运行的时候升级软件,却不需要重新启动应用.对于Java应用程序来说,热部署就是在运行时更新Java类文件. 注意:经过试验,IDEA 2017可以使用热部署,IDEA 14不行 ...

  10. jquery各大学选择插件

    地址:http://www.jq22.com/jquery-info5565 演示地址:http://www.jq22.com/yanshi5565