摘要: 思路 因为数据较大,使用字符串读入。 考虑使用贪心。 先统计出当前数码之和。然后从低位往高位枚举,看一下把当前位改了之后是否小于等于 \(s\)。如果小于的话,则统计出把当前位往后所有位都改为 0,\(k\) 为多少,求出的 \(k\) 就是最优解。 说明一下为什么要从低位往高位枚举,这样如果成功改 阅读全文
posted @ 2024-01-15 22:20 Xu_dh 阅读(26) 评论(0) 推荐(0)
摘要: 怎么前三题都是思维题啊。 思路 总共有三个操作,先不看翻转操作。 如果你右移 \(x\) 位之后,左移 \(x\) 位,那么就相当于没有操作。这个应该是很好理解的。 我们根据上面的结论,能得出以下代码。 if(op==">"){ cin>>x; f+=x; } else if(op=="<"){ c 阅读全文
posted @ 2024-01-15 22:20 Xu_dh 阅读(31) 评论(0) 推荐(0)
摘要: 迄今为止我认为写的最详细的一篇。 考虑二分。 思路 我们把两盏灯分别命名为 \(A\) 和 \(B\)。 如何走回家? 走回家有四种走法。 最开始在 \(A\) 所照的区域内,家也在 \(A\) 所照的区域内,这样就可以直接走到家。 最开始在 \(A\) 所照的区域内,家在 \(B\) 所照的区域内 阅读全文
posted @ 2023-12-09 22:55 Xu_dh 阅读(13) 评论(0) 推荐(0)
摘要: 考察了小学奥数知识,不会的请先去学习一下相遇与追及。 思路 两个人相遇的点一定是有周期性的,我们可以先算出一个周期会走多远,而这个距离是两人速度的最小公倍数。 接着需分情况讨论。 如果两人是同向,则为追及,需用距离除以一人的速度减去距离除以另一人的速度。需要取绝对值。 如果两人是反向,则为相遇,需用 阅读全文
posted @ 2023-11-24 22:44 Xu_dh 阅读(24) 评论(0) 推荐(0)
摘要: 思路 我写的好像是动规的做法。 设 \(f_{i,j}\) 表示第 \(i\) 步 \(j\) 个点是否可以走到,值要么为 \(1\),要么为 \(0\)。最多走 \(n\) 步,因为总共只有 \(n\) 个点,每一步都肯定会多延伸出一个点,要不然就重复计算。 不难得出转移公式: \(f_{i+1, 阅读全文
posted @ 2023-11-24 22:44 Xu_dh 阅读(20) 评论(0) 推荐(0)
摘要: 简单模拟题。 思路 枚举每一个地毯,因为后面的会覆盖前面的,所以从正序枚举。如果要求的点的坐标在当前地毯上,则将答案赋值为当前地毯编号。 最后输出答案。 那如果这个点没有地毯呢?答案初始设为 \(-1\),这样没有地毯覆盖的话,答案不会改变,这样输出答案就会是 \(-1\)。 注意: 记得赋初始值。 阅读全文
posted @ 2023-11-24 22:43 Xu_dh 阅读(16) 评论(0) 推荐(0)
摘要: 思路 设 \(dp_{i,j}\) 表示第 \(i\) 行 \(j\) 列卒走到这里有多少种方式。 卒是可以向右和下走,所以到这个点只能从左或上来,不难得出转移公式:\(dp_{i,j} = dp_{i-1,j}+dp_{i,j-1}\)。 如果马在这个点上或者说马能到这个点上,那么卒不能到这个点, 阅读全文
posted @ 2023-11-24 22:43 Xu_dh 阅读(39) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2023-11-24 22:42 Xu_dh 阅读(0) 评论(0) 推荐(0)
摘要: 前置知识 最短路。 思路 这就是一道很简单的最短路板子,太良心了,用堆优化的 Dijkstra 就能过。相信大家都会这个,我就不介绍了。 AC CODE #include<bits/stdc++.h> using namespace std; int dis[100005],n,m,s,t,vis[ 阅读全文
posted @ 2023-11-19 09:58 Xu_dh 阅读(26) 评论(0) 推荐(0)
摘要: 本题考查基本语法。 思路 用 while 来枚举每一组数据,用 if 判断是否合法。 在判断时需要使用逻辑运算符 &&,它的意思是左右两个要求如果同时成立,则会返回 true,否则返回 false。 \(a \ge x\),\(b \ge y\),\(a + b \ge z\)。 这三个条件都要同时 阅读全文
posted @ 2023-11-19 09:58 Xu_dh 阅读(18) 评论(0) 推荐(0)