2025-12-19CF2180(Div. 1 + Div. 2)+2025-12-20ABC437 hetao1733837的record

2025-12-19 Codeforces Global Round 31 (Div. 1 + Div. 2)+2025-12-20 UNIQUE VISION Programming Contest 2025 Christmas (AtCoder Beginner Contest 437) hetao1733837的record

2025-12-19 Codeforces Global Round 31 (Div. 1 + Div. 2)

比赛链接:Codeforces Global Round 31 (Div. 1 + Div. 2)

好困......有个问题就是,下周二要不要回家打 D i v 3 Div3 Div3?我坐最后一排睡觉会被发现吗?

CF2180C

原题链接:C. XOR-factorization

分析

场切了 A , B A,B A,B,呃......似乎 A A A 更难一些?

这题有一个初步思路就是呃,贪心,这不废话吗,呃,就是高位尽可能多一些,呃,没了。

但是,在来学校的地铁🚇上,我发现似乎可以在某一个无限大的位置排偶数次,然后在排一个 n n n,那这题岂不是不可做?

行,上午 【数据删除】 安排了一场模拟赛,感觉题目质量并不高......可能和时代有点脱节吧,还在高精度。

我继续补题,不管他了。

漏了一个限制 a i ≤ n a_i\le n ai≤n。

那么,对于 k ≡ 1 ( m o d 2 ) k \equiv 1\pmod 2 k≡1(mod2) ,都整成 n n n 即可。

然后,呃,我就看不懂了......先写一下代码看能不能懂。

正解

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int T, n, k;
int a[N];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> T;
	while (T--){
		memset(a, 0, sizeof(a));
		cin >> n >> k;
		int p = 0;
		if (k % 2 == 1){
			for (int i = 1; i <= k; i++)
				cout << n << " ";
			cout << '\n';
			continue;
		}
		else{
			for (int i = 30; i >= 0; i--){
				if (n & (1 << i)){
					for (int j = 0; j < k; j++)
						if (j != min(p, k - 1))
							a[j] += (1 << i);
					if (p < k)
						p++;
				}
				else{
					for (int j = 0; j < p / 2 * 2; j++)
						a[j] += (1 << i);
				}
			}
		}
		for (int i = 0; i < k; i++)
			cout << a[i] << " ";
		cout << '\n';
	}
}

我好像理解又好像不理解。

问花花了(●'◡'●)

直接干到傍晚了......并非由于花花,而是我直接在宿舍爽睡到三点半🕞,又听了核桃的课导致的。

呃,我的理解还是太感性了。

回家的地铁上,似乎想明白了,就是 p p p 既用于限制小于等于 n n n,同时,还有控制二进制下 1 1 1 的位置都是奇数次。呃,大概就是这吧。

CF2180D Insolvable Disks

原题链接:D. Insolvable Disks

分析

艹,CF 似了。天注定今晚写不了了。

xxxalqD 是坨好屎,呃......那补一下吧......

感觉找 AI 翻译了不下 3 3 3 次这道题......

呃, J J J 组 T 4 T4 T4 的水平吧......可能都到不了。

好累😩

音乐🎵是缓解疲惫的良药。

------fbh

巧妙的关系推到!当两圆相切,当且仅当他们半径等于距离,则有了一个递推式,然后吃吃吃。呃......我不想写了。翻译留在这了。

正解

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
const int N = 2000005;
int T;
int n, x[N];
int main(){
    ios::sync_with_stdio(false) , cin.tie(0);
    cin >> T;
    while(T--){
        cin >> n;
        for (int i = 0; i < n; i++) 
			cin >> x[i];
        int ans = n - 1;
        int l = 0 , r = +1e9+1;
        int cur = 0;
        int fst = 1;
        for (int i = 1; i < n; i++){
            cur = (x[i] - x[i - 1]) - cur;
            if (i % 2 == fst % 2){
                r = min(r, cur);
                if (i < n - 1) 
					l = max(l, cur - (x[i + 1] - x[i]));
            }
            else{
                l = max(l, -cur);
                if (i < n - 1) 
					r = min(r, (x[i + 1] - x[i]) - cur);
            }
            if (l >= r){
                ans--;
                l = 0;
				r = 1e9 + 1;
                cur = 0;
                fst = i + 1;
            }
        }
        cout << ans << '\n';
    }
}

2025-12-20 UNIQUE VISION Programming Contest 2025 Christmas (AtCoder Beginner Contest 437)

比赛链接:AtCoder Beginner Contest 437

C - Reindeer and Sleigh 2

原题链接1:AT_abc_437_c

原题链接2:C - Reindeer and Sleigh 2

分析

太耻辱了,橙题没场切/ll

一直在纠结按重量还是力量贪心,不是,那直接按和贪心呗,唐诗......

正解

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 300005;
int T;
int n;
struct node{
	int w, p, sum;
}a[N];
bool cmp(node x, node y){
	return x.sum > y.sum;
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> T;
	while (T--){
		cin >> n;
		int tot = 0;
		for (int i = 1; i <= n; i++){
			cin >> a[i].w >> a[i].p;
			a[i].sum = a[i].w + a[i].p;
			tot += a[i].w;
		}
		sort(a + 1, a + n + 1, cmp);
		int ans = n;
		for (int i = 1; i <= n; i++){
			tot -= a[i].sum;
			ans--;
			if (tot <= 0){
				cout << ans << '\n';
				break;
			}
		}
	}
}

D - Sum of Differences

原题链接1:AT_abc437_d

原题链接2:D - Sum of Differences

分析

前缀和,场上这么烫吗?

正解

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define mod 998244353
using namespace std;
const int N = 300005;
int n, m, a[N], b[N], sum[N];
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; i++){
		cin >> a[i];
	}
	for (int i = 1; i <= m; i++){
		cin >> b[i];
	}
	sort(b + 1, b + m + 1);
	for (int i = 1; i <= m; i++){
		sum[i] = sum[i - 1] + b[i];
	}
	int ans = 0;
	for (int i = 1; i <= n; i++){
		int tmp = upper_bound(b + 1, b + m + 1, a[i]) - b - 1;
		int cnt1 = tmp, cnt2 = m - tmp, sum1 = sum[tmp], sum2 = sum[m] - sum[tmp];
		int res = (a[i] * cnt1 - sum1 + sum2 - a[i] * cnt2) % mod;
		ans = (ans + res) % mod;
	}
	cout << ans;
}
相关推荐
寻寻觅觅☆7 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
fpcc7 小时前
并行编程实战——CUDA编程的Parallel Task类型
c++·cuda
偷吃的耗子7 小时前
【CNN算法理解】:三、AlexNet 训练模块(附代码)
深度学习·算法·cnn
化学在逃硬闯CS8 小时前
Leetcode1382. 将二叉搜索树变平衡
数据结构·算法
ceclar1238 小时前
C++使用format
开发语言·c++·算法
Gofarlic_OMS9 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
lanhuazui109 小时前
C++ 中什么时候用::(作用域解析运算符)
c++
charlee449 小时前
从零实现一个生产级 RAG 语义搜索系统:C++ + ONNX + FAISS 实战
c++·faiss·onnx·rag·语义搜索
夏鹏今天学习了吗9 小时前
【LeetCode热题100(100/100)】数据流的中位数
算法·leetcode·职场和发展
老约家的可汗9 小时前
初识C++
开发语言·c++