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. RFID NFC

    RFID 和 NFC 的区别: ()NFC与RFID在物理层面看上去很相似,但实际上是两个完全不同的领域,因为RFID本质上属于识别技术,而NFC属于通信技术. ()NFC将非接触读卡器.非接触卡和点 ...

  2. datatable的部分问题处理(动态定义列头,给某行添加事件,初始显示空数据)

    一.动态定义列头 在ajax中,用datatable再去重新配置列头,当然传回的数据中,要有对应放列头的键值对 我自定义了Mock数据,用于前端自己交互. 其中,rowdata用于存放传回的数据,co ...

  3. extjs ajax 请求成功也会进入failure

     Ext.Ajax.request({ url: '路径', method : 'post',   params : {     传的参数   }, success: function (action ...

  4. June 28th. 2018, Week 26th. Thursday

    You cannot change the circumstances but you can change yourself. 既然改变不了环境,那就改变自己. From Jim Rohn. Rec ...

  5. 4.16 反射和jvm

  6. tensorflow 训练之tensorboard使用

    1.add saclar and histogram tf.summary.scalar('mean', mean) tf.summary.histogram('histogram', var) 2. ...

  7. toast提示信息获取

    toast获取的前提条件 1.desired_caps["automationName"]="UiAutomator2"2.要求安装jdk1.8 64位及以上. ...

  8. SpringBoot开发案例之打造私有云网盘

    前言 最近在做工作流的事情,正好有个需求,要添加一个附件上传的功能,曾找过不少上传插件,都不是特别满意.无意中发现一个很好用的开源web文件管理器插件 elfinder,功能比较完善,社区也很活跃,还 ...

  9. Golang 入门 : 打造开发环境

    工欲善其事,必先利其器!在学习和使用 Golang 时如果有一款得心应手的 IDE,相信一定可以事半功倍.虽然很多 IDE 都提供了对 Golang 的支持,但真正好用的没几个.VSCode 算是不错 ...

  10. 复习交换代数——Noether正规化

    目录 简介 初等启发 证明过程 几何意义 定理应用 参考资料 简介 在交换代数中有如下定理 Noether正规化引理 令$R$是一个有限生成$k$-代数整环,则存在$t_1,\ldots,t_n\in ...