首页 > 其他分享 >AtCoder Beginner Contest 378题解

AtCoder Beginner Contest 378题解

时间:2024-11-02 22:08:47浏览次数:4  
标签:tmp AtCoder int 题解 void 378 while read getchar

AtCoder Beginner Contest 378题解

总体情况

image
image

十分钟翻盘局。

A - Pairing

题意

有四个球,每次可以消掉两个颜色相同的球,问最多能效多少次?

题解

直接使用贪心即可

代码

// Problem: A - Pairing
// Contest: AtCoder - AtCoder Beginner Contest 378
// URL: https://atcoder.jp/contests/abc378/tasks/abc378_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(int x,char y){write(x);write(y);}
	#ifndef int
	void read(long long &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void write(long long x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(long long x,char y){write(x);write(y);}
	#endif
	signed main(){
		int a,b,c,d;
		read(a);read(b);read(c);read(d);
		map<int,int> mp;
		mp[a]++;mp[b]++;mp[c]++;mp[d]++;
		int ans=0;
		for(auto i:mp) ans += i.second/2;
		write(ans);
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

B - Garbage Collection

题意

问第一个大于等于 \(d_j\) 的满足 \(\equiv r_{t_j} (\mod q_{t_j})\) 的数是多少。

思路

直接使用公式 \((y-d_x-1)\div t_x+1)*t_x+d_x\) 就行。

代码:

代码

// Problem: B - Garbage Collection
// Contest: AtCoder - AtCoder Beginner Contest 378
// URL: https://atcoder.jp/contests/abc378/tasks/abc378_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(int x,char y){write(x);write(y);}
	#ifndef int
	void read(long long &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void write(long long x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(long long x,char y){write(x);write(y);}
	#endif
	int t[200],d[200];
	int n,q;
	signed main(){
		read(n);
		for(int i = 1;i<=n;i++){
			read(t[i]);read(d[i]);
		}
		read(q);
		for(int i = 1;i<=q;i++){
			int x,y;
			read(x);read(y);
			if(y<=d[x]) write(d[x],endl);
			else write(((y-d[x]-1)/t[x]+1)*t[x]+d[x],endl);
		}
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

C - Repeating

题意

求前面最后一个等于 \(a_i\) 的数。

思路

直接使用 map 即可。

代码

代码

// Problem: C - Repeating
// Contest: AtCoder - AtCoder Beginner Contest 378
// URL: https://atcoder.jp/contests/abc378/tasks/abc378_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(int x,char y){write(x);write(y);}
	#ifndef int
	void read(long long &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void write(long long x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(long long x,char y){write(x);write(y);}
	#endif
	signed main(){
		map<int,int> mp;
		int n;
		read(n);
		for(int i = 1;i<=n;i++){
			int x;
			read(x);
			if(mp.find(x)==mp.end()) write(-1,' ');
			else write(mp[x],' ');
			mp[x] = i;
		}
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

D - Count Simple Paths

题意

给你一个图,有.#构成,求所有的简单路径。

思路

看这样样例 3 的答案便知满足的方案不多(我居然看了将近 1 个小时),考虑爆搜。

代码

代码

// Problem: D - Count Simple Paths
// Contest: AtCoder - AtCoder Beginner Contest 378
// URL: https://atcoder.jp/contests/abc378/tasks/abc378_d
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(int x,char y){write(x);write(y);}
	#ifndef int
	void read(long long &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void write(long long x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(long long x,char y){write(x);write(y);}
	#endif
	const int MAXN = 15;
	int n,m,k;
	char a[MAXN][MAXN];
	int f[MAXN][MAXN][MAXN][MAXN][MAXN];
	void makeedge(int x,int y,int x1,int y1){
		if(x1<1) return;
		if(y1<1) return;
		if(x1>n) return;
		if(y1>m) return;
		if(a[x1][y1]=='#') return;
		f[x][y][x1][y1][1]++;
	}
	bool vis[MAXN][MAXN];
	void count(int x,int y,int t);
	void check(int x1,int y1,int t){
		if(x1<1) return;
		if(y1<1) return;
		if(x1>n) return;
		if(y1>m) return;
		if(a[x1][y1]=='#') return;
		if(vis[x1][y1]) return;
		count(x1,y1,t);
	}
	int ans;
	void count(int x,int y,int t){
		if(t>k){
			ans++;
			return;
		}
		vis[x][y] = 1;
		check(x+1,y,t+1);
		check(x-1,y,t+1);
		check(x,y+1,t+1);
		check(x,y-1,t+1);
		vis[x][y] = 0;
	}
	signed main(){
		read(n);read(m);read(k);
		for(int i = 1;i<=n;i++){
			for(int j = 1;j<=m;j++){
				read(a[i][j]);
			}
		}
		for(int i = 1;i<=n;i++){
			for(int j = 1;j<=m;j++){
				if(a[i][j]=='#') continue;
				count(i,j,1);
			}
		}
		write(ans);
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

E - Mod Sigma Problem

题意

给你一个由 \(N\) 个非负整数组成的序列 \(A = (A_1, A_2, \dots, A_N)\) 和一个正整数 \(M\) 。

求下列数值:

\[\sum_{1 \leq l \leq r \leq N} \left( \left(\sum_{l \leq i \leq r} A_i\right) \mathbin{\mathrm{mod}} M \right). \]

这里, \(X \mathbin{\mathrm{mod}} M\) 表示非负整数 \(X\) 除以 \(M\) 的余数。

思路

首先考虑定一求一。我们可以按照左端点从右往左扫。

每一次扫都是新加一个集合,然后对所有集合加一个 \(A_i\)。

我们可以记一个偏移量。

每一次都是对已有的一些集合加集合元素个数个偏移量。

然而对有的数可能加上偏移量后大于 \(M\)。不难想到这些数都大于等于 \(M-\Delta\)。

于是考虑使用 FHQ_treap。

代码

// Problem: E - Mod Sigma Problem
// Contest: AtCoder - AtCoder Beginner Contest 378
// URL: https://atcoder.jp/contests/abc378/tasks/abc378_e
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(int x,char y){write(x);write(y);}
	#ifndef int
	void read(long long &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void write(long long x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(long long x,char y){write(x);write(y);}
	#endif
	const int MAXN = 3e5+10;
	int n,m,p,tot,ans,u,a[MAXN],sum[MAXN],j[MAXN];
struct node{
    int ls,rs,id,sz,sum,pri;
}tree[MAXN];
#define lson tree[k].ls
#define rson tree[k].rs
void pushup(int k){
    tree[k].sz = tree[lson].sz+tree[rson].sz+1;
    tree[k].sum = tree[lson].sum+tree[rson].sum+tree[k].id;
}
void split(int k,int c,int &x,int &y){
    if(!k){
        x = y = 0;
        return;
    }
    if(tree[k].id<=c){
        x = k;
        split(rson,c,rson,y);
    }else{
        y = k;
        split(lson,c,x,lson);
   }
    pushup(k);
}
void split_rank(int k,int c,int &x,int &y){
    if(!k){
        x = y = 0;
        return;
    }
    if(tree[lson].sz+1<=c){
        x = k;
        split_rank(rson,c-tree[lson].sz-1,rson,y);
    }else{
        y = k;
        split_rank(lson,c,x,lson);
   }
    pushup(k);
}
int merge(int x,int y){
    if(!x||!y) return x|y;
    if(tree[x].pri<tree[y].pri){
        tree[x].rs = merge(tree[x].rs,y);
        pushup(x);
        return x;
    }else{
        tree[y].ls = merge(x,tree[y].ls);
        pushup(y);
        return y;
    }
}
mt19937 rd;
int sm,root;
int New_node(int x){
    sm++;
    tree[sm].pri = rd();
    tree[sm].id = x;
    tree[sm].sum = x;
    tree[sm].sz = 1;
    return sm;
}
void Insert(int x){
    int lroot,rroot;
    split(root,x,lroot,rroot);
    root = merge(merge(lroot,New_node(x)),rroot);
}
void Delete(int x){
    int lroot,temp,rroot;
    split(root,x,lroot,rroot);
    split(lroot,x-1,lroot,temp);
    temp = merge(tree[temp].ls,tree[temp].rs);
    root = merge(merge(lroot,temp),rroot);
}
int kth(int k){
    int lroot,rroot,temp;
    split_rank(root,k,lroot,rroot);
    split_rank(lroot,k-1,lroot,temp);
    int ans = tree[temp].id;
    root = merge(merge(lroot,temp),rroot);
    return ans;
}
int Rank(int x){
    int lroot,rroot,ans;
    split(root,x-1,lroot,rroot);
    ans = tree[lroot].sz;
    root = merge(lroot,rroot);
    return ans;
}
int Pre(int x){
    int lroot,rroot,ans;
    split(root,x-1,lroot,rroot);
    int now = lroot;
    while(tree[now].rs) now = tree[now].rs;
    ans = tree[now].id;
    root = merge(lroot,rroot);
    return ans;
}
int Suc(int x){
    int lroot,rroot,ans;
    split(root,x,lroot,rroot);
    int now = rroot;
    while(tree[now].ls) now = tree[now].ls;
    ans = tree[now].id;
    root = merge(lroot,rroot);
    return ans;
}
int dlt;
int get(){
	int sum = tree[root].sum+dlt*tree[root].sz;
	int lroot,rroot;
	split(root,m-dlt-1,lroot,rroot);
	sum -= tree[rroot].sz*m;
	root = merge(lroot,rroot);
	return sum;
}
	signed main(){
		read(n);read(m);
		for(int i = 1;i<=n;i++){
			read(a[i]);
			a[i]%=m;
			sum[i] = sum[i-1]+a[i];
		}
		for(int l = n;l;l--){
			dlt+=a[l];dlt%=m;
			Insert(((-dlt+a[l])%m+m)%m);
			// cout << dlt << " " << ((-dlt+a[l])%m+m)%m << " " << get() <<endl;
			ans += get();
		}
		write(ans);
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

F - Add One Edge 2

题意

一棵树上问加一条边,问使得形成的环为简单路径,且环上每个点的度数多为 3 的方案数。

思路

还剩二十多分钟,读题+想了 7 多分钟,打了 10 多分,极限翻盘。

首先分为两种情况:

  1. 一个点与根节点相连形成环,要求:根节点读数为 2,这个点的度数亦为 2,在这条路径上的其他店的度数为 3。
  2. 一个点经过根节点与另外一个子树形成环,要求:根节点度数为 3,这两个点度数为 2,其余为 3。

根据这两个情况,我们可以轻松得到一个状态:\(f_k\) 表示从 \(k\) 节点起,向下走若干个 3 节点最后抵达 2 节点的方案数。

转移很简单,这里就不说了。

于是。。。就做完了。

注意---Notise**:要减去一个节点为 2,且父节点度数也为 2 的情况。

代码

// Problem: F - Add One Edge 2
// Contest: AtCoder - AtCoder Beginner Contest 378
// URL: https://atcoder.jp/contests/abc378/tasks/abc378_f
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(int x,char y){write(x);write(y);}
	#ifndef int
	void read(long long &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void write(long long x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');}
	}
	void write(long long x,char y){write(x);write(y);}
	#endif
	const int MAXN = 2e5+10;
	int n,f[MAXN],f2[MAXN],d[MAXN],ans;
	vector<int> v[MAXN];
	void dfs(int k,int fath){
		int sum = 0;
		for(int i:v[k]){
			if(i==fath) continue;
			dfs(i,k);
			if(d[k]==2){
				ans += f[i]-(d[i]==2);
			}else if(d[k]==3){
				ans += f[i]*sum;
				sum += f[i];
				f[k] += f[i];
			}
		}
		if(d[k]==2) f[k] = 1;
	}
	signed main(){
		read(n);
		for(int i = 1;i<n;i++){
			int a,b;read(a);read(b);
			v[a].push_back(b);
			v[b].push_back(a);
			d[a]++;d[b]++;
		}
		dfs(1,0);
		write(ans);
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

标签:tmp,AtCoder,int,题解,void,378,while,read,getchar
From: https://www.cnblogs.com/gutongxing/p/18522579

相关文章

  • AtCoder Beginner Contest 378
    A-Pairing题意给\(4\)个数,每次选两个数字相同的丢掉。求最大操作数。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>pii;constintmxn=1e6+5;voidsolve(){inta,b,c,......
  • 2024CCPC哈尔滨 L 题解
    思路首先可以发现这个期望其实是假的,我们只需要把所有方案的答案加起来,最后除以\((\frac{n(n-1)}{2})^2\)即可,现在考虑如何统计所有方案的答案。我们先考虑一条路径的方案数:假设存在一条从\(x\)到\(y\)的公共路径,其中\(x\)是\(y\)的祖先,那么小红和小蓝分别选择的路径,......
  • ABC378 比赛记录
    ABC378比赛记录这场打得太唐了。。。A模拟B模拟C\(map\)模拟D爆搜模拟E很典的题目,感觉我绝对见过原题。要求\((a-b)\modm\)可以转化为$(a\modm)-(b\modm)+[a<b]*m$然后前缀和加树状数组做完了。F做\(F\)的时候本来还有一个多小时,rk300+。结果做了......
  • 第八届御网杯线下赛Pwn方向题解
    由于最近比赛有点多,而且赶上招新,导致原本应该及时总结的比赛搁置了,总结来说还是得多练,因为时间很短像这种线下赛,一般只有几个小时,所以思路一定要清晰,我还是经验太少了,导致比赛力不从心,先鸽了~Skillchecksec检查保护(没有开PIE和Canary)ida逆向分析一下不同的选项对应不......
  • Codeforces Round 983 (Div. 2) 题解
    CodeforcesRound983(Div.2)题解CodeforcesRound983(Div.2)Problem-A-Codeforces解题思路考虑贪心,每个灯连两个开关,即两个开的灯可以关闭一盏灯,则灯数最多则尽可能让两个开关都开的灯尽量少,灯数最少则反之#include<bits/stdc++.h>#defineendl'\n'usingnam......
  • 线段树也能是 Trie 树 题解
    题意简述给定一个长为\(n=2^k\)的序列\(\{a_0,\ldots,a_{n-1}\}\),你需要使用数据结构维护它,支持\(m\)次以下操作:单点加:\(a_x\getsa_x+y\);区间查:\(\sum\limits_{i=l}^ra_i\);全局下标与:\(a'_{i\operatorname{and}x}\getsa_{i}\),即把\(a_i\)累加到......
  • 动态规划题解报告
    [APIO2016]划艇注意到\(n\le500\)考虑\(O(n^3)\)的做法。值域小的做法比较显然,值域比较大,考虑离散化(将\(b_i+1\)然后限制变为\([a_i,b_i+1)\))。设\(f_{i,j}\)表示考虑前\(i\)个,\(i\)选择\(j\)的方案数。发现由于离散化了很难转移\(f_{k,j}\(k<i)\)的情况......
  • 关于Copilot出现:You don`t have access to Github Copilot .....的问题解决方案
    前面如何如何配置,以及如何如何上传学生证资料等我这里不赘述badendinghappyending出现这个界面这个问题就是set_up不是很完全,设置一下就行disable改为enable等这样再回去IDE,就可以正常使用了......
  • AtCoder Beginner Contest 363 - VP记录
    PrefaceA-PilingUpAtCoder日爆导致半天登不上去。这道题还是看的洛谷上的题面,用洛谷RMJ交的。点击查看代码#include<cstdio>usingnamespacestd;intmain(){ intr;scanf("%d",&r); if(r<=99)printf("%d\n",100-r); elseif(r<=199)printf("%d\......
  • 牛客周赛 Round 65 题解
    牛客周赛Round65牛客周赛Round65A-超市_牛客周赛Round65#include<bits/stdc++.h>#defineendl'\n'usingnamespacestd;voidsolve(){ intn,a,b;cin>>n>>a>>b; intans=0; for(inti=0;i<=100;i++){ for(intj=0;j<=100;j++){......