随笔分类 - OI/ACM题解
摘要:Educational Codeforces Round 33 (Rated for Div. 2) 提交记录 https://codeforces.com/contest/893/status D 为了尽可能防止钱数 $>d$,所以设置一个下界 $lv$ 来判断是否有解:也就是每次必要充钱(就是当
阅读全文
摘要:AtCoder Beginner Contest 192 D 注意到只有一位的时候多少进制都一样,方便起见先判掉。 剩下的都是进制越大值越大,考虑二分: 对于当前进制 $b$,从低位开始计算当前的值,如果发现比限制大了就返回 false,注意到二分的 $mid$ 上限是 $10^{18}$,也就是计
阅读全文
摘要:牛客练习赛100 https://ac.nowcoder.com/acm/contest/11251 简要地写一下 A-E 的解答。 A-D 为了减少篇幅没有放头文件等东西,可以到 E 题去取。 A 范围不大,直接枚举来找即可。 int main(){ int a, b, n; cin>>a>>b>
阅读全文
摘要:传送门: https://codeforces.com/contest/987 A 模拟,开个 map。 int main(){ map<char, string> w; w['p']="Power", w['g']="Time", w['b']="Space", w['o']="Soul", w[
阅读全文
摘要:这题括号多余的情况好恶心 orz,以及负数的情况也增加了这题的难度。 分析 首先,解决一般的中缀表达式转后缀表达式问题: 这里的运算符包括 +,-,*,/,^,当然,扩大运算符包含的集合的时候我们也可以类似推广。 考虑用一个答案栈 res 以及运算符栈 ops 来操作。 遇到数字的时候,将它丢入 r
阅读全文
摘要:这题的思想还是很有意思的~ 分析 考虑将读入的数处理成 pair 数组,第一个属性代表读入的值,第二个属性代表下标。 然后将 pair 数组对值升序排序,可以发现,如果想要 pair 连续的一段出现在同一个双端队列中,那么下标一定是先递减再递增(像山谷一样)(当然,单调这种退化的形式也算)。 为什么
阅读全文
摘要:传送门:https://www.acwing.com/solution/content/82014/ 分析 假如没有染色顺序的约束,那么最佳决策当然是先染权值大的点(本质上就是排序不等式)。 然而现在它有约束,但我们可以保证的一点是:当树上最大的点 \(u\) 的父节点 \(p\) 被染色的时候,立
阅读全文
摘要:A 直接 $O(1)$ 用结论搞出来即可,但赛时发现范围很小就直接模拟了(注意到机器人在撞到上面和左面的墙并发生变速之前一定能够清除,只需要模拟撞下面、右面的墙) int main(){ int T; cin>>T; while(T--){ int n, m, sx, sy, tx, ty; cin
阅读全文
摘要:传送门: https://codeforces.com/contest/1325 A 很简单的构造,输出 $1,n-1$ 即可。 int main(){ int T; cin>>T; while(T--){ int n; cin>>n; cout<<1<<' '<<n-1<<endl; } retu
阅读全文
摘要:Codeforces Round #549 (Div. 1) 传送门: https://codeforces.com/contest/1142 A 分类讨论。 我们记出发点为 $s$,走一步后(距离为 $L$)到达的点为 $t$。 我们根据 $s,t$ 的位置分成四种($2\times2$)情况:
阅读全文
摘要:这份 dp 题单的最后几题好难 orz。 前面的题比较简单,所以我会选取一些题来讲,其它的直接看代码理解吧 qwq。 传送门: https://atcoder.jp/contests/dp 全部 AC 代码: https://atcoder.jp/contests/dp/submissions?f.
阅读全文
摘要:传送门:https://codeforces.com/contest/1405 A 将序列翻转输出即可。 #pragma GCC optimize("O3") #include<bits/stdc++.h> using namespace std; #define endl '\n' #define
阅读全文
摘要:A 保证乘积不为 $0$,所以要将所有 $0$ 加 $1$,然后看看变换后的数列和是否为 $0$,如果是再加一个 $1$ 即可。 #pragma GCC optimize("O3") #include<bits/stdc++.h> using namespace std; #define endl
阅读全文
摘要:这题难度评得是不是太低了 qwq,它在 CF 上的过题人数甚至不到两千。 分析 我们记读入的数组为 w[]。 我的思路是从左到右枚举位置 \(i\),然后找 \(i\) 最左边的点 \(x\) 使得对于 \(j\in [x, i-1]\) 有 \(w[i] \leq w[i]\),类似地找到 \(i
阅读全文
摘要:传送门: https://www.luogu.com.cn/problem/UVA11992 蓝书(训练指南)的线段树例题。 分析 这题在思维上并不复杂,是线段树的常见操作。 需要注意的地方主要是标记优先级: 这里我像蓝书一样记增加标记为 \(addv\),赋值标记记为 \(setv\)。 当遇到赋
阅读全文
摘要:这两天在 cf 做了若干道双指针的题目,不过 cf 对双指针这个标签的题目分类似乎有点迷。。。很多和双指针关系感觉不是很大。 在我看来,双指针的核心在于决策单调,因为单调性的存在,可以减小解空间,从而降低时间复杂度。 这里选了一些思想比较典型的题目记录一下。 例题 1: 传送门:https://co
阅读全文
摘要:传送门:https://codeforces.com/contest/1277 A 求一下和 $n$ 相同位数时有多少个是合法的,记为 $x$,答案为 $x+9(len(n)-1)$。 我写的很丑 qwq。 #pragma GCC optimize("O3") #include<bits/stdc+
阅读全文
摘要:分析 这题核心思想是数学变换: 方便起见,我们考虑一个左开右闭的区间 \((L, R]\),一个合法的区间满足: \(\frac{sum_R - sum_L}{R-L}\geq p\%\) 化简可得: \(100sum_L -pL \geq 100sum_R -pR\) 我们记 \(v_x=sum_
阅读全文
摘要:传送门: https://vjudge.net/problem/UVALive-3905 分析 将每个点进出矩形的时间的左右区间 \([L, R]\) 处理出来,这样就可以在一维的时间轴做扫描法了。 细节&技巧: 注意到在矩形边界的点不计入贡献,因此处理出来的时间区间均为开区间,在维护贡献 \(cn
阅读全文
摘要:传送门:https://codeforces.com/contest/1549 A int main(){ int T; cin>>T; while(T--){ int x; cin>>x; cout<<2<<' '<<x-1<<endl; } return 0; } B 贪心,能直走就直走,因为是
阅读全文

浙公网安备 33010602011771号