随笔分类 - 题解
摘要:Pro 定义一次转化 u⇒vu\Rightarrow vu⇒v 代价为 lcm(u,v)\operatorname{lcm}(u,v)lcm(u,v),求 u⇒vu\Rightarrow vu⇒v 的最小代价。 Sol 如果 u=vu=vu=v,不需要转化,代价 000。 其次可以 u⇒1⇒vu\
阅读全文
摘要:Pro 构造序列 aaa,长度为 nnn,并使得序列有 kkk 组倍数关系。 要求:ai≤2n−1a_i\le 2n-1ai≤2n−1。 Sol 我们最好让这个序列有序,因为这样只有后面的数对前面的数有倍数关系。 首先我们发现,n∼2n−1n\sim 2n-1n∼2n−1 中间是没有倍数关系的。
阅读全文
摘要:闲话 本篇题解来自赛场第二切,比@dead_X 慢了整整 0.6s0.6s0.6s。 Pro 给定 sss,求一个最短字符串 ttt,使得 sss 是 ttt 的最长 border。 Sol 前置知识:KMP,记号 ∣a∣|a|∣a∣ 表示字符串 aaa 的长度。 首先我们可以输出这个字符串,因为
阅读全文
摘要:居然让我一遍过了...... Pro 查询区间内最长合法序列。 Sol 定义 w1uw1_uw1u 表示不可匹配左括号,w2uw2_uw2u 同理。 那么考虑如何从 w1lw1_lw1l 和 w1rw1_rw1r 推出 w1uw1_uw1u。 最容易想到的是 w1u=w1l+w1rw1_u
阅读全文
摘要:Sol Subtask 1 有一种简单的方式:将所有的海报先贴上去,然后在看每个位置是哪一张海报。 这个时间复杂度是 O(T(r−l)log(r−l))O(T(r-l)\log (r-l))O(T(r−l)log(r−l)) 的,肯定会 TLE。 Subtask 2 因为 nnn 很小,所以将其离
阅读全文
摘要:Pro 完成两种操作: 区间加 111。 区间有多少个倍数为 333 的倍数。 Sol Subtask 1 考虑每次循环 [l,r][l,r][l,r],时间复杂度 O(nq)O(nq)O(nq)。 Subtask 2 因为 O(qn)O(q\sqrt n)O(qn) 可过,所以考虑分块。 Upd
阅读全文
摘要:简述题意 每个怪兽有一个实力 rir_iri,每个怪兽只可以欺负实力严格小于自己的怪兽,被成功欺负的怪兽出局。当未退出游戏的怪兽都已发起过攻击时,游戏结束。规定一种方案使得未退出游戏的怪兽数量尽可能少。 算法分析 显然,对于 a<ri,b<ria<r_i,b<r_ia<ri,b<ri,a,ba
阅读全文
摘要:Pro 求在至多修改 kkk 次的情况下,maxi=2n∣ai−ai−1∣\max\limits^n_{i=2}|a_i-a_{i-1}|i=2maxn∣ai−ai−1∣ 的最小值。 Sol 1. 二分答案 这题的二分挺明显的:因为如果能使 ansansans 成立,ans+1ans+1an
阅读全文
摘要:闲话 考试碰到了这题,然后切了,然后代码厌氧,然后报了个 555 分回家!!! 讲题时把我推上去了,回来后点击蓝色按钮发现能写题解? 前置 分块? 分块在上,愿祂永远不会让你 WA,永远不会让你 TLE,永远不会让你 MLE,永远不会让你 RE。 Pro 给定一个序列,对于每一个 kkk,可以将 [
阅读全文
摘要:简述题意 对于第 iii 个月,你可以选择执行:m←m−ci,ans←ans+1m\gets m-c_i,ans\gets ans+1m←m−ci,ans←ans+1。每个月后,你必须执行:m←m+x(x>0)m\gets m+x(x>0)m←m+x(x>0)。 问 ansansans 的最大值。
阅读全文
摘要:subtask 1 一个超市,最大速度就是 ai2\dfrac{a_i}{2}2ai。当然,如果 2∤ai2∤a_i2∤ai,输出 -1 即可。 subtask 2 枚举速度,输出符合要求的最大答案即可。时间复杂度 O(A×n)O(\text A\times n)O(A×n),其中 A\tex
阅读全文
摘要:由于要保证进步最小,所以我们要保证没有进步。或者说,进步为负数。 于是考虑对 aaa 进行升序排序便可。 #include<bits/stdc++.h> using namespace std; bool cmp(int x,int y) { return x<y; } int a[10000008
阅读全文
摘要:或许更好的阅读体验/题目传送门 前置芝士 二项式定理:(a+b)n=∑i=0nCni×ai×bn−i(a+b)^n=\sum \limits_{i=0}^{n}C^i_n\times a^i\times b^{n-i}(a+b)n=i=0∑nCni×ai×bn−i 快速幂 Meaning 有 n
阅读全文
摘要:看见数据 n,d≤1000n,d\le 1000n,d≤1000,可以想到直接暴力。 每次判断 i,ji,ji,j 两条信息是否符合要求便可。注意查重。这里我使用的是 pair<string,string>,因为我比较懒(逃~) 注意题目中给的是:0<tj−ti≤d0<t_j-t_i\le d0<t
阅读全文
摘要:我见过的最水的S组题目 这题 n≤8n\le8n≤8,而一共就 10510^5105 种密码,考虑暴力枚举。 先枚举可能的密码: for(int a=0;a<=9;a++) for(int b=0;b<=9;b++) for(int c=0;c<=9;c++) for(int d=0;d<=9;d+
阅读全文
摘要:思路:贪心 我们知道,肯定字典序越靠前的字符串,肯定越靠前的字母越小。 考虑每一次插入数组 ccc 的字符,是在 a,ba,ba,b 中没选过的最小的字母。 那么得先给 a,ba,ba,b 数组排序。 这里可以先将 a,ba,ba,b 转化成数字数组,更加方便以后的操作。记得输出 ccc 数组时要用
阅读全文
摘要:B3770 Numeric Hack 题解 hack 代码: #include <bits/stdc++.h> using namespace std; int main() { int n, k, d; cin >> n >> k >> d; ++n; if (n % k == d) { cout
阅读全文

浙公网安备 33010602011771号