noip2016十连测round2
A: Divisors
题意:给定 m 个不同的正整数 a 1 ,a 2 ,...,a m ,请对 0 到 m 每一个 k 计算,在区间 [1,n] 里有多少正整数
是 a 中恰好 k 个数的约数。 n,ai<=10^9,m<=200
做法:每个数的约数个数为sqrt(n)级别的,所以一共有msqrt(ai)个,对于计算答案,用哈希表判重计算即可。
B:Market
题意:在比特镇一共有 n 家商店,编号依次为 1 到 n。每家商店只会卖一种物品,其中第 i 家商店的物品
单价为 c i ,价值为 v i ,且该商店开张的时间为 t i 。
Byteasar 计划进行 m 次购物,其中第 i 次购物的时间为 T i ,预算为 M i 。每次购物的时候,Byteasar
会在每家商店购买最多一件物品,当然他也可以选择什么都不买。如果购物的时间早于商店开张的时间,
那么显然他无法在这家商店进行购物。
现在 Byteasar 想知道,对于每个计划,他最多能购入总价值多少的物品。请写一个程序,帮助
Byteasar 合理安排购物计划。 n<=300,vi<=300,ci<=10^9;
注意:每次所花金额不得超过预算,预算也不一定要花完,同时预算不能留给其它计划使用。
做法:将物品按时间从小到大排序,询问也按时间排序,然后我们发现单价很大,而价值很小,所以我们设f[i]表示装下价值为i的物品时最小的价钱,那么对于每个询问,就是找到一个最大的i,使得f[i]<=mi,这样不具有二分性,所以我们维护f的后缀和g,这样g数组具有了可二分性,二分即可。
C:Dash Speed
题意:比特山是比特镇的飙车圣地。在比特山上一共有 n 个广场,编号依次为 1 到 n,这些广场之间通过
n − 1 条双向车道直接或间接地连接在一起,形成了一棵树的结构。
因为每条车道的修建时间以及建筑材料都不尽相同,所以可以用两个数字 l i ,r i 量化地表示一条车道
的承受区间,只有当汽车以不小于 l i 且不大于 r i 的速度经过这条车道时,才不会对路面造成伤害。
Byteasar 最近新买了一辆跑车,他想在比特山飙一次车。Byteasar 计划选择两个不同的点 S,T,然
后在它们树上的最短路径上行驶,且不对上面任意一条车道造成伤害。
Byteasar 不喜欢改变速度,所以他会告诉你他的车速。为了挑选出最合适的车速x,Byteasar 一共会
向你询问 m 次。请帮助他找到一条合法的道路,使得路径上经过的车道数尽可能多。
n<=70000,m<=70000;
测试点编号 n m 约定
1 = 5 = 5 无
2 = 20 = 20 无
3 = 50000 = 50000 l i = 1,且 u i = i,v i = i + 1
4 = 70000 = 70000 l i = 1,且 u i = i,v i = i + 1
5 = 50000 = 50000 u i = i,v i = i + 1
6 = 70000 = 70000 u i = i,v i = i + 1
7 = 50000 = 50000 l i = 1
8 = 70000 = 70000 l i = 1
9 = 50000 = 50000 无
10 = 70000 = 70000 无
做法:对于题目中的一条链,我们把每个每条边拆成两个事件,一个是在时间li处把ui染黑,在时间ri+1处把ui染白,然后每个询问就是在时间x处询问最大全黑子段,我们把所有事件按时间排序,然后线段树维护即可,只需记录最大全黑子段,左端最大,右端最大,就可以进行线段树合并了。
对于题目中li=1的情况且是一棵树的情况,我们把边按ri从大到小排序,询问也从大到小排序,这样就只有加边,询问森林的最长链,每个连通块维护最长链,合并的时候的最长链一定来自于那4个点,分6种情况讨论即可,用并查集维护。
对于满分做法;如果学习前面那种做法,把每条边拆成两个事件,这样就相当于求支持加边和删边的动态树的最长链或者是并查集的删边,但是由于顺序不固定所以不支持,没事,我们沿分治的思想,在以速度为区间的线段树上,我们用每条边去覆盖线段树上logn个区间,那么每个询问就是把它到线段树的根节点的路径上所有的边存在时的最长链,所以我们dfs这棵线段树,到一个节点就加边,并查集维护,到了叶子节点就询问,然后回溯的时候撤销操作,由于每次撤销都是最近的一次操作,这样并查集是资瓷的,然后就通过分治把问题转化成了只有加边,成功地解决了这个问题。
noip2016十连测round2的更多相关文章
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- noip2016十连测round3
A:平均数 题意:有一天,小 A 得到了一个长度为 n 的序列. 他把这个序列的所有连续子序列都列了出来,并对每一个子序列都求了其平均值,然后他把这些平均值写在纸上,并对它们进行排序,最后他报出了第 ...
- noip2016十连测round1
A:String Master 题目:所谓最长公共子串,比如串 A:"abcde",串 B:"jcdkl",则它们的最长公共子串为串 "cd" ...
- NOIp2016 十连测 round1
Claris大爷出的一套模拟题.问别人要到了一份题,加深了自己NOIp要滚粗的感觉. Matser zzDP题,我只能说我第一遍写的时候还写崩了QAQ. //master //by Cydiater ...
- Problem C: [noip2016十连测第五场]travel (构造+贪心)
题面 https://www.lydsy.com/JudgeOnline/upload/201610/statements(1).pdf 题解 好神仙的贪心-- 首先无解的情况很容易判断,就是\(l= ...
- bzoj 5216 [Lydsy2017省队十连测]公路建设 线段树维护 最小生成树
[Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 93 Solved: 53[Submit][Status][ ...
- bzoj 5216: [Lydsy2017省队十连测]公路建设
5216: [Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 66 Solved: 37[Submit][St ...
- 提高十连测day3
提高十连测day3 A 我们可以枚举两个 $ 1 $ 之间的相隔距离,然后计算形如 $ 00100100 \cdots $ 的串在原串中最⻓⼦序列匹配即可,复杂度 $ O(n^2) $ .寻找 $ S ...
- ZROI2019 提高十连测
额 掰手指头一数 特么又是第三年十连测了= = 2017一场没打 那时候好像一场比赛也就100人左右 2018前几场还都好好补了 后来开始放飞自我了 这时候一场有150人还多了 2019想让今年的No ...
随机推荐
- HTML5-02 元素
概述 HTML 文档主要由元素组成,且主要分为两大部分:头部 和 主体.如图: 头部 概述 <head> 元素包含了所有的头部标签.<head> 元素中通常包含脚本(scrip ...
- 1-学习前言&C语言概述
[C语言]01-学习前言&C语言概述 参考自 http://www.cnblogs.com/mjios/archive/2013/03/12/2956508.html#label2 C语言是我 ...
- rails程序文件名命名规范
1 一般文件名是用小写单词加下划线分割,但类的名字用骆驼法.例如 sessions_controller.rb中定义SessionsController. 2 helpers内的文件为辅助类,定义了许 ...
- Zookeeper 原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...
- #数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie
郑昀 创建于2014/10/30 最后更新于2014/10/31 一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售 ...
- ORACLE 移动数据文件 控制文件 重做日志文件
ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理1
首先给上项目的整体框架图:,这里我没有使用BLL,因为感觉太烦了就没有去使用. 那么接下来我们首先先去Model层中添加Model. 管理员类: using System; using System. ...
- [经验]Textbox 做日志记录,
private void Log(string msg) { txtLog.MaxLength = ; txtLog.AppendText(msg); } 起因:在Winform中用Textbox显示 ...
- docker-9 supervisord 参考docker从入门到实战
参考docker从入门到实战 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机 ...
- linux mint17.2 安装fcitx输入法
mint17刚出的时候,曾经在虚拟机上体验过. 现在决定好好学习linux,再加上实在是太萌mint,就在虚拟机上安装了mint17.2 开始配置fcitx输入法: 添加ppa: sudo add-a ...