首页 > 其他分享 >ABC 366 题解

ABC 366 题解

时间:2024-08-10 21:51:17浏览次数:7  
标签:pre ABC int 题解 ll cin 366 hspace 2mm

AtCoder Beginner Contest 366 题解:

\(Problem \hspace{2mm} A - Election \hspace{2mm} 2\)

题目链接

opinion:

很显然,当一个人的票数大于等于 \(\lceil \frac{n}{2} \rceil\) 时此人一定当选。(或可理解为投票结果一定固定。)

依次判断两人即可。

code:

#include <bits/stdc++.h>
#define ll long long
#define pii pair <int, int>
using namespace std;
const int N = 1e6 + 10;
int n, t, a;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> n >> t >> a;
	int k = (n + 1) / 2;
	if (t >= k || a >= k) cout << "Yes\n";
	else cout << "No\n";
	return 0;
}

\(\newline\)
\(\newline\)

\(Problem \hspace{2mm} B - Vertical \hspace{2mm} Writing\)

题目链接

opinion:

这题,呃,我竟然吃了发罚时……

试着把样例顺时针旋转 \(90^\circ\),是不是与输出几乎一致?

为了方便,在每一个空位填上字符 *,又由于每个串结尾不能有 *,再将末尾连续的 * 去掉即可。

详见代码。

也就是按照题意模拟一下。

code:

#include <bits/stdc++.h>
#define ll long long
#define pii pair <int, int>
using namespace std;
const int N = 1e6 + 10;
int n, len[N];
string s[N], t[N];
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> n;
	int m = 0;
	for (int i = 1; i <= n; ++i) {
		cin >> s[i];
		len[i] = s[i].size();
		s[i] = " " + s[i];
		m = max(m, len[i]);
	}
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= len[i]; ++j) {
			t[j] = t[j] + s[i][j]; 
		}
		//前面有字符的就直接copy
		for (int j = len[i] + 1; j <= m; ++j) {
			t[j] = t[j] + '*';
		}
		//否则加 '*'
	}
	for (int i = 1; i <= m; ++i) {
		reverse(t[i].begin(), t[i].end());
		int l = t[i].size();
		int j = l - 1;
		while (t[i][j] == '*') j --;
		//找出末尾连续的 '*',并将末尾更改
		for (int k = 0; k <= j; ++k)
			cout << t[i][k];
		cout << "\n";
	}
	return 0;
}

\(\newline\)
\(\newline\)

\(Problem \hspace{2mm} C - Balls \hspace{2mm} and \hspace{2mm} Bag \hspace{2mm} Query\)

题目链接

opinion:

code:

#include <bits/stdc++.h>
#define ll long long
#define pii pair <int, int>
using namespace std;
const int N = 1e6 + 10;
int q, cnt[N];
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> q;
	int ans = 0;
	while (q -- ) {
		int op, x;
		cin >> op;
		if (op == 1) {
			cin >> x;
			cnt[x] ++;
			if (cnt[x] == 1) ans ++;
		} else if (op == 2) {
			cin >> x;
			cnt[x] --;
			if (cnt[x] == 0) ans --;
		} else {
			cout << ans << "\n";
		}
	}
	return 0;
}

\(\newline\)
\(\newline\)

\(Problem \hspace{2mm} D - Reachability \hspace{2mm} in \hspace{2mm} Functional \hspace{2mm} Graph\)

题目链接

opinion:

code:

#include <bits/stdc++.h>
#define ll long long
#define pii pair <int, int>
using namespace std;
const int N = 110;
ll a[N][N][N];
ll pre[N][N][N];
inline ll query(int N1, int M1, int K1, int N2, int M2, int K2) {
    return pre[N2][M2][K2] - pre[N1 - 1][M2][K2] - pre[N2][M1 - 1][K2] - pre[N2][M2][K1 - 1] + pre[N1 - 1][M1 - 1][K2] + pre[N1 - 1][M2][K1 - 1] + pre[N2][M1 - 1][K1 - 1] - pre[N1 - 1][M1 - 1][K1 - 1];
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int n; cin >> n;
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= n; ++j) {
			for (int k = 1; k <= n; ++k) {
				cin >> a[i][j][k];
				pre[i][j][k] = a[i][j][k] + pre[i - 1][j][k] + pre[i][j - 1][k] + pre[i][j][k - 1] - pre[i - 1][j - 1][k] - pre[i - 1][j][k - 1] - pre[i][j - 1][k - 1] + pre[i - 1][j - 1][k - 1];
			}
		}
	}
	int q; cin >> q;
	while (q -- ) {
		ll l[3], r[3];
		cin >> l[0] >> r[0] >> l[1] >> r[1] >> l[2] >> r[2];
		ll ans = query(l[0], l[1], l[2], r[0], r[1], r[2]);
		cout << ans << "\n";
	}
	return 0;
}

