首页 > 其他分享 >【题解】CF1993【EF】

【题解】CF1993【EF】

时间:2024-11-11 13:40:38浏览次数:1  
标签:cnt 奇数 题解 EF 个数 CF1993 偶数 时间轴 2k

A

  • 注意到一种选项最多填对 \(n\) 个题
  • 所以答案是 \(\min(n,cnt_a)+\min(n,cnt_b)+\min(n,cnt_c)+\min(n,cnt_d)\)

B

  • 注意到操作只能让奇数变多,偶数变少,所以我们只能把偶数全变成奇数
  • 特判掉全是偶数的情况,容易得到答案下界:偶数个数
  • 容易想到一个 naive 贪心做法:每次都拿出奇数里面最大的和偶数里最小的来操作
  • 注意到:容易发现一种不太妙的情况:奇数里最大的比偶数里最小的还小怎么办?
  • 如果以上情况发生,那么至少要“浪费”一次操作
  • 考虑如何最大化这次“浪费”的操作的收益:拿最大的偶数和任意奇数,这样就得到了一个比所有偶数都大的奇数
  • 注意到,这样操作以后,可以保证此后的任何一次操作可以保证换掉一个偶数
  • 于是答案下界:偶数个数 +1
  • 实现:统计特判全是偶数的 coner case,统计一下偶数个数记为 \(cnt\),直接模拟过程,每次都拿出奇数里面最大的和偶数里最小的来操作,当发现奇数里最大的比偶数里最小的还小,直接输出 \(cnt+1\),如果一直模拟到所有偶数都被换掉,则输出 \(cnt\)

C

  • 抽象一下题意,如果 - 表示开灯,. 表示关灯,那么一个灯的开关区间其实是一条这样的直线
  • ----....----....----....
  • 如果把所有的灯的开关情况横向对比放到从零时刻开始的时间轴上呢?
  • .----....----....----....---
    ..----....----....----....--
    ...----....----....----....-
    ....----....----....----....
  • 以样例一为例,其实只不过是一条相同的直线平移而已
  • 如果只是一条直线在平移,不难发现,本质不同的平移种类是 \(O(k)\) 量级的,具体地,是 \(2k\) 种
  • 因为:灯的一个开关周期是 \(2k\),如果两个灯分别在 \(i\) 和 \(i+2k\) 时刻第一次开启,那么他们的开启时间本质相同
  • 现在,我们的时间轴从无限长缩短到 \(2k\),这时不难想到一个做法:对于每个灯,把它的开启时间段拍到时间轴上,具体地,做区间 +1,最后用每个值为 \(n\) 的点更新答案即可,更具体地,这容易用差分实现
  • 但这有一个问题:我们有限长度的时间轴上的每个点其实都代表了无限个时间点
  • 其实很好解决,显然答案的下届是 \(\max{(a_i)}\),所以每次更新答案只需要找最小的 \(ans\) 满足 \(ans=k*m+i\ \wedge \ ans\ge \max{(a_i)}\) 即可

D

  • 首先转化题意:长度为 \(n\) 的序列,每段长度为 \(k\),删除 \((n-1)/k\) 段,剩下的数的中位数最大是多少
  • 注意到限制的强度与中位数大小正相关,显然二分答案
  • 考虑如何 check
  • 考虑一圈,只能 dp
  • 考虑 naive 的 dp
  • \(b_i=(a_i\ge mid) ? (1) : (-1)\)
  • \(f_{i,j} \ 表示前 i 个数,删除 j 段的最大值\)
  • \(显然只要 f_{i,j} \ge 0 即可\)
  • 时空复杂度 \(O(n^2)\) 不可接受
  • 这块需要一点注意力:注意到对于一个 \(i\),合法的状态最多只有两个,为什么?
  • 首先,前 \(i\) 个数最多删除 \(i/k\) 个长度为 \(k\) 的连续段
  • 其次,前 \(i\) 个数最少删除 \(i/k-1\) 个长度为 \(k\) 的连续段,因为如果再少删一个,前 \(i\) 个数里就已经剩下超过 \(k\) 个数了,到 \(n\) 个数的时候,显然不可能删够 \((n-1)/k\) 段
  • 综上,每次记忆化搜索即可,时空复杂度 \(O(n)\)
  • 实现坑:多测+二分记得清空

