Codeforces Round #742 (Div. 2)
赛时一直调T4结果最后方法错了QAQ
T1
L->L
R->R
U->D
D->U
输出即可
T2
我终于做出了异或题(不是)
小于a的数全部必须有,计算其异或和s
用b异或s得到剩下的数的异或和为y
如果y不等于a答案即为a+1
否则答案为a+2(两个数均在某一个高位加上一个1即可)
但是还需要特判一下y=0所以不需要加数答案直接为a的奇葩情况
T3
非常的tricky
法一:考虑数位dp
设表示前i位,当前位(不)进位、上一位(不)进位时候的方案数
直接枚举上一个数位和上上个数位的的情况转移即可。
具体实现有点麻烦
法二:在写数位dp的时候你大概会发现当前位置x其实只和x-2有关
其实就是奇数位和偶数位的方案是独立的,上述方法的麻烦之处就在于需要统计上和当前决策毫无关系的上一位,而当前位的答案又来源于前2位,然后前一位又统计过前2位。。。
总之就非常麻烦
于是我们直接把奇数和偶数位分开考虑
把123456可以拆成
135 和 246
然后统计出普通的两个数加起来等于135和246的方案数,显然(或打表)可知,答案为136和247(x+1)
最后乘起来即可。
但是还不能有0,所以答案再减2。
T4
接近正确答案然而并不是正确答案(淦)
不然这把我绝对上大分)
首先我们肯定尽量让更高为的数的和尽量的大。
因为越高位的1比十进制多得更多。
10->11 100->121
首先如果原数各位加起来和大于等于n,直接拆成10000 100000 1000 10 10 1...这样的形式,最后一个数把剩余的全部输出即可。
而如果原数位加起来和不足n,我们必须考虑拆原数。
正确的贪心方法是:从最低位开始。如果有个,个先拆一个成2个和2个和10个,判断现在是否满足条件,不行就继续拆,这样一定最优,因为我们尽可能地保留了高位数。
T5
居然是我最喜欢的数据结构
没看真是亏大发了。。。。。
线段树。
主要是答案的合并问题。可以发现左段右端如果小于等于右段左端,那么合并后会产生的更多新的答案为左段右端结束的最长不下降子序列长度乘右段左端的。
这些东西都可以维护。很经典。
其实和分治很像。。。。
T6尚不明确)
还需继续努力啊。。。。。。
本文来自博客园,作者:lei_yu,转载请注明原文链接:https://www.cnblogs.com/lytql/p/15232616.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?