ABC045

A
梯形的面积公式

#include <bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define fs first
#define sc second
#define pb push_back
#define vi vector<int>

using namespace std;

void solve() {
	int a,b,h;
	cin>>a>>b>>h;
	cout<<(a+b)*h/2<<'\n';
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	solve();
	return 0;
}

B
模拟

#include <bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define fs first
#define sc second
#define pb push_back
#define vi vector<int>

using namespace std;

int who(char c){
	if(c=='a')	return 0;
	if(c=='b')	return 1;
	if(c=='c')	return 2;
}

void solve() {
	string a,b,c;
	cin>>a>>b>>c;
	int ca=0,cb=0,cc=0;
	int nxt=0;
	while(1) {
		if(nxt==0) {
			nxt=who(a[ca]);
			ca++;
		} else if(nxt==1) {
			nxt=who(b[cb]);
			cb++;
		} else if(nxt==2) {
			nxt=who(c[cc]);
			cc++;
		}
		if(ca>a.size()) {
			cout<<"A\n";
			return;
		}
		if(cb>b.size()) {
			cout<<"B\n";
			return;
		}
		if(cc>c.size()) {
			cout<<"C\n";
			return;
		}
	}
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	solve();
	return 0;
}

C
dfs搜索

#include <bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define fs first
#define sc second
#define pb push_back
#define vi vector<int>

using namespace std;
int n;
string s;
int vis[20],ans;

int cal() {
	int lst=1;
	int res=0;
	rep(i,1,n) {
		if(vis[i]) {
			//计算
			int num=0;
			rep(j,lst,i) {
				num=num*10+s[j]-'0';
			}
			res+=num;
			lst=i+1;
		}
	}
	return res;
}

void dfs(int u) {
	if(u==n) {
		ans+=cal();
		return;
	}
	dfs(u+1);
	vis[u]=1;
	dfs(u+1);
	vis[u]=0;
}

void solve() {
	cin>>s;
	s=" "+s;
	n=s.size()-1;
	vis[n]=1;
	dfs(1);
	cout<<ans<<'\n';
	return;
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	solve();
	return 0;
}

D
算贡献很好的一道贡献法的题目
第一想法是开二维数组去模拟,但是值域是1e9,不管空间还是时间都会炸,但是N只有1e5,可以考虑每一个涂色的方块对于每个九宫格的影响。

#include <bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define fs first
#define sc second
#define pb push_back
#define vi vector<int>

using namespace std;


void solve() {
	int h,w,n;
	map<pii,int>cnt;
	vi ans(10,0);
	cin>>h>>w>>n;
	ans[0]=(h-2)*(w-2);
	rep(k,1,n){
		int a,b;
		cin>>a>>b;
		rep(i,-1,1){
			rep(j,-1,1){
				int aa=a+i,bb=b+j;
				if(aa>1&&aa<h&&bb>1&&bb<w){
					int cur=cnt[{aa,bb}]++;
					ans[cur+1]++;
					ans[cur]--;
				}
			}	
		}
	}
	rep(i,0,9){
		cout<<ans[i]<<'\n';
	}
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	solve();
	return 0;
}

posted @ 2024-03-21 17:40  cxy8  阅读(3)  评论(0编辑  收藏  举报