标签:cnt,奇数,题解,EF,个数,CF1993,偶数,时间轴,2k
From: https://www.cnblogs.com/yeyou26/p/18539523

相关文章

  • PEF22554HTV3.1 英特尔intel 电信 IC 调帧器,线路接口单元(LIU) P-TQFP-144 在售20000PCS
    PEF22554HTV3.1是一款由英特尔(Intel)生产的电信IC调帧器,它可以与线路接口单元(LIU)一起使用。该调帧器的封装类型是P-TQFP-144。该调帧器适用于电信领域的应用,可以用于实现数据调制和解调功能,常见于传输和接收语音、数据和视频信号的通信设备中。型号:PEF22554HTV3.1类别:集成电路......
  • SHBrowseForFolder 内存泄露
    SHBrowseForFolder 函数在执行过程中会动态分配内存来存储与所选文件夹相关的信息,这些信息以 ITEMIDLIST 结构的形式返回。而 SHGetPathFromIDList 函数只是负责从这个 ITEMIDLIST 结构中提取出路径信息并填充到指定的缓冲区中,但它并不会释放 ITEMIDLIST 所占用的内存。......
  • 2024ccpc女生赛题解
    考场上写的A,C,H,L,M下来补一下剩下的E注意\(p[i]<i\)这个性质和重心关系不大,一个简单的构造,手模几个样例就能发现规律。倒着枚举:\(c[i]=0\)的是叶子,不用处理\(c[i]>0\),这个点连到父亲所在连通块的根上即可。并查集维护连通块以及连通块的根,根就是连通块中最小编号的点。#inc......
  • 题解:P11250 [GESP202409 八级] 手套配对
    题目传送门思路讲解一道非常经典的排列组合的题。首先,我们要先从nnn对手套中取走kk......
  • 支持多语言、多商店的商城,.Net7 + EF7领域驱动设计架构
    推荐一个跨平台、模块化、可扩展且超快速的开源一体化电子商务平台。01项目简介Smartstore支持桌面和移动平台、多语言、多商店、多货币的商城,并支持SEO优化,支持无限数量的产品和类别、报表、ESD、折扣、优惠券等等。还有一套全面的CRM和CMS、销售、营销、付款和物流处理......
  • MySQL问题解决记录(1):IP address 'xxx.xxx.xxx.xxx' could not be resolved: 这是在主机
    目录问题描述排查流程解决方案总结问题描述[Warning][MY-010055][Server]IPaddress'xxx.xxx.xxx.xxx'couldnotberesolved:这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。问题表现:A主机的服务在访问B主机的MySQL数据库时,产......
  • Jmeter并发线程场景下共享变量错乱问题解决
    问题复现问题描述使用IF控制器获取前一个请求的后置脚本中设置的全局变量->并发线程下通过vars.get获取变量时,第一个线程和第二个线程获取的变量值一样->导致不同基础数据的请求入参一样方法如下:vars.put("shoppingCartIdList",shoppingCartIdList.toString());/......
  • CF1974题解
    闲话1974年第一次在东南亚打自由搏击就取得了冠军······CF1974A简单计数题点击查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intt;signedmain(){ scanf("%lld",&t); while(t--){ intx,y,ans=0,num=0; scanf("%lld%lld",&x,......
  • [CodeForces] CF1978 题解
    A.AliceandBooksLink-CFLink-Luogu【题目大意】\(n\)本书,编号为\(1\)到\(n\),价值为\(a_1\)到\(a_n\)。将这些书分成两堆,你获得每堆编号最大的书的价值。求可以获得的最大的价值。【解题思路】无论怎样,编号为\(n\)的书不管在那一堆都是编号最大的,所以一定会有它......
  • Henceforth
    区间所有子区间的最大子段和之和。对\(r\)扫描线。维护\([i,r]\)的最大子段和,做个历史和。考虑以\(r\)为右端点的最大子段和能更新的答案,对于一个区间\([l,r]\),其能被更新仅当\(sum_r-\min\limits_{i=l-1}^{r-1}sum_i>ans_l\)即\(ans_l+\min\limits_{i=l-1}^{r-1}sum......