11 2023 档案

摘要:提炼 显然我们可以把每一段拆开来单独考虑 我们该段有 A^len 选择 右边肯定只要不是相同 我们的集合就+1 Alen*(Alen -1) 当然要是相同也要算1 A^len 中间当然就是随便选啥都可以 void solve() { int n,m,A;cin>>n>>m>>A; vector<in 阅读全文
posted @ 2023-11-30 20:51 ycllz 阅读(6) 评论(0) 推荐(0) 编辑
摘要:提炼 首先观察范围发现是1e7 好像是dp 但是发现直接朴素的dp发现是有环的 跑了一发dijk带log 答案是肯定没过 我们可以想一下 如果我要是一个10 我肯定不会从11转移过来 因为我不如先去5 再2 如果我要是一个9 我可以从8+1转移过来 也可以从52-1转移过来 这样我们就消除了环 in 阅读全文
posted @ 2023-11-29 00:05 ycllz 阅读(3) 评论(0) 推荐(0) 编辑
摘要:tilian 我们发现可以通过交换相邻两个的方式让字典序小的任意移动 我们目标串t 要是t[0]为 c 我们肯定是找到第一个合法的c的位置 每次去找合法并且最优的 那么哪些是不合法的呢 比如我 比c小的 a,b 位置还在第一个c前肯定就不能用了 我们用26个set维护这个过程即可 void solv 阅读全文
posted @ 2023-11-21 22:49 ycllz 阅读(5) 评论(0) 推荐(0) 编辑
摘要:tilian 最开始看错了以为是 可以任意选择两人or选择一人胜出 但题意是 可以选择下一个擂主是谁 考虑dp的话 我们显然需要记录一个state以及当前擂主是谁 转移就是 dp[state][i]=max(dp[state][i],dp[state(1<<j)][j]*a[i][j]+dp[sta 阅读全文
posted @ 2023-11-18 17:09 ycllz 阅读(3) 评论(0) 推荐(0) 编辑
摘要:// woshinidiea nizhemeexinwo ^ ^ #include <bits/stdc++.h> using namespace std; const int N = 1e6+10; //const int M = 998244353; const int mod = 1e9+7; 阅读全文
posted @ 2023-11-16 04:02 ycllz 阅读(9) 评论(0) 推荐(0) 编辑
摘要:G. 背包 我们要是选一个集合出来 并且免除k个宝石的话 我们一定是选最贵的k个宝石免费 这样我们的做法就是对wi排序 然后前面的做背包 后面直接贪心选vi最大的k个 这样是一定包含了最优解的 当然你可以用二分bit 也可以直接维护另一个dp int n,tr1[200010],tr2[200010 阅读全文
posted @ 2023-11-11 13:32 ycllz 阅读(40) 评论(0) 推荐(0) 编辑
摘要:tilian 不太会这种题 发现找到一个数就能确定整个序列 然后转而发现 前缀异或和 b1 ^ b2 = a1 b1 ^ b3 = a2 ... 我们发现要是n为偶数时能直接求出b1从而确定整个序列 而为奇数时我们无法确定b1 我们思考拆位之后 如果b1该位为0 算出真实的异或后的0 1 个数 b1 阅读全文
posted @ 2023-11-10 14:12 ycllz 阅读(6) 评论(0) 推荐(0) 编辑

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