CF R 632 div2 1333F Kate and imperfection
赛后看了半天题 才把题目看懂 英语水平极差。
意思:定义一个集合S的权值为max{gcd(a,b)};且\(a\neq b\)
这个集合可以从1~n中选出一些数字 求出当集合大小为k时的最小价值。
无法二分 考虑构造。
考虑一种简单的情况 1~n的中gcd(a,b)最大为多少 可以发现我们只需要枚举i 看一下i/i的最小质因子的最大值即可。
所以是从质因子分解的层面考虑比较简单。
可以发现 当两个数字质因子集合有包含关系的时候 加入小的那个数到集合S之中一定不会比大的数加入集合S结果更差。(显然。
所以由上面的引理 可以直接构造一个集合大小为P的S集合 其中P为1~n的质数个数 且S集合为所有1~n的质数集合。
考虑接下来加入哪个数字更优 尽可能让gcd小 所以需要加入的数字为4 此时和其他数字比大小的是含有4的倍数的数字和其他的单个质因子。
不难发现此时6中含有的3是最小的。
可以发现此时考虑加入一个数字的时候 对答案的最大贡献 可以由引理得出 在加入i时 将i质因子分解 然后凡是i的质因数分解的子集此时一定已经加入了。
那么最大的贡献 就是子集最大的 即i/i的最小质因子。
那么我们得到了每个数的贡献排一下序即可。
但是 我在思考的时候 并没有从每个数字的贡献的角度入手而是一直在考虑加入哪个数字然后比大小。
一个方法:正难则反 这里加入数字比大小的时候每次都要考虑更新一些点的值 不妨反过来想加入一个点的时候的值是否有规律。
值得一提的是 所谓规律也是能找到的 譬如加入了i 那么凡是含有i的倍数的数字都要将值更新一下。
然后顺着这个思路 可以暴力更新 这样复杂度是nln的但是每次需要找最大值里面写一个线段树就可以达到nlog^2.
但是 根据我们的引理 就可以很简单的推出 每个数字都会被一个数字更新成最大值 可以发现这个最大值可以被找到 即i/最小质因子。
const int MAXN=500010;
int n,top;
int v[MAXN],p[MAXN],w[MAXN];
inline void prepare()
{
w[1]=1;
rep(2,n,i)
{
if(!v[i])p[++top]=v[i]=i,w[i]=1;
rep(1,top,j)
{
if(n/i<p[j])break;
int ww=i*p[j];
v[ww]=p[j];
w[ww]=i;
if(p[j]==v[i])break;
}
}
}
int main()
{
freopen("1.in","r",stdin);
get(n);prepare();
sort(w+1,w+1+n);
rep(2,n,i)printf("%d ",w[i]);
return 0;
}
CF R 632 div2 1333F Kate and imperfection的更多相关文章
- CF R 632 div2 1333D Challenges in school №41
LINK:Challenges in school №41 考试的时候读错题了+代码UB了 所以wa到自闭 然后放弃治疗. 赛后发现UB的原因是 scanf读int类型的时候 宏定义里面是lld的类型 ...
- CF R 639 div2 F Review 贪心 二分
LINK:Résumé Review 这道题让我眼前一亮没想到二分这么绝. 由于每个\(b_i\)都是局部的 全局只有一个限制\(\sum_{i=1}^nb_i=k\) 所以dp没有什么用 我们只需要 ...
- CF R 635 div2 1337D Xenia and Colorful Gems 贪心 二分 双指针
LINK:Xenia and Colorful Gems 考试的时候没想到一个很好的做法. 赛后也有一个想法. 可以考虑答案的样子 x,y,z 可以发现 一共有 x<=y<=z,z< ...
- E CF R 85 div2 1334E. Divisor Paths
LINK:Divisor Paths 考试的时候已经想到结论了 可是质因数分解想法错了 导致自闭. 一张图 一共有D个节点 每个节点x会向y连边 当且仅当y|x,x/y是一个质数. 设f(d)表示d的 ...
- CF R 630 div2 1332 F Independent Set
LINK:Independent Set 题目定义了 独立集和边诱导子图.然而和题目没有多少关系. 给出一棵树 求\(\sum_{E'\neq \varnothing,E'\subset E}w(G( ...
- CF Round #580(div2)题解报告
CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...
- CF round #622 (div2)
CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言 ...
- CF-1333F Kate and imperfection
F. Kate and imperfection 假设一个一个的往集合里面放元素,显然在放某个元素之前,我们不想让它的倍数已经在集合里面.因为在这之前,我们不如先把这个数放进去,再把它的倍数放进去更优 ...
- CF R 635 div1 C Kaavi and Magic Spell 区间dp
LINK:Kaavi and Magic Spell 一打CF才知道自己原来这么菜 这题完全没想到. 可以发现 如果dp f[i][j]表示前i个字符匹配T的前j个字符的方案数 此时转移变得异常麻烦 ...
随机推荐
- 洛谷 P1220 关路灯 区间DP
题目描述 某一村庄在一条路线上安装了 n 盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了 ...
- Django的Cookie Session和自定义分页
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- [网鼎杯 2020 青龙组]AreUSerialz
题目分析 <?php include("flag.php"); highlight_file(FILE); class FileHandler { protected $op ...
- web 安全之页面解析的流程学习
0x00 任务内容: 理解域名解析的整个过程 理解 web 页面请求的整个流程,绘制流程图(nginx 处理的 11 个过程) 学习 http 协议中的字段及含义 学习 http 请求方法以及返回状态 ...
- 数据可视化之分析篇(三)Power BI总计行错误,这个技巧一定要掌握
https://zhuanlan.zhihu.com/p/102567707 前一段介绍过一个客户购买频次统计的案例: Power BI 数据分析应用:客户购买频次分布. 我并没有在文章中显示总计行 ...
- 数据可视化之DAX篇(二十七)半累加度量,在Power BI 中轻松处理
https://zhuanlan.zhihu.com/p/96823622 开始半累加的计算之前,我们先看看什么是累加.半累加以及不可累加数据. 在含有大量行的数据表中,各种数据处理语言,包括DAX ...
- 01-MySQL支持的数据类型
1.数值类型 整数类型 MySQL 支持的整数类型有 SQL 标准中的整数类型 INTEGER,SMALLINT,TINYINT.MEDIUMINT和BIGINT.其整数类型的特性如下表所示: 在上述 ...
- spring security简单登录的认证
一.思路 1.先导入相关配置(使用spring security校验之后,登录拦截的配置) 2.创建一个 WebSecurityConfig 继承 WebSecurityConfigurerAdapt ...
- 并发编程之synchronized(二)------jvm对synchronized的优化
一.锁的粗化 看如下代码 public class Test { StringBuffer stb = new StringBuffer(); public void test1(){ //jvm的优 ...
- 从LocalDateTime序列化探讨全局一致性序列化
日拱一卒无有尽,功不唐捐终入海. 楔子 前两周发了三篇SpringSecurity和一篇征文,这周打算写点简单有用易上手的文章,换换脑子,休息一下. 今天要写的是这篇:从LocalDateTime序列 ...