题解codeforces round 1805
【题解】 P4482 | 后缀自动机 树分治
一种很好写的 \(O(n\log ^2 n)\) 的做法和处理技巧,不需要会任何 border series 的知识,只需要会 SAM 和一些基础数据结构就行。 考虑 \(\text{MaxBorder}(l,r)\) 可以被写成即找到最大的 \(p \leq r - l\) 满足 \(S[l:l+ ......
【GDKOI 2024 TG Day2】不休陀螺(top) 题解
考虑一个卡牌区间怎样才不是”陀螺无限“。 一个是费用在打到一半时费用就不够了。考虑构造一个卡牌序列使其尽量能够在打到一半时费用就不够,如何构造呢? 把 \(a_i > b_i\) 的卡牌称作消耗型卡牌,其他叫做获得型卡牌。我们可以构造把消耗型卡牌全部放在前面,后面突然来个很大的 \(a_i\) 就可 ......
CF1876C Autosynthesis 题解
Autosynthesis - 洛谷 https://codeforces.com/contest/1876/problem/C 这次也差点想出来了 \(QwQ\) 遇到这种题第一感觉是建图。把 \(i \rightarrow a_i\) 得到一个 章鱼森林 (这里忘记了每个点只有一个出边,是章鱼森 ......
【题解】QOJ 4253 robot
考虑到不管怎么变化 \(x_i\) 的值其在 \(t\) 时刻的位置都能被一个一次函数 \(x_i\times t + b\) 表示。 而且 \(b\) 是好算的,考虑到知道现在的斜率 \(k\) 和现在的时间 \(t\) 以及现在的值 \(f(t)\),则整个函数就是 \(f(x) = f(t) ......
codeforces 918 div4
C 题意 : 给定一些数,问这些数的和是不是完全平方数(5*5这样) #include<cmath> #include<iostream> #define ll long long using namespace std; bool issq(ll n){ ll root = sqrt(n); re ......
[COCI2015-2016#2] VUDU 题解
[COCI2015-2016#2] VUDU 题解 题意 给一个长度为 \(N\) 的整数序列 \({a}\),对于其一共 \(\frac{N\times (N+1)}{2}\) 个的非空区间,求有多少个区间的平均数大于等于 \(p\)。 暴力做法 显然,可以直接枚举区间左端点 \(j\) 与区间右 ......
CF1006E Military Problem 题解
CF1006E Military Problem 题解 题意 给定一颗有 \(n \thinspace (2 \leq n \leq 2 \times 10^5)\) 个节点的树,树根为 \(1\)。 对于每个节点 \(i \thinspace (2 \leq i \leq n)\) 都有它的父节点 ......
[COCI2012-2013#2] POPUST 题解
[COCI2012-2013#2] POPUST 题解 题意 有 \(N \thinspace (2 \leq N \leq 5 \times 10^5)\) 个物品,每个物品的原价是 \(b_i\) 元。每次选物品时,第一件选出的物品 \(i\) 价格变为 \(a_i\) 元,问选 \(i \th ......
Meaningful Mean 题解
[ARC075E] Meaningful Mean 题解 题意 给一个长度为 \(N\) 的整数序列 \({a}\),对于其一共 \(\frac{N\times (N+1)}{2}\) 个的非空区间,求有多少个区间的平均数大于等于 \(k\)。 暴力做法 显然,可以直接枚举区间左端点 \(j\) 与 ......
【题解】CatOJ C0458C 滑动窗口定期重构
标题 trick 的名字我也不知道是什么,就这样吧。 link。 首先有显然的 dp 式子:\(f(i)=\min \{f(j) \times \max\{a_{j+1},\dots,a_i\}\}\)。考虑怎么去优化它。 有显然的 \(\mathcal O(n\log n)\):考虑线段树优化 d ......
1.11模拟赛 T1题解
简要题意 \(n\le 10^3 , \sum K_i\le3\times10^5\) 思路 首先容易想到一个暴力DP,\(f_{l,r,x}\) 表示区间中最大值为 \(x\) 的最大值 稍微想亿下可以发现如果这个位置选的不是区间最大值的话,答案一定不优 所以我们可以直接 \(f_{l,r}\) ......
AT_joisc2018_b 题解
AT_joisc2018_b 题解 传送门 题意 有一个以原点为中心的正方形,有 \(n(n\le 100)\) 条不在正方形内部的线段,你需要画一些不在正方形内部的线段,使得这些线段可以把正方形围起来,要求最小化你画的线段的长度和。 思路 我们需要画出一条闭合折线,并且能够把正方形包围。 考虑我们 ......
1.11模拟赛 T2题解
简要题意 每个点有一定概率向前面的点连边,求两点之间距离的期望 思路 推柿子 code #include<bits/stdc++.h> using namespace std; #define int long long #define N 1000005 int n,m,u,v; const in ......
P4103 [HEOI2014] 大工程 题解
题目链接:大工程 先考虑只有一次查询,很显然我们可以暴力树上 dp 处理出答案。 对于每个节点而言,有: 容易看出类似点分治逐个遍历子树计算前面一堆子树对后面子树的贡献思想,我们可以很容易的知道: 对于路径总和,显然多了一段新的贡献,这段贡献为当前关键点和前面点多的一段 \(2\) 号路线长。这段长 ......
概率生成函数([CTSC2006] 歌唱王国 题解)
如果数列 {p_n} 满足 P(X=i)=p_i(即 {p_n } 为 X 的概率质量函数 PMF 所构成的数列),那么有概率生成函数:F_X(x)=\sum^{+\infty}_{i=0}P(X=i)x^i,概率生成函数具有一些性质,这些性质可以简化我们做题时的一些推导…… ......
P9549 「PHOI-1」路虽远 题解
题目链接:路虽远 带限制的 dijkstra,优先考虑有哪些限制条件,当做类似 dp 去写。闯黄灯次数有要求,限制速度的边数量有要求。 我们注意到,如果选择哪些边限速不易于基于贪心选择,可以考虑转换下,边数 \(-\) 限制数即为可以不限速的边,选择不限速的贪心优于限速的,这样一来,我们在有机会选择 ......
P3741题解
题目分析 给出一个字符串 \(s\),允许改变 \(0\) 或 \(1\) 个字符,求其中 VK 的出现次数。 变量/数组/函数解析 int n 字符串 \(s\) 的长度 string s 字符串 \(s\) int count(string s,string key) 自定义函数:求字符串 \( ......
CF Beta Round 93-D.Fibonacci Sums-齐肯多夫分解、DP
CF Beta Round 93-D.Fibonacci Sums-齐肯多夫分解、DP https://codeforces.com/contest/126/problem/D 定义Fibonacci序列:\(F_1=1,F_2=2,F_k=F_{k-1}+F_{k-2}(\forall k\geq ......
P4093 [HEOI2016/TJOI2016] 序列 题解
题目链接:序列 对于 LIS 问题,很显而易见的有 dp方程为: \[dp_i=\max{dp_j}+1 \ (j<i,a_j \le a_i) \text{ dp表示以某个位置结尾的最长 LIS} \]本题考虑到对于转移的两位置,如果能从 \(j \rightarrow i\),那么在以上条件成立 ......
《算法竞赛》题解---三分
三分法 模板三分法 #include<bits/stdc++.h> #define eps 1e-8//或者 const double eps=1e-8;--主要是double using namespace std; int n; double a[15],l,r; double check(do ......
CodeForces 1329D Dreamoon Likes Strings
洛谷传送门 CF 传送门 考虑构造一个新串 \(t\),只保留原串 \(s_{i - 1} = s_i\) 的字符 \(s_i\)。设 \(a_i\) 为 \(t_i\) 在原串的位置。 那么新串上我们有两种操作: \(\forall i\),删除 \(t_i\)(相当于删除原串中的 \([a_i, ......
2023 百度之星决赛题解
T4 传信游戏 建反向边,从入度为 \(0\) 的结点开始搜 T5 喵喵卫士,全靠你了\(\star\) 考虑暴力枚举每个点的深度,发现只要知道相邻两层的深度就能用组合数算方案数,自然想到按层 DP,把上一层的点数记到状态里 赛时做法 按深度从小到大 DP 的话想要记录每个点是否被用过,以保证深度达 ......
CodeForces 1237H Balanced Reversals
洛谷传送门 CF 传送门 容易想到把 \(s, t\) 分成长度为 \(2\) 的段考虑。容易发现 \(00, 11\) 的个数在操作过程中不会改变,所以若两串的 \(00\) 或 \(11\) 个数不相等则无解。 考虑依次对 \(i = 2, 4, \ldots, n\) 构造 \(s[1 : i ......
vp Codeforces Round 915 (Div. 2)
vp还是比正式打舒服一些。。AB很顺畅,A题。。我只能说玩MC的都一眼秒了好吧 C题,我卡住了,结论非常好推,我直接退出来了,但是,问题是我对特例的判断不是很熟悉,或者说不是很敏感。这是一个大问题,我在wa on test 2的时候,第一反应是去看看这个算法整个有没有什么问题,事实上是没有的那么问题 ......
P3203 弹飞绵羊 题解
Question P3203 [HNOI2010] 弹飞绵羊 一条直线上摆着 \(n\) 个弹簧,每个弹簧有一个弹力系数 \(k_i\),当绵羊走到第 \(i\) 个弹簧时,会被弹到第 \(i+k_i\) 个弹簧,如果 \(i+k_i>n\) 则会被弹飞,有两个操作 1 x 查询 \(x\) 处的绵 ......
P1085题解
思路 1.定义校内时间/校外时间/最大值 (记录不高兴值) /记录星期 int n,m,maxx=-1,tmp; 2.使用循环输入并判断 for(int i=1;i<=7;i++){//循环一周的日期 cin>>n>>m; if(n+m>8 && maxx<n+m){//如果津津不高兴了且它比以往的 ......
P5722题解
说两句哈,等差数列求和公式是\((A_1+A_n)\times d \over 2\),所以其实可以一行代码解决,但是我没高斯聪明,于是我不打算用等差数列求和公式。 //(等差数列求和公式) int n; cin>>n; cout<<(1+n)*1/2; 思路 1.定义及输入截止的数/计数器 int ......
P5718题解
思路 1.定义及输入最小值的变量/输入个数/每个数 int n,m,minn=1001; cin>>n; 2.循环输入每个数并找最小值 while(n--){ cin>>m; minn=min(minn,m); } (用for循环也可以) for(int i=1;i<=n;i++){ cin>>m; ......
P1307题解
思路 1.定义及输入原数/反转后的数 int n,cnt=0;//反转后的数一定要归零! cin>>n; 2.用while循环反转 while(n!=0){//只要n还没有被分解完,就继续分解 cnt=cnt*10+n%10;//cnt每次*10再加上分离出的数位(*10为了防0) n/=10;// ......
Codeforces [Hello 2024]
Codeforces Hello 2024 主打一个昏了头 A. Wallet Exchange #include <bits/stdc++.h> #define endl '\n' //#define int long long using namespace std; const int N = ......