03 2025 档案

摘要:AE 签到秒了 DL So Hard 做不了一点 I 模拟还是算了 B dp 的优化 没有解题思路, 陈的观察加刘的码力直接一发过了 CODE #include<bits/stdc++.h> using namespace std; #define int long long const int m 阅读全文
posted @ 2025-03-28 15:54 Young_Cloud 阅读(47) 评论(0) 推荐(0)
摘要:1001 数学 Lucas定理 解题思路 一看题就知道我们要求当 \(b_i \in [1, L_i]\) 内,有多少 \(b_i\) 使得 \((^{a_i}_{b_i})\) 是奇数。 于是我们看 \(Lucas\) 定理: 对于素数 \(p\),有: \[(^n_k) \equiv (^{\l 阅读全文
posted @ 2025-03-22 21:19 Young_Cloud 阅读(12) 评论(0) 推荐(0)
摘要:Midum 1006 博弈 找规律 解题思路 我的思路是从最一般的开始考虑 (一般性:红宝石 > 蓝宝石 > 盒子) 若只有红宝石,则是一个经典的巴什博弈,当 \(r \% 4 = 0\) 时后手获胜(题目保证了三个数不都为 0)。 若只有若干红宝石和 1 个蓝宝石。注意到拿走蓝宝石的附加作用是增或 阅读全文
posted @ 2025-03-15 23:23 Young_Cloud 阅读(11) 评论(0) 推荐(0)
摘要:我一直认为涉及到概率的算法都是神秘的。 阅读全文
posted @ 2025-03-15 13:23 Young_Cloud 阅读(42) 评论(0) 推荐(0)
摘要:碰到这个问题的时候,我第一个想到的是固定凸多边形的一个点,然后枚举所有边与它组成三角形,最后计算三角形的面积和。知道如如何用鞋带公式求三角形的面积后,我写出了以下代码: // 鞋带公式求三角形面积 double area(std::array<i64, 2> &u, std::array<i64, 阅读全文
posted @ 2025-03-14 23:19 Young_Cloud 阅读(70) 评论(0) 推荐(0)
摘要:洛谷 P5490 【模板】扫描线 & 矩形面积并 这里主要讲用代码实现的一些细节。也就是如何写线段树。 离散化后,我想要线段树维护的区间端点都是正数,因此在离散化之前我们在待离散化的数组里插入一个最小值,以遍在排序后将 0 这个位置占着: a.clear(); a.push_back(-1); // 阅读全文
posted @ 2025-03-14 17:46 Young_Cloud 阅读(23) 评论(0) 推荐(0)
摘要:好难啊好难啊 Log 3.15 增加 1008 的题解 1001 略 1002 概率 数学 解题思路 为了方便判断那两个人进行 duel,我们将所有人的编号都减一,即编号的范围是 \([0, N)\)。 根据题意我们知道相邻的两个人(编号为 \(2k\) 和 \(2k + 1\)) duel 后,胜 阅读全文
posted @ 2025-03-10 23:07 Young_Cloud 阅读(30) 评论(0) 推荐(0)
摘要:B 动态规划 解题思路 一眼 dp,主要就是怎么去转移。 我们定义 \(dp[u][0/1]\) 为在整个 dfs 序中节点 \(u\) 在偶数位/奇数位时,子树 \(u\) 的最大价值。 为了简便描述,我们将 “\(u\) 在偶数位” 记作 “从 0 进入 \(u\)”,将 “\(u\) 在奇数数 阅读全文
posted @ 2025-03-10 21:52 Young_Cloud 阅读(222) 评论(0) 推荐(1)
摘要:A 其实是构造。 构造出 123456789d000……。 后面 0 的个数跟给定 n 的位数相同。 然后加上 n 减模数就好了 CODE void solve() { int n,d; cin>>n>>d; i64 cur=1234567890ll+d; int nn=n; while(nn){ 阅读全文
posted @ 2025-03-06 20:53 Young_Cloud 阅读(267) 评论(0) 推荐(0)
摘要:ABC 略 D 首先将 \(N\) 个不同的数分成若干非空组的方案数是贝尔数 \(B(N)\),且 \(B(12) < 5 \times 10^6\),所以我们可以暴力求出所有的组合方案来求解。 CODE std::unordered_set<i64> vis; i64 val; void dfs( 阅读全文
posted @ 2025-03-05 23:29 Young_Cloud 阅读(60) 评论(0) 推荐(0)
摘要:ABC 略 D 解题思路 如果对于每个点,我们知道了它被移除的时刻(无限大则说明不会被移除),我们就可以知道询问的点在给定时刻有没有消失。 在对所有的点按横坐标分类后,我们就可以知道最多有多少行点被移除:点数最少的那一列的点数。 对于能够被移除的点,假设它处在 \(x\) 层,则被该点被移除的时刻就 阅读全文
posted @ 2025-03-03 22:10 Young_Cloud 阅读(18) 评论(0) 推荐(0)
摘要:ABC 略 D 解题思路 对于操作 2,我们可以将窝对换而企鹅不动。然后就是看实现了 CODE void solve() { int n = 0, q = 0; std::cin >> n >> q; // idx 第 i 个位置的窝的编号 // nest 编号为 i 的窝在那个位置 // p 第 阅读全文
posted @ 2025-03-03 17:09 Young_Cloud 阅读(19) 评论(0) 推荐(0)
摘要:AB 略 C 解题思路 注意题目所描述的 penalty 是取最大值而不是求和。于是我们就可以用二分了,对于每个 mid,我们 check 的时候就贪心地来涂色:我们总是从蓝色开始涂,在红色处截止; 下面仅给出 check: CODE bool check(int mid) { int cnt = 阅读全文
posted @ 2025-03-02 17:30 Young_Cloud 阅读(27) 评论(0) 推荐(0)