\(\newline\)
\(\newline\)

标签:pre,ABC,int,题解,ll,cin,366,hspace,2mm
From: https://www.cnblogs.com/2026zhaoyl/p/18352788/abc366cute

相关文章

  • ABC366
    A[link](https://atcoder.jp/contests/abc366/tasks/abc366_a]判断一下少的那个人加上剩下的所有票是否会超过另一个人,如果超过,不确定,否则目前票多的必胜。神奇的代码#include<bits/stdc++.h>usingnamespacestd;signedmain(){ intn,a,b; cin>>n>>a>>b; i......
  • CF1674G Remove Directed Edges 题解
    CF1674G给出一个\(n\)点\(m\)边的有向无环图,你需要从中移除一些边,使得对于每一个点,其入度减少(如果原来有入边),出度也减少(如果原来有出边)。当删完边以后,如果有一个点集,满足对于任两点\((i,j)\)可以从\(i\)走到\(j\)或可以从\(j\)走到\(i\),那就称其为可爱的。现在要......
  • CF1863E Speedrun 题解
    CF1863E你在玩一个游戏,要完成\(n\)个任务。其中对于每个任务\(i\),它只能在某一天的第\(h_i\)时刻完成。游戏每天有\(k\)个小时,分别编号为\(0,1,...k-1\)。给出\(m\)对任务间的依赖关系,\((a_i,b_i)\)表示\(a_i\)必须比\(b_i\)先完成。保证依赖关系不形成环。完......
  • 洛谷 P10852 Awaken——题解
    洛谷P10852题解传送锚点摸鱼环节【MX-X2-T1】「CfzRound4」Awaken题目背景能否等到梦醒了的时候。题目描述月做了一个梦。在梦中,她拿到了一个长度为\(n\)的整数序列\(a_1,\ldots,a_n\),其中\(\bm{n\ge5}\)。梦醒了。月忘记了这个序列中的一部分元素,留下了空白......
  • P4933 大师 题解
    题目传送门思路动态规划看到题目就想到了最长上升子序列。类比最长上升子序列,发现多了一个要求,可以多开一维。设\(f_{i,j}\)表示以\(i\)为结尾,\(j\)为公差的序列的长度(点的个数$-1$),那么答案就为\[\sum_{i=1}^{n}\sum_{j=-\max(v)}^{\max(v)}f_{i,j}\]看上去......
  • ABC201E Xor Distances 题解
    ABC201EXorDistances题解题目大意给定一个带权树,求树上每两点的简单路径上的边权的异或和的和。形式化的,定义\(dis(i,j)\)为\(i\)到\(j\)的简单路径上的边权的异或和,求\(\large\sum\limits_{i=1}^n\sum\limits_{j=i+1}^n\text{dis}(i,j)\)。Solve令\(\largef(u)=......
  • [AGC036E] ABC String
    又是一个逐步简化的模型,好烦了又不会做这种题了呜啊呜啊。首先相邻且相同的字符,我们可以缩在一起。不妨假设\(c_a\leqc_b\leqc_c\),我们考虑逐步删除来达到三个字符相同的情况。按照\(A\)将整个字符串划分成若干段,每一段一定形如\(BC\)交错的情形。注意到中间字符串长......
  • 洛谷 P1127 词链——题解
    洛谷P1127题解传送锚点摸鱼环节词链题目描述如果单词\(X\)的末字母与单词\(Y\)的首字母相同,则\(X\)与\(Y\)可以相连成\(X.Y\)。(注意:\(X\)、\(Y\)之间是英文的句号.)。例如,单词dog与单词gopher,则dog与gopher可以相连成dog.gopher。另外还有一些例子:dog......
  • CF1155C 题解
    题目传送门题目大意:给定一个长度为\(n\)的单增序列\(a\)和一个长度为\(m\)的序列\(b\),询问是否存在一个正整数\(y\)使得\(a_1\equiva_2\equiv\cdots\equiva_n\equivy\space(\bmod\spacep)\),且\(p\)在序列\(b\)中出现过。思路:将条件转化一下,得:是否存在一个......
  • 08-08 题解
    08-08题解地址A-CF1420Eluogu翻译更正ifhegivesnomorethatkorders对于至多k次操作,题面没有翻译出来思路怎么算贡献?贡献(被保护)出现在「处在任意两个不同的0的连续段的守卫」之间,而处于同一连续段的守卫之间没有贡献设一共\(cnt\)个\(0\),每个连续......