2019.10.22 校内CSP%你赛
我太难了
先说好没有代码T1
题目大意:
给定一些形如|ax+b|的式子,求最小的x使得它们的和最小。
算法一:
大家知道零点分段法 对于这n个式子我们有n+1个取值范围 使得展开这n个式子得到的新式子不同
而对于每一个形成的式子,因为我们有这个x的取值范围,所以我们可以在O(1)的复杂度求出它的最小值。
而我们从最左边的取值范围开始,对于相邻的两个取值范围我们可以用O(1)的复杂度转移,即我们可以用O(n)遍历所有可能形成的n个式子,每个算一下答案即可。
需要注意的是,对于所有a[i]=0,我们需要去除这些点,将对应的b[i]加成一个常量,随后加在ans上。
还需要注意的是,当a<0时,我们通过把a和b分别取绝对值得到a>0的等价的式子,这样便于处理。
算法二:
我们容易知道,|ax+b|是一个下凸函数,而这些|ax+b|的和因为是一个新的|ax+b|,所以依然是一个下凸函数。
所以我们考虑三分或者爬山法,得到x的取值即可。
T2
题目大意:
给定一个有向图y,求构造一个有向图使得每条边起点编号比终点小,且1号点到n号点恰好有y条路径。子任务满足n越小越分多。
我们先构造一个64个节点的完全图,这样从1-63号节点到64号节点的贡献依次是2^63,2^62,2^61……2^0.
也就是说我们先连1-64,此时1-64有一种方案,再往图里加入63号点,补全完全图,此时加了一种方案,再加62号点,加了2种方案……以此类推。
我们再新建一个0号节点作为起点,将y快速幂分解,从向分解出的2^k1,2^k2……的k1,k2……对应的完全图中的节点连边即可。
T3
题目大意:
给定一段序列,旋转其中一段连续子序列后可以得到一个新的序列,设新的序列中有x个数满足a[i]=i(a[i]是序列中是的数),求不同旋转方案下最大的x。
我们旋转一段子序列时有一个旋转中心,对于每个旋转中心可以对应的旋转子段,设其为[l,r],则对于有效的旋转子段,必有a[l]==r&&a[r]==l,否则它没有[l+1,r-1]更优;
所以我们把所有有效的旋转子段按照旋转中心为关键字排序,同时再给每个旋转中心开一个vector存储其所有有效的子段,其中这些子段按照从短到长排序;
对于一个子段,将其分为三部分:
(1)[1,l);
(2)[l,r];
(3)(r,n]。
(1)(3)两部分因为旋转前后不变,所以我们分别利用前缀、后缀数组存储其答案贡献,查询复杂度为O(1);
(2)部分中,因为每个子段距离上一个更新的子段只多出了一个新的答案贡献(a[l]==r&&a[r]==l),所以该子段(2)部分的答案为2*k,其中k是其在该旋转中心的vector内的位置。
所以只需要扫描所有的[l,r]即可在O(1)的复杂度内检查出其答案。总复杂度O(n)。
T4
题目大意:
给定一段序列,设好的子序列是一段连续子序列满足其中所有数互质,求该序列中好的子序列的个数。
我们知道互质的本质是不存在相同的质因子,所以我们先用欧拉筛筛出所有质数;
而我们从头扫描所有[l,r],用book数组记录该序列中出现过的质因子,每次加入一个新的数就判断它是否含有这些质因子,若有,则该序列不好。分解一个数的质因子需要的复杂度是O(logn)。
总复杂度O(nlogn)。
我。果然。越来越能口hu了。
2019.10.22 校内CSP%你赛的更多相关文章
- 2019/10/22 test T1 题解
题目描述 给定n个a[i],b[i],求min(x$\in$R){$\sum\limits_{i=1}^{n}$|a[i]*x+b[i]|} 输入格式 第 1行 1个整数 n第 2行 n个整数,第 i ...
- 2019.10.22 csp-s模拟测试82 反思总结
重来重来,刚刚就当什么都没发生 今天的题属实有些迷惑,各种意义上…总之都很有难度吧.不满归不满,这套题的确不是什么没有意义的题目. 为了考验自己的学习能力记忆力,决定不写题解,扔个代码完事了 其实是懒 ...
- 2019.10.22 用TCP实现服务端并发接收
client import socket client = socket.socket() client.connect( ('127.0.0.1',8888) ) while 1: msg = in ...
- TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器
TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器 任务清单 给自己取一个酷酷的id,并选择1-2个喜欢的方向.(只是初步选择,后期可更改) 改下群名片.例如yo ...
- CSP模拟赛游记
时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...
- 背水一战 Windows 10 (22) - 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合
[源码下载] 背水一战 Windows 10 (22) - 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合 作 ...
- Daily Scrum 10.22
(写于10.22周四0晨) 昨天任务还未完成的继续完成任务. 每个人都查看自己的TFS,修改已经完成的任务状态,改为已关闭-已完成. 由于android studio运行过于慢,我们统一采取eclip ...
- 第10次Scrum会议(10/22)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华小组照片 二.开会信息 时间:2017/10/22 17:20~17:33,总计13min.地点:东北师范 ...
- 2019.10 搜索引擎最新排名,Elasticsearch遥遥领先
大数据的搜索平台已经成为了众多企业的标配,Elasticsearch.Splunk(商业上市公司).Solr(Apache开源项目)是其中最为优秀和流行的选择.在2019.10 最新搜索引擎排名中,E ...
随机推荐
- jupyter的控件交互
jupyter实现控件交互 jupyter notebook 是一个交互式IDE 直接上jupyter notebook界面截图
- 用函数来编写实现strlen()函数功能
strlen( )函数: 测试字符串实际长度的函数,它的返回值是字符串中字符的个数(不包含’\0’) //strlen( )函数:测试字符串实际长度的函数,它的返回值是字符串中字符的个数(不包含’\0 ...
- QAbstractItemModel使用样例与解析(Model::index使用了createIndex,它会被销毁吗?被销毁了,因为栈对象出了括号就会被销毁)
参考:qt源码 qstandarditemmodel_p.h qstandarditemmodel.h qstandarditemmodel.cpp qabstractitemmodel.h qabs ...
- 9-MySQL DBA笔记-测试实践
第9章 测试实践 在第8章中介绍了测试所需要的理论知识,本章将为读者讲述实际的测试过程.实际测试一般包括硬件测试.MySQL基准测试及应用服务压力测试,下面将分别讲述这三方面的内容.此外,测试工具的选 ...
- nginx触屏版跟PC的代理设置
server { listen ; set $mobile_rewrite do_not_perform; if ( $http_user_agent ~* "(android|bb\d+| ...
- oracle导入时IMP-00010: 不是有效的导出文件, 头部验证失败
头部验证失败是由于版本号不同所致,经试验可以通过如下方法进行修改:用notepad++工具打开dmp文件,可以看到头部信息 --TEXPORT:V11.01.00,即为源数据库的版本号,将其修改为目的 ...
- Javascript的学习清单
Javascript的学习清单 Javascript学习资源 程序员必读书籍 深入理解JavaScript系列 es6教程 jQuery中文文档 vue官网 zeptojs中文版 常用的插件与UI组件 ...
- JSP 内置对象的说明
1 page:指的是当前的JSP页面本身,它是java.lang.object类的对象 2 config对象:它是ServletConfig类的一个实例 3 exception对象:它是java.la ...
- mORMot学习笔记2-2种方式查询数据
本例使用SqlServer 第一种方式结果放入Memo控件,,需要引用SynCommons, SynDB, SynOleDb; procedure TForm1.Button1Click(Sender ...
- C# List集合去除重复数据
实例如下: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; ...