AtCoder Beginner Contest 100 题解

A

抽屉原理

#include<bits/stdc++.h>
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<bits/stdc++.h>
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<<n*pow_(100,d)<<endl;
	return 0;
}

C

#include<bits/stdc++.h>
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<<cnt<<endl;
	return 0;
}

D

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

#include<bits/stdc++.h>
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<<res<<endl;
	
	return 0;
}
posted @   HinanawiTenshi  阅读(81)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示