随笔分类 -  OI/ACM题解

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

点击右上角即可分享
微信分享提示