AtCoder Beginner Contest 100 题解
发布日期:2021-05-09 00:23:52 浏览次数:11 分类:博客文章

本文共 1101 字,大约阅读时间需要 3 分钟。

A

抽屉原理

#include
using namespace std;int main(){ int a,b; cin>>a>>b; if(a<=8 && b<=8) puts("Yay!"); else puts(":("); return 0;}

B

特判 n==100 情况

#include
using namespace std;int pow_(int x,int p){ int res=1; while(p--) res=res*x; return res; }int main(){ int d,n; cin>>d>>n; if(n==100) n++; cout<
<

C

#include
using namespace std;int main(){ int n; cin>>n; int cnt=0; while(n--){ int k; cin>>k; while(!(k&1)) k>>=1, cnt++; } cout<
<

D

枚举统计贡献时候三个属性( \(u,v,w\) )贡献的和是正还是负,然后对 \(2^3\) 种情况求个最大值。

#include
using namespace std;#define rep(i,a,b) for(int i=(a);i<=(b);i++)typedef long long ll;const int N=1005;struct node{ ll u,v,w;}a[N], b[N];int f[4];bool cmp(node x,node y){ ll kx=x.u+x.v+x.w, ky=y.u+y.v+y.w; return kx>ky;}int main(){ int n,m; cin>>n>>m; rep(i,1,n){ ll u,v,w; cin>>u>>v>>w; a[i]={u,v,w}; } ll res=0; rep(i,0,(1<<3)-1){ rep(j,0,2) f[j]=(i>>j&1)?1:-1; rep(p,1,n) b[p]={f[0]*a[p].u, f[1]*a[p].v, f[2]*a[p].w}; sort(b+1,b+1+n,cmp); ll rec=0; rep(i,1,m) rec+=b[i].u+b[i].v+b[i].w; res=max(res,rec); } cout<
<
上一篇:【DP,位运算】 Bank Security Unification
下一篇:【图论】浅析匈牙利算法

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月29日 01时20分59秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章