[NOI2019]序列】的更多相关文章

原题传送门 同步赛上我一开始想了个看似正确却漏洞百出的贪心:按\(a_i+b_i\)的和从大向小贪心 随便想想发现是假的,然后就写了个28pts的暴力dp 杜神后半程说这题就是个贪心,但我没时间写了 (实际是没想明白) 我们来说这道题的正解: 我们先珂以满足和最大,再满足并集大小大于等于\(l\).所以我们先将\(a\)序列和\(b\)序列排序,取出两个序列的前\(k\)大 如果并集大小大于等于\(l\)就直接统计答案 否则我们要凑满\(l\)个都包含的,在凑的过程中动态更新答案 我们在两个序列…
题意: 有两个长度为n的序列,要求从每个序列中选k个,并且满足至少有l个位置都被选,问总和最大是多少. \(1\leq l\leq k\leq n\leq 2*10^5\). 首先,记录当前考虑到的位置i,第一个选的数量a, 第二个选的数量b,都被选的数量c,可以做到\(O(n^4)\), 卡常后能过\(n\leq 150\),有40分. 考虑正解:首先,看到这个范围,可以认为正解一定是贪心. 先看下\(n\leq 2000\),这个是网络流的范围.我们可以先建出费用流,然后再变为模拟费用流,即…
LINK:序列 考虑前20分 容易想到爆搜. 考虑dp 容易设\(f_{i,j,k,l}\)表示前i个位置 选了j对 且此时A选择了k个 B选择了l个的最大值.期望得分28. code //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<ctime> #include<cctype> #include<queue> #include<deq…
洛谷题面传送门 好几天没写题解了,写篇题解意思一下(大雾 考虑反悔贪心,首先我们考虑取出 \(a,b\) 序列中最大的 \(k\) 个数,但这样并不一定满足交集 \(\ge L\) 的限制,因此我们需要调整,我们假设 \(L-\) \(a,b\) 序列中最大的 \(k\) 个数的交集为 \(L'\),如果 \(L'\le 0\) 那不用调整直接输出即可.否则我们考虑每次调整部分 \(a_i,b_i\) 的取值使得 \(a,b\) 的交集加 \(1\),不难发现每次调整可能有以下可能: 选择两个下…
LOJ3158 , Luogu5470 从 \(a_1\dots a_n\) , \(b_1\dots b_n\) 中各选出 \(K\) 个数 , 且至少 \(L\) 组下标在两个数组中都被选择 , 使选出的数总和最大 多组数据 , \(T ≤ 10 , 1 ≤∑n ≤ 10^6 , 1 ≤ L ≤ K ≤ n ≤ 2 × 10^5 , 1 ≤ a_i , b_i ≤ 10^9\) 考场上写的是 \(O(n^4)\) 的 \(DP\) , 设 \(dp[i][j][k][l]\) 为到第 \(i…
题目 可以直接贪心,但是用模拟费用流推的话会更轻松. 首先有一个显然的建图方式: \(S\)到\(0\)流量为\(k\),费用为\(0\). \(0\)到\(a_i\)流量为\(1\),费用为\(-a_i\). \(a_i\)到\(b_i\)流量为\(1\),费用为\(0\). \(b_i\)到\(T\)流量为\(1\),费用为\(-b_i\). \(a_i\)到\(c\)流量为\(1\),费用为\(0\). \(c\)到\(d\)流量为\(k-l\),费用为\(0\). \(d\)到\(b_i…
退役II次后做题记录 感觉没啥好更的,咕. atcoder1219 历史研究 回滚莫队. [六省联考2017]组合数问题 我是傻逼 按照组合意义等价于\(nk\)个物品,选的物品\(\mod k\) 余\(r\)的方案数,直接矩乘优化. [六省联考2017]相逢是问候 \(c^x\mod p=c^{x\mod \varphi(p)+\varphi(p)}\mod p(x>p)\) \(\varphi\)跳\(\log\)次就会跳到\(1\). 用欧拉定理时取膜这么写:int Mod(ll a,i…
1. CF730I Olympiad in Programming and Sports 大意: $n$个人, 第$i$个人编程能力$a_i$, 运动能力$b_i$, 要选出$p$个组成编程队, $s$个组成运动队, 每个队的收益为队员能力和, 求最大收益. 费用流做法很显然, 开两个点$X,Y$表示编程和运动, 源点向每个人连边, 代价为$0$, 每个人向$X$连边, 代价为编程能力, 每个人向$Y$连边, 代价为运动能力, $X$向汇点连边容量为$p$, $Y$向汇点连边, 容量为$s$,…
题目传送门:LOJ #3158. 题意简述: 给定两个长度为 \(n\) 的正整数序列 \(a,b\),要求在每个序列中都选中 \(K\) 个下标,并且要保证同时在两个序列中都被选中的下标至少有 \(L\) 个,使得选中的下标对应的数的总和最大. 题解: 题目相当于要求在两个序列中选出 \(K\) 对数,不妨一对一对地选. 有个结论是说,上一步的最优决策一定不会再反悔,就是已经选的不会再撤销. 然后做完了,用堆维护一些东西,精细实现就好了. 下面是代码,复杂度 \(\mathcal{O}\lef…
题目大意:给你一个长度为$n$的序列$a_i$,还有一个数字$m$,有$q$次询问 每次给出一个$d$和$k$,问你对所有的$a_i$都在模$m$意义下加了$d$后,第$k$小的后缀的起点编号. 数据范围:$n≤100000,d≤a_i<m≤10^9,q≤5\times 10^5$ 这一题我想的时候被最后一步卡主了(其实如果到那个时候估计也时间不够了) 我们不难找出一个单次询问$O(n)$的方法,我们每次暴力更新$a_i$,然后对原序列搞一棵后缀树出来,在上面暴力查询第$k$小即可. 如果没有加…