题目传送门(内部题108) 输入格式 输入文件第一行为两个正整数$n,M$. 接下来两行,第一行为$n$个正整数$a_1\sim a_n$,其中$a_i$表示编号为$i$的男生的实力值:第二行为$n$个正整数$b_1\sim b_n$,其中$b_i$表示编号为$i$的女生的实力值. 输出格式 输出一个整数,为最少的小组数量.输入数据保证至少存在一种满足分组规则的分组方式. 样例 样例输入: 3 506 7 26 3 5 样例输出: 数据范围与提示 对于$10\%$的数据,满足$n\leqslan…
题目描述 分析 首先,容易发现一个小组内的最优配对方式(能得到最大综合实力的方式) 一定是实力值最大的男生和最大的女生配对,次大的和次大的配对,以此类推. 但是每次新插入一个值时,需要用 \(nlogn\) 的时间复杂度去维护这个最大实力值 如果暴力去扩展时间效率是无法接受的 然后我们会发现答案具有单调性,可以枚举一个左区间,然后二分查找右区间 但是当遇到每一组的人数很小的情况时,二分会被卡成 \(n^2 logn\) 因此我们需要先用倍增处理出二分的区间 在处理出的区间里进行二分查找 这样,当…
题目传送门(内部题152) 输入格式 第一行两个整数$N,Q$. 接下来一行$N$个整数,第$i$个为$a_i$. 接下来的$N-1$行,每行两个整数$u,v$.表示$u,v$之间有一条边. 接下来的$Q$行,每行两个整数$u,v$.表示一组询问. 输出格式 对于每个询问,输出一行一个整数表示答案. 样例 样例输入: 5 24 3 2 5 31 21 33 43 52 53 4 样例输出: 137 数据范围与提示 每个测试点10$分,共$10$个测试点: 对于所有的数据,有:$1\leqslan…
题目背景 $Maxtir$喜欢序列的中间值. 题目传送门(内部题127) 输入格式 第一行输入两个正整数$n,m$,其中$m$是操作和询问次数. 接下来两行每行输入$n$个非负整数,每一行分别表示两个序列$a,b$的初始值. 接下来$m$行,每行输入一个操作或询问,以“$1\ x\ y\ z$或$2\ l_1\ r_1\ l_2\ r_2$”的形式给出. 对于$1$操作,保证$x\in [0,1]$,若$x=0$,将$a_y$修改成$z$,否则将$b_y$修改成$z$,保证修改前后序列$a,b$…
2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别讨论: k=1:根据人类直觉,不难想到一种贪心策略:从前往后扫,若扫到的数能加入当前这段就加入,否则再开一段新的. 于是你就WA了... 题目要求字典序最小,而我们的策略会让当前段尽可能长,所以划分点会靠后.例如:1 2 3 4 5,可以分为{1},{2,3,4},{5}三段,而我们的策略得到的答案…
csp-s模拟测试96 $T1$一眼慢速乘,$T2$稍证一手最优性尝试用神奇数据结构优化,无果,弃.$T3$暴力+信仰. 100 03:16:38 95 03:16:56 35 03:17:10 230 03:17:10 比较意外. 和天皇$Skyh$同分祭. 起码可以伪证退役前我努力过. A. 求和 等差数列慢速乘,$/2$特判. B. 分组配对 二分右端点倍增优化. 考场把两个性能各异的暴力拼在一起,设一个参数,拿了$95$. C. 城市游戏 调不出来,咕. 神様(かみさま)ありがとう 运命…
按照smily的说法这一场的大众分暴力分是不是265啊QwQ那我可真是个大垃圾 总算还是回归了常态. T3文件名写错,把“city.in”写成“city,in” 还好,只丢了20分. T2乱打$O(n^2 \ log^2n)$数据水拿了$95pts$ T1慢速乘yy一下就没了. 然后其实很垃圾.特别困,状态很差,脑子也动不起来了. 于是一直在打.打完暴力打对拍,偶尔停下来想一想. T2想到了正解但是不会证复杂度所以没有打(这个倍增思路被我在考场上YY出来很多次但是一直觉得它的复杂度不对所以没打过…
以后不能再借没改完题的理由不写题解了…… A.求和 求$\sum \sum i+j-1$ 柿子就不化了吧……这年头pj都不考这么弱智的公式化简了…… 坑点1:模数不定,可能没有2的逆元,那么只要先把乘数里的2去掉就好了. 坑点2:1e18炸long long $\rightarrow$ 慢速乘即可 #include<cstdio> #include<iostream> #include<cstring> #include<vector> using name…
[2018冬令营模拟测试赛(二十一)]Problem A: Decalcomania 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试题描述" 数据规模及约定 见"试题描述" 题解 最优解一定是在一段连续的包含 \(0\) 号点的区间中选择最小的 \(k\) 个印花,其中一边需要折返(即代价为两倍距离). 所以我们先将一边的距离 \(\times 2\),然后…
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使用的话,切记计算内存,一点都不能开大. T1:Divisors 直接根号筛,拿map也能过. 遍历map直接begin和end啊... #include<cstdio> ]; struct hash_map{ ],l[],to[],w[]; ])];; for(int i=fir[r];i;i=l…