XDUOJ题解合集(待填坑)
1000 A + B Problem : 没啥好说的 。
1001 又是苹果(模拟): 用数组记录一下索引,交换行列时交换索引即可。
1002 小W的塔防(dp): 记 fi,jf_{i,j}fi,j 表示某时间前有 iii 个蓝塔,jjj 个绿塔的答案最大值,滚动时间 O(n3)O(n^3)O(n3) dp。
1003 亮亮的加法(模拟): 进制转换模板。
std::reverse( _begin, _end )
可以翻转数组
1005 xry111的音频传输(数学): 答案是 ⌈log2n⌉\lceil \log_2{n}\rceil⌈log2n⌉,使用 long long 以防挂精度。
1006 亮亮破密码(期望 + 按位): 考虑每一位对答案贡献,按位异或记录前缀和,按位与、按位或记录前缀极长连续 1
, 0
。求期望直接除 n2n^2n2 即可。使用 double 会被卡精度,要用 unsiged long long 统计答案。
1008 Josephus环(模拟): 用链表 O(n2)O(n^2)O(n2) 模拟删除过程即可。
1010 最优规则式(枚举): 将式子分成 b−ab-ab−a 与 d−cd-cd−c 两端,分别计算前后缀的答案,枚举分隔点即可。
1012 重复序列(Border): 用 KMP 算法求出反串的 Border,根据循环串的性质,Border 大于串长一半时,其补集即为串的最小循环节,枚举前缀求即可。
1015 无聊的Light Light(贪心): 在保证长度最大时最大化高位。
1016 A + B : 没啥好说的 。
1017 Coderforce上的rating(模拟): 双关键字排序模板。
1019 自然数的秘密(二分答案 + 数论): n!n!n! 的后缀 0
个数为等于 1−n1-n1−n 的因子 555 的个数,二分答案即可。
1020 ACMer去刷题吧(dp): 设 fif_ifi 表示某时刻做对了 iii 题的概率,滚动时间,答案是 1−∑i=0k−1fi1-\sum\limits_{i=0}^{k-1}f_i1−i=0∑k−1fi。注意排除 -0.0000
的情况。
1021 A Simple Math Problem(数学): 答案是 n4×a2cot(πn)\frac{n}{4} \times a^2\cot(\frac{\pi}{n})4n×a2cot(nπ) 。
1022 A Simple Math Problem 2(前缀和): 枚举每个数字 iii 对 f(x)f(x)f(x) 的贡献,发现差分后只有 ⌊ni⌋\lfloor\frac{n}{i}\rfloor⌊in⌋ 个位置有贡献,所以复杂度为 O(nlnn+q)O(n\ln n + q)O(nlnn+q)。 若从 n1/kn^{1/k}n1/k 开始枚举,复杂度为 O(qn1/k+kn)O(qn^{1/k}+kn)O(qn1/k+kn),当 kkk 取 333 时在本题有最小。
1023 IP查询(二分): 直接把端点用 std::vector
存下,然后二分,注意本题卡读入。
1024 简单逆序对(前缀和): 把逆序对的树状数组换成前缀和即可。
1025 梦想庄园(拓扑排序 + dp): 物品依赖构成 DAG,直接拓扑排序转移 dp 即可。
1026 修理OJ(模拟): 模拟累乘,快速幂都不需要。
1027 & 1366 Feibonaqi(矩阵快速幂): 矩阵快速幂模板。
1028 数字工程(dp + 数论): 设 fif_ifi 表示将 iii 变成 111 的最小步数,fif_ifi 可以类似埃拉托斯特尼筛 O(nloglogn)O(n\log\log n)O(nloglogn) 求出,估计也可以用复杂度更低的方法求出。
1029 数一的逆袭(模拟): 直接 O(nT)O(nT)O(nT) 用 double
模拟乘法求高位,当然用类似快速幂的倍增可以轻松做到 O(Tlogn)O(T\log n)O(Tlogn)。
1030 三数和(枚举): 枚举较小的两个数,判断是否有较大数满足条件。
1031 找规律(找规律 + 前缀和): 规律是 fi,j=i+jgcd(i+j,j)f_{i,j}=\frac{i+j}{\gcd(i+j,j)}fi,j=gcd(i+j,j)i+j ,然后用二维前缀和维护一下和即可。
1032 找规律II(Lucas 定理): 卢卡斯定理模板。
1033 入围校赛(模拟): 模拟题意。
1034 猴子吃桃(枚举): 枚举第几个判断即可。
1035 数独(模拟): 模拟题意。
1036 分配宝藏(Bitset + dp): 经典 01 背包,可以用 std::bitset
优化转移,复杂度 O(Tn2vω)O(\frac{Tn^2v}{\omega})O(ωTn2v)。
1037 倍流畅序列(枚举): 倍流畅序列即翻转后按位异或全 1
序列,枚举对称中心即可。用 manacher 优化实现可以到 O(n)O(n)O(n)。
1038 裁玻璃(状压dp): 发现问题可以转化为最大独立集,暴力状压复杂度为 O(Tm4n)O(Tm4^n)O(Tm4n) 不可过,考虑枚举补集的子集,复杂度为 O(Tm3n)O(Tm3^n)O(Tm3n),发现可行状态数类似斐波那契,复杂度改良为 O(Tm(3+52)n)≈O(Tm2.61n)O(Tm(\frac{3+\sqrt5}{2})^n) \approx O(Tm2.61^n)O(Tm(23+5)n)≈O(Tm2.61n),若枚举子集用高维前缀和优化,则可以做到 O(Tnm2n)O(Tnm2^n)O(Tnm2n)。
1040 简单的游戏(模拟): 求出 A+B+CA+B+CA+B+C 然后求出 A,B,CA,B,CA,B,C 特判即可。
1041 Franky的游戏O(数论): n,mn,mn,m 均为偶数则答案为 222,否则为 111。
1042 另一个游戏(贪心): 排序顺序操作即可。
1043 Boooooom(期望dp): dp 求出每天上不课概率 ppp,答案为 1p−1\frac{1}{p}-1p1−1,复杂度 O(Tnk)O(Tnk)O(Tnk),可用多项式科技优化到 O(Tnlogk)O(Tn\log k)O(Tnlogk)。
1048 二分图模板测试(二分图匹配): 模板题。
1055 如此遍历(模拟): 递推出下一位置即可。
1056 寻找BOSS(卡塔兰数): 卡塔兰数模板题。
1057 卡尔的技能(Lucas 定理): 答案是 (n+m−1m−1)mod10007{{n+m-1}\choose{m-1}}\bmod 10007(m−1n+m−1)mod10007 。
1058 找子图(贪心): 考虑每个点的贡献,只加入正贡献的点即可。
1061 A+B of lw(数论): 模拟即可。
1094 2的幂次表示(分治): 将输出二进制分治,用递归模拟实现即可。
1097 焊板子的xry111(递推): fi=fi−1+fi−2+fi−3f_i=f_{i-1}+f_{i-2}+f_{i-3}fi=fi−1+fi−2+fi−3,用 unsigned long long 即可。
1098 突击数论前的xry111(数论): 筛欧拉函数板子。
1099 A simple problem(2-points): 2-points 模板,枚举右端点,单调转移左端点即可。
1259 A + B problem(模拟): 输出 n−1n-1n−1 即可。
1301 数字计数(搜索): 直接 dfs 是 O(n0.302)O(n^{0.302})O(n0.302) 的。
1308 &1448 求和(枚举): 枚举 A+BA + BA+B 存下,枚举 C+DC + DC+D 统计答案,
- 1308 卡空间(二分): 把 A+BA+BA+B 用
std::vector
存下,二分统计 C+DC+DC+D 答案。 - 1448 卡时间(HashTable): 用哈希表存查,需要手写哈希表,
std::unordered_map
会被卡空间。
1403 or2?Scum!(容斥): 基础容斥,没啥好说的。
1423 qko 的栈(栈): 套路题,用栈维护最小值即可。
1451 魔法废物再利用炸弹1(分类讨论 + 前缀和):
- 如果数组长度为 1,则无解。
- 如果数组长度大于 1,且所有数字异或和为 0,则从任意位置分为两段即可。
- 其它情况 : 若s所有数字异或和为 x,则我们可以将数组划分成三段
x^x^x
,直接找到一个前缀异或为 x 后的 0 即可。
1452 假算法自动机(快速幂): 答案是 q910n\frac{q}{9}10^n9q10n ,直接模拟即可。
1455 在奇妙的数学王国中遨游 :
- (分块打表): 把答案前缀和以 10610^6106 为大小分块。
- (枚举): 发现这种数字仅由
0123
组成,直接枚举复杂度是 O(n0.602)O(n^{0.602})O(n0.602)。
1456 程序设计竞赛(dp): 二维 01
背包模板。
1457 Creeper(模拟): 与经典题 独木桥一样的套路,直接无视碰撞计算每只 Creeper 离开时间即可。
1458 为什么你这么熟练啊(数论): 答案是 ⌊nk⌋\lfloor\frac{n}{k}\rfloor⌊kn⌋
1461 欢欢爱数数(前缀和): 经典题,记录每个前缀模 kkk 的值即可。
1467 魔法废物再利用炸弹1(贪心): MtOI2019 原题,由于 a⊕b≤a+ba \oplus b \le a + ba⊕b≤a+b ,直接把所有数加起来即可。
1473 PRPRPR(整除分块): 要求 ∑i=1n⌊ni⌋×(nmodi)\sum\limits_{i=1}^{n}\lfloor\frac{n}{i}\rfloor\times(n \bmod i)i=1∑n⌊in⌋×(nmodi) 。按 ⌊ni⌋\lfloor\frac{n}{i}\rfloor⌊in⌋ 整除分块,(nmodi)(n \bmod i)(nmodi) 是等差数列,用求和公式即可。注意中间值不要爆 long long
。
1476 祖玛 1(枚举): 枚举每个连续段作为插入点统计最大值。也许有类似 Manacher 算法的 O(n)O(n)O(n) 解法。
1478 美丽的建筑(树状数组 + dp): 直接正反两次最长上升子序列即可。
1481 运送货物(tarjan + 拓扑排序): 缩点模板,注意输出方式比较坑。
1482 简单的回文串计数(manacher + 差分): 先用 manacher 求出所有极长回文子串,然后发现每个极长回文子串对答案的而贡献是一个一次函数,所以用二阶差分记录答案。注意本题要求没有行末空格。
1483 音乐游戏(dp + 容斥): 先 O(n2)O(n^2)O(n2) dp 出不一定覆盖整个集合的方案数,然后用组合数容斥掉不满足的方案。
1484 双倍快乐(dfs + 枚举): 每个点改变状态的贡献是价值乘以到根的深度,枚举改变的边计算最大贡献即可。
1485 失败的在线考试(模拟): 按题意模拟,注意使用 scanf
。
1486 奇怪的梦境(模拟): 按位处理,减去进位的负贡献。
1487 没人比我更懂COVID-19(线性基): 很容易发现字母运算是异或,所以把每个字符串当成二进制数字,构造异或线性基,方案数为 2∣S∣2^{|S|}2∣S∣,∣S∣|S|∣S∣ 表示线性基的秩,由于不能取空集,如果 ∣S∣=n|S|=n∣S∣=n ,答案减一。
1500 你必将如闪电般归来(二分答案): 直接二分答案每次 O(n)O(n)O(n) 计算援军数量。
1501 世界第四(枚举): 按顺序枚举 mex
然后贡献是两端跨过小于 mex 组成的离散极长区间的区间的数量。
1502 老奶奶参加宴会(最短路): 先排序优化建图,然后跑一次单源最短路。
1504 奥尔加的编码(期望 + 分块打表): 由于线性性与对称性,大小为 nnn 的线性基,增加秩的概率为 2n−12n\frac{2^n-1}{2^n}2n2n−1,期望 2n2n−1\frac{2^n}{2^n-1}2n−12n 步,分块打表维护前缀和即可。
1505 签到题(模拟): 按题意模拟。
1506 去音乐会(博弈论 + bfs): 反向拓扑排序然后每个点 bfs 找 0
,找不到则自己为 0
,flukehn 大爷有更优秀的 O(m)O(m)O(m) 做法。
1517 qko的树据结构(弱化版)(换根dp): 先 dp 出子树到自己的距离和,然后从根递推出所有节点的答案。
1544 一个非常难的题(数论): 设 p(x)p(x)p(x) 为 xxx 质因子的种类数,则答案为 ∑i=1nkp(i)\sum \limits_{i=1}^nk^{p(i)}i=1∑nkp(i),随便筛筛是 O(nloglogn)O(n\log\log n)O(nloglogn) 的。
1551 崩坏的栈(找规律):
XDUOJ题解合集(待填坑)相关推荐
- 2017国庆 雅礼集训 题解合集
D1 D1 T1:Clique: 我做的题太少啦,这都没看出来.首先,这个式子是 c[i]−c[j]>=dis(i,j) c[i]-c[j] >= dis(i,j),即在数轴上这样的圆,如 ...
- [PTA]2021天梯赛-总决赛 L1题解合集
文章目录 前言说明 题解 人与神 (5 分) 两小时学完C语言 (5 分) 强迫症 (10 分) 降价提醒机器人 (10 分) 大笨钟的心情 (15 分) 吉老师的回归 (15 分) 天梯赛的善良 ( ...
- 在 Windows 上测试 Redis Cluster的集群填坑笔记
redis 集群实现的原理请参考http://www.tuicool.com/articles/VvIZje 集群环境至少需要3个节点.推荐使用6个节点配置,即3个主节点,3个从节点. 新建6个文件夹 ...
- 【剑指offer】【leetcode精选题集】【Java】剑指offer题解合集 更新中
Leetcode题集 [剑指offer][JAVA]面试题第[03]题[数组中的重复数字][HashSet] [剑指offer][JAVA]面试题第[04]题[二维数中的查找][数组] [剑指offe ...
- 【leetcode】【题解合集】
DFS/回溯 以整数拆分为例: 剪枝条件 当和为n时,保存结果 当和大于n时,进行剪枝 在DFS中,同一排的结点是在同一个函数调用中进行处理,如上图中的第一排,1.2.3.4.这4个结点是在第一次函数 ...
- QLU寒假训练赛题解合集
为了节省版面: 1.所有寒假训练赛题解都集中在这一篇里 2.所有题解代码都可以直接点击题目链接查看 0115 A题:签到,输出n+1 B题:签到,从左端点向右找一段和小于0的区间,再从右往左找 C题: ...
- ZZULIOJ1001~1100题解合集
前言: 从本篇文章开始,将开始对ZZULIOJ上前200道基础常见的算法题进行讲解并发表下个人看法,本人能力有限,就当给大家提供一下解题的思路.这些题都是一些C语言中的常见题型,大家千万不要直接复制粘 ...
- 【算法笔记】重刷PAT 题解合集
乙级1001 #include<iostream> using namespace std; int main() {int n;cin >> n;int cnt = 0;wh ...
- 第三届“传智杯”全国大学生IT技能大赛(初赛B组)题解合集
文章目录 A - 课程报名 B - 期末考试成绩 C - 志愿者 D - 终端 E - 运气 总结 A - 课程报名 题目描述 传智播客推出了一款课程,并进行了一次促销活动.具体来说就是,课程的初始定 ...
最新文章
- ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS
- 黑计算机学校给的处分,学校处分通告格式
- zabbix二次开发之从mysql取值在运维平台js图表展现
- spring-文件上传
- 10、Java Swing JComboBox:下拉列表组件
- 网络与IO知识扫盲(四):C10K问题、BIO的弊端与NIO的引入
- keil debug如何在watch直接修改变量值_零基础学VBA:什么是VBA?如何编写和运行VBA代码?...
- java经常会出现异常的是,“Java异常Exception”总结
- 收藏一些自己认为好的网站或博客
- java语言50到100之间素数和_用JAVA语言编写一程序,求100以内的所有素数
- java多线程多态_Java学习之多线程
- 编造机中鼠标无法应用标题问题解答
- 【重识 HTML + CSS】CSS 选择器
- basys2数码管共阳还是共阴_如何判断PLC使用接近开关是PNP还是NPN?
- SQL Server 2017 安装过程中的一点说明(有点意思)
- Zemax—波长1550nm不在所选玻璃色散公式的有效范围内
- 报错:Error in get(“GO2ONT“, envir = GO_DATA) : object ‘GO2ONT‘ not found
- make_blobs方法的使用
- 集团公司预算控制与网上费用报销系统
- 显卡超了100测试软件黑屏,win10更新后,桌面窗口管理器间歇性占用GPU3D 100%,此时系统卡顿,黑屏...