摘要:
Midum 1006 博弈 找规律 解题思路 我的思路是从最一般的开始考虑 (一般性:红宝石 > 蓝宝石 > 盒子) 若只有红宝石,则是一个经典的巴什博弈,当 时后手获胜(题目保证了三个数不都为 0)。 若只有若干红宝石和 1 个蓝宝石。注意到拿走蓝宝石的附加作用是增或 阅读全文
摘要:
我一直认为涉及到概率的算法都是神秘的。 阅读全文
摘要:
碰到这个问题的时候,我第一个想到的是固定凸多边形的一个点,然后枚举所有边与它组成三角形,最后计算三角形的面积和。知道如如何用鞋带公式求三角形的面积后,我写出了以下代码: // 鞋带公式求三角形面积 double area(std::array<i64, 2> &u, std::array<i64, 阅读全文
摘要:
洛谷 P5490 【模板】扫描线 & 矩形面积并 这里主要讲用代码实现的一些细节。也就是如何写线段树。 离散化后,我想要线段树维护的区间端点都是正数,因此在离散化之前我们在待离散化的数组里插入一个最小值,以遍在排序后将 0 这个位置占着: a.clear(); a.push_back(-1); // 阅读全文
摘要:
好难啊好难啊 Log 3.15 增加 1008 的题解 1001 略 1002 概率 数学 解题思路 为了方便判断那两个人进行 duel,我们将所有人的编号都减一,即编号的范围是 。 根据题意我们知道相邻的两个人(编号为 和 ) duel 后,胜 阅读全文
摘要:
B 动态规划 解题思路 一眼 dp,主要就是怎么去转移。 我们定义 为在整个 dfs 序中节点 在偶数位/奇数位时,子树 的最大价值。 为了简便描述,我们将 “ 在偶数位” 记作 “从 0 进入 ”,将 “ 在奇数数 阅读全文
摘要:
A 其实是构造。 构造出 123456789d000……。 后面 0 的个数跟给定 n 的位数相同。 然后加上 n 减模数就好了 CODE void solve() { int n,d; cin>>n>>d; i64 cur=1234567890ll+d; int nn=n; while(nn){ 阅读全文
摘要:
ABC 略 D 首先将 个不同的数分成若干非空组的方案数是贝尔数 ,且 ,所以我们可以暴力求出所有的组合方案来求解。 CODE std::unordered_set<i64> vis; i64 val; void dfs( 阅读全文
摘要:
ABC 略 D 解题思路 如果对于每个点,我们知道了它被移除的时刻(无限大则说明不会被移除),我们就可以知道询问的点在给定时刻有没有消失。 在对所有的点按横坐标分类后,我们就可以知道最多有多少行点被移除:点数最少的那一列的点数。 对于能够被移除的点,假设它处在 层,则被该点被移除的时刻就 阅读全文
摘要:
ABC 略 D 解题思路 对于操作 2,我们可以将窝对换而企鹅不动。然后就是看实现了 CODE void solve() { int n = 0, q = 0; std::cin >> n >> q; // idx 第 i 个位置的窝的编号 // nest 编号为 i 的窝在那个位置 // p 第 阅读全文