题解840e cf
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 ......
CF1550F Jumping Around
更好的阅读体验 CF1550F Jumping Around 提供一个不用动脑子的方法。 首先题目可以看成是求一个点到 \(s\) 的最小瓶颈路,设这个值为 \(v_i\),自然想到最小生成树,但是边数是 \(\mathcal O(n^2)\) 的,不可接受。 考虑使用 prim,一开始联通块力只有 ......
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 ......
2023 百度之星决赛题解
T4 传信游戏 建反向边,从入度为 \(0\) 的结点开始搜 T5 喵喵卫士,全靠你了\(\star\) 考虑暴力枚举每个点的深度,发现只要知道相邻两层的深度就能用组合数算方案数,自然想到按层 DP,把上一层的点数记到状态里 赛时做法 按深度从小到大 DP 的话想要记录每个点是否被用过,以保证深度达 ......
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;// ......
CF1523H Hopping Around the Array
首先考虑 \(k = 0\) 的情况。 贪心,最后一步之前每个 \(i\) 只会跳到 \(j \in [i, i + a_i]\) 且 \(j + a_j\) 最大的点 \(j\),这个信息或许可以线性处理?但是我没脑子,我用线段树维护,时间复杂度 \(\mathcal O(n \log n)\)。 ......
ABC335E题解
洛谷题面 感觉有点毒瘤,不过还是有些 trick 在的。 题意翻译(复制于洛谷题面): 给定一个 \(N\) 个点 \(M\) 条无向边的图,图上每个点都有其颜色。求所有经过点权单调不降的路径中,出现的不同颜色的个数最多是多少。 由于是单调不降的路径,所以可以点权大的点到点权小的点的路径对结果没有影 ......
P3730 曼哈顿交易题解
题目链接:曼哈顿交易 比较容易想的题,观察下首先不带修改,考虑维护的东西:次数作为权值,这玩意很显然很难在线维护,考虑下离线算法。看到这种和次数有关的权值,典型的单点加入和删除是非常好找到变化的,那么就莫队离线算法吧。 考虑下莫队如何来做,涉及到权值第 \(k\) 大,解决方法挺多的,但时限容易知道 ......
CF1687C Sanae and Giant Robot 题解
题目链接:https://codeforces.com/contest/1687/problem/C 题意简述 有两个长为 \(n\) 的数列 \(a\) 和 \(b\)。有 \(m\) 条线段,你可以进行任意次以下操作: 选择一条线段 \([l, r]\),若 \(\sum\limits_{i = ......
P2801 教主的魔法 题解
Question P2801 教主的魔法 有一个 \(n\) 个元素的序列 \(a\),有两种操作 M L R W 对区间 \([L,R]\) 内每个数都加 \(W\) A L R C 询问区间内有多少数字大于或等于 \(C\) Solution 一个比较经典的分块题 暴力分成 \(t\) 个块,对 ......
2023 CCPC 桂林题解
gym H. Sweet Sugar 一个经典贪心是从下到上,如果子树 \(u\) 剩下的部分(一定包含 \(u\))包含合法连通块,那么这个连通块给答案贡献 \(1\),切断 \(u\) 与 \(fa[u]\) 的边 key observation:如果一个连通块权值和为 \(x\),那么一定可以 ......
(补题)CF1348B. Phoenix and Beauty
CF1348B. Phoenix and Beauty 思路 最后输出的一定是一个周期为k的数值。我们只需要查看输入进来的数组中的元素的种类和k的关系即可。元素种类大于k输出-1;小于等于k,输出每个不同的元素,不够k个的话就用1补齐 ac代码 #include <bits/stdc++.h> us ......
P1980题解
自定义函数 定义一个自定义函数find_num用来记录数字x在该数里的个数。 int find_num(int n,int m){ int cnt=0; while(n!=0){ if(n%10=m){ cnt++; } n/=10; } return cnt; } 思路 1.定义及输入截止数/含有 ......
P1923题解
博文T3航站楼 ✈ P1923【深基9.例4】求第 k 小的数 预先准备 排序用函数 sort,不会用着参看文章sort用法 头文件 #include<algorithm> 及一个数组 a[5000005] 为了保证输入效率,我们用 scanf 进行输入。不会者可参看文章scanf用法 思路 1.定 ......
P1271题解
博文T4航站楼 ✈ P1271【深基9.例1】选举学生会 预先准备 本题需要用到排序函数 sort,不会者参看文章sort用法 头文件 #include<algorithm> 还需用到一个数组 a[2000005] 思路 1.定义及输入 n,m :选举人数/投票人数 int n,m; cin>>n> ......
P5015题解
博文T2航站楼 ✈ P5015标题统计 数组及变量准备 变量 string n 输入的标题 int cnt=0 计数器 预先准备 getline函数: 可用于输入带空格的字符串,格式如下 getline(cin,字符串名,结束字符); 思路 getline输入字符串\(n\) getline(cin ......
1.9模拟赛 T3题解
简要题意 求一个抽象函数,满足 \(∀𝑥 ∈ ℤ, 𝑓(𝑥) + 𝐶 = 𝑓(2𝑓(𝑥) − 𝑥 + 1)\),给定 \(n\) 个点,使得 \(\sum |f(x_i)-y_i|\) 最小,输出最小值 思路 对这个函数进行一次迭代,可以得到 \(f(x+2C)=f(x)+2C\) ......
CF1886E I Wanna be the Team Leader 题解
Problem - E - Codeforces I Wanna be the Team Leader - 洛谷 差一点就想到了/ll 遇到困难?排序肯定不会变差! 性质:每个项目分配的程序员肯定是一段(显然) \(m\) 很小?考虑设 \(dp_{i,S}\) 表示考虑前 \(i\) 个人选项目集 ......
CF1886D Monocarp and the Set 题解
Monocarp and the Set - 洛谷 Problem - D - Codeforces 非常之降智 加入一个数让他满足他是最大值需要判断前面加入的那些数中最大的是哪个,但删除一个数让他满足是最大值只需要直接把他删掉即可 因此我们要反着考虑这个问题: 如果当前是 <,则删除最小的数,有一 ......
【题解】LibreOJ 3089 「BJOI2019」奥术神杖
先考虑这个权值 \(\sqrt[c]{\prod\limits_{i = 1}^c V_i}\)。 感觉找不到好的方法算出精确值,但是能发现只用比大小。 于是考虑取个对数成 \(\frac{1}{c}\times \ln(\prod\limits_{i = 1}^c V_i) = \frac{1}{ ......
[AGC004F]Namori题解
简要题意 略 思路 先考虑树的的情况,直接黑白染色,统计子树和的绝对值即可 再考虑奇环,发现这时会有两个同色相邻点,只需把多余的操作,在这两个点处理掉即可 最后考虑偶环,先断掉一条边,最后再考虑这条边的贡献,推一下柿子,就变成了初中数学题,取中位数即可 code #include<bits/stdc ......
[Noi Online #1 入门组] 跑步 题解
[Noi Online #1 入门组] 跑步 \(m = \sqrt{n}+1\) 对于大于 \(m\) 的数,采用另外一种方式 \(x > m\) --> 其数量 \(< m\) 记 \(g[i][j]\) 表示用了 \(i\) 个大于等于 \(m\) 的数 和为 \(j\) 的方案数 初始状态 ......