首页 > 其他分享 >Codeforces Global Round 26 (A - D)

Codeforces Global Round 26 (A - D)

时间:2024-06-10 10:22:16浏览次数:8  
标签:26 int px Global mi Codeforces abs pi mx

Codeforces Global Round 26

A

如果 \(a_1 = a_n\),无解。

如果 \(a_2 = a_n\),\(a_1, a_2\) 涂成红色,否则只把 \(a_1\) 涂成红色。

void solve() {
	cin >> n;
	for(int i = 1; i <= n; ++ i) cin >> a[i];
	if(a[1] == a[n]) {
		cout << "NO\n";
		return;
	}
	cout << "YES\n";
	if(a[2] != a[n]) {
		cout << "R";
		for(int i = 2; i <= n; ++ i) {
			cout << "B";
		}
		cout << '\n';
		return;
	}
	cout << "RR";
	for(int i = 3; i <= n; ++ i) {
		cout << "B";
	}
	cout << '\n';
}

B

如果首位不等于 \(1\),无解。

否则可以推出两个数 \(a + b = x\) 每一位的和,且这个和一定属于 \([10, 18]\),否则无解。

例如:\(1393938\)。

  • \(a_0 + b_0 = 18\)。
  • \(a_1 + b_1 = 13 - 1\)(一定有进位)。
  • \(a_2 + b_2 = 19 - 1\)。

以此类推。

void solve() {
	ll x; cin >> x;
	auto s = to_string(x);
	int n = s.length();
	if(s[0] != '1') {
		cout << "NO\n";
		return;
	}
	for(int i = 0; i <= n - 2; ++ i) {
		int x = 10 + s[i + 1] - '0';
		if(i != n - 2) -- x;
		if(x < 10 || x > 18) {
			cout << "NO\n";
			return;
		}
	}
	cout << "YES\n";
}

C1

void solve() {
	ll n, mi = 0, mx = 0;
	cin >> n;
	for(int i = 1; i <= n; ++ i) {
		int x; cin >> x;
		ll pi = mi, px = mx;
		mx = max({px + x, abs(px + x), pi + x, abs(pi + x)});
		mi = min({px + x, abs(px + x), pi + x, abs(pi + x)});
	}
	cout << mx << '\n';
}

C2

void solve() {
	ll n, mi = 0, mx = 0, ai = 1, ax = 1;
	cin >> n;
	for(int i = 1; i <= n; ++ i) {
		int x; cin >> x;
		ll pi = mi, px = mx;
		ll pai = ai, pax = ax;
		mx = max({px + x, abs(px + x), pi + x, abs(pi + x)});
		mi = min({px + x, abs(px + x), pi + x, abs(pi + x)});
		ai = 0;
		ax = 0;
		ax = (ax + pax * ( (mx == px + x) + (mx == (abs(px + x)) ) ) ) % P;
		ai = (ai + pax * ( (mi == px + x) + (mi == (abs(px + x)) ) ) ) % P;
		if(px != pi) {
			ax = (ax + pai * ( (mx == pi + x) + (mx == (abs(pi + x)) ) ) ) % P;
			ai = (ai + pai * ( (mi == pi + x) + (mi == (abs(pi + x)) ) ) ) % P;
		}
	}
	cout << ax << '\n';
}

D

设 \(s\) 长度为 \(n\)。特判全为 a 的情况,共 \(n - 1\) 种方案。

设 \(s\) 中非 a 字符的数量为 \(m\)。

如果 \(t\) 中有 \(k\) 个非 a 字符,把 \(t\) 掐头去尾忽略前后的 a 后,原串里一定恰好存在 \(\dfrac{m}{k}\) 个 \(t'\),且 \(k\mid m\)。

枚举 \(k\)。记录第 \(i\) 个非 a 字符的位置为 \(p_i\)(从 \(0\) 开始),如果 \(s_{p_i} \ne s_{p_i - k}\) 或不在分割处的 \(p_i - p_{i - 1}\ne p_{i - k} - p_{i - k - 1}\),\(t'\) 不合法。

把 \(t'\) 还原为 \(t\),枚举左边有的 a 个数 \(l \in [0, p_0]\)。

设 \(x\) 为分割处的最小间隔 \(\min(p_i - p_{i - 1}),\ k \mid i\),则右边的 a 个数 \(r \in [0, \min(x - l, n - p_{m - 1} - 1)]\)。

void solve() {
	string s;
	cin >> s;
	int n = s.length();
	if(count(s.begin(), s.end(), 'a') == n) {
		cout << n - 1 << '\n';
		return;
	}	
	vector<int> a;
	for(int i = 0; i < n; ++ i) {
		if(s[i] != 'a') {
			a.eb(i);
		}
	}
	int m = a.size();
	ll ans = 0;
	for(int i = 1; i <= m; ++ i) {
		if(m % i) {
			continue;
		}
		int ok = 1;
		for(int j = i; j < m; ++ j) {
			int o = j % i;
			if(s[a[j]] != s[a[o]] || (o && a[o] - a[o - 1] != a[j] - a[j - 1])) {
				ok = 0;
				break;
			}
		}
		if(ok) {
			int mi = n;
			for(int j = i; j < m; j += i) {
				mi = min(mi, a[j] - a[j - 1] - 1);
			}
			int r = n - a.back() - 1;
			for(int l = 0; l <= a[0]; ++ l) {
				ans += max(0, min(r + 1, mi - l + 1));
			}
		}
	}
	cout << ans << '\n';
}

标签:26,int,px,Global,mi,Codeforces,abs,pi,mx
From: https://www.cnblogs.com/Luxinze/p/18240440

相关文章

  • 23201826-熊锋-第二次blog
    一.前言这三次pta作业第一次为答题判断程序-4,这是答题判断程序的第三次迭代,相较于答题判断三,新增了各种题型及其不同种类的答案,并且出现多选题,使得这次题目相当棘手,具有很大的挑战性。第二次为家居强电电路模拟程序-1,这次是新题型,这道题难点在于电器之间的连接,电路是否为通路,电器......
  • Linux命令 (network statistics -all numeric programs | Global Regular Expression P
    文章目录1、第一种解释2、第二种解释3、第三种解释4、第四种解释5、第五种解释6、netstat--help在Windows中,杀死端口占用的博客链接在Linux中,grep的英文全称是GlobalRegularExpressionPrint全局正则表达式打印。它用于在文本中搜索与指定模式匹配的行,并将这......
  • Codeforces Round 951 (Div. 2)
    A题没什么好说的。B题目读懂了基本就会了。首先很明显,如果x和y的某一位不一样,那这两位异或同一个数字自然也是不一样的。所以要做的就是找到二进制里面最长的连续相同的数量。这个时候看看样例,148全是2的整数次方,33554432,计算器算一下,发现居然也是。那就非常明显了。直接......
  • [Tkey] CodeForces 1267G Game Relics
    太神了这题,膜拜出题人orz。思考一首先是大家都提到的一点,先抽卡再买。这里来做个数学分析。假设我们还剩\(k\)种没有买,其实我们是有式子来算出它的花费期望的。WIKI上提到,假设一个事件的概率为\(p\),则遇到它的期望为\(\frac{1}{p}\),因此,对于这个题,抽到一个新物品的概率显......
  • [ABC126D] Even Relation 题解
    题意对一棵有$N$个点,$N-1$条边的树进行黑白染色,使得每两个距离为偶数的点颜色都一致。思路首先让我们回顾一下加法的性质:偶$+$偶$=$偶奇$+$奇$=$偶偶$+$奇$=$奇不难看出,距离为偶数的关系是可以传递的,而距离为奇数的关系不行。我们只需要做一遍dfs,对一个......
  • [ABC126F] XOR Matching 题解
    很好的构造题。题意请构造一个长度为$2^{m+1}$的序列$a$,该序列满足:$\foralli\in[1,2^{m+1}],a_i\in[0,2^m-1]$且每个数都恰好出现两次。对于任意一对$(i,j)$满足$a_i=a_j$,$a_i\oplusa_{i+1}\oplus\cdots\oplusa_{j-1}\oplusa_j=k$。$\oplus$表......
  • 基于 ESP8266 的模块的引脚资源
    参考资料:0.ESP8266、ESP32引脚图https://blog.csdn.net/qq_45355603/article/details/1256062071.【NodeMcu-ESP8266】引脚使用参考指南——推荐收藏:https://blog.csdn.net/qq_15776011/article/details/137050657 ESP-01S 2.ESP12......
  • 264 Exception Handling Middleware
    示例CRUDExample项目新建Middlewares文件夹,下面新建ExceptionHandlingMiddleware.cs(VS中有Middleware模板)usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Http;usingSerilog;usingSystem.Threading.Tasks;namespaceCRUDExample.Middlewares{ ......
  • 265 Custom Exceptions(更容易定位报错内容具体是什么)
    优势CustomExceptions相比于ArgumentException/ArgumentNullException,更容易定位报错内容具体是什么,报错内容与具体业务相关。示例新建类库项目Exceptions,为Services/CRUDExample项目添加Exceptions项目引用Exceptions项目中添加InvalidPersonIdException.csnamespac......
  • Codeforces Round 950 (Div. 3)G. Yasya and the Mysterious Tree(字典树处理区间异或
    Problem-G-Codeforces存个字典树板子。1#include<bits/stdc++.h>23usingi64=longlong;45constexprintN=1E7;67inttrie[N][2];8intcnt[N][2];910inttot=0;11intnewNode(){12intx=++tot;13trie......