NOI2015 Day2
NOI2015 Day2
荷马史诗
题目描述:给出\(n\)个数,要求\(n\)个\(k\)进制数来对应这\(k\)个数(允许有前导零),\(n\)个\(k\)进制数互不为前缀,求\(n\)个数乘以对应的\(k\)进制数长度总和最小值,并求最小值下\(k\)进制数的最长的最小值。
solution:
\(k\)叉哈夫曼树,当\(n \not \equiv 1 (mod (k-1))\)时,补零时条件成立,然后类比二叉的做法即可。
时间复杂度:\(O(nlogn)\)
品酒大会
题目描述:给出一个字符串,第\(i\)个字符对应的值为\(a[i]\), 对于\(i \in [0, n)\),求最长公共前缀大于等于\(i\)的字串对个数,并求这些字符串对开头对应值相乘最大值。
solution:
后缀数组求出\(Height[i]\),根据\(sa\)对字符串重标号,\(Height[i]\)就是第\(i\)个字符串与第\(i-1\)个字符串的最长公共前缀,枚举最长公共前缀\(len\),对于\(Height[i]=len\)的\(i\),用并查集链接\(i\)与\(i-1\),并更新答案与最大值。注意:字符对应值可能是负值,所以还要记最小值。
时间复杂度:\(O(n)\)或\(O(nlogn)\)
小园丁与老司机
题目描述:给出平面上的\(n\)个点,点的纵坐标均大于\(0\),从原点出发,每次从左、右、上、左上\(45^{\circ}\)、右上\(45^{\circ}\)
选择一个方向(该方向必须有一个点),走到该方向最近的点,然后继续选择方向走,如此类推,直到不能走为止。求最多能走多少个点(不计原点),并输出一条可行路径。找出所有最长路径上的非左右方向的边,求覆盖所有边的最少路径数(路径只能包含非左右方向的边)
solution:
预处理出每个点在非左右方向离该点最近的点,然后以纵坐标为第一关键字,横坐标为第二关键字排序。以纵坐标为阶段做dp,同层的也做dp。这里只讲同层如何dp。
枚举从哪一个点向上走(\(i\)),假设之前在下一层往上走到\(j\),如果\(x_j<x_i\),那么与\(i\)同层的,且在\(i\)左边的都可以到达(从\(j\)走到同层的最左边,然后走到\(j+1\),再走到\(i\)),如果\(x_i<x_j\),那么与\(i\)同层的,且在\(i\)右边的都可以到达(从\(j\)走到同层的最右边,然后走到\(j-1\),再走到\(i\)),那么正向做一次,反向做一次就可以知道最大值了,同时记住方案。
根据方案将非左右方向的边找出,并构出新图,因为有可能多条最长路径同时经过某些边,因此每条边的下界为\(1\),做一次最小流即可。
NOI2015 Day2的更多相关文章
- noi2015的回忆和教训
前几天偶然打开了bzoj的rank list,突然发现——我竟然掉出了第一版!!! 自从我5月还是6月刷进第一版之后,我曾经天真的以为大概半年之内我还能保留在第一版内吧. 结果仅仅短短的4个月,我就已 ...
- NOI2015考试小结
这次NOI2015有幸获得金牌考进了国家集训队,意味着我的OI退役时间既省选之后有延迟了好几个月,又有了新的目标吧. 先说一下考试之外的感受吧,学军宿舍很牛X,接待NOIers而不提供插座,唯一可以用 ...
- 2015.7.17( NOI2015 day1 )
今天早起做了NOI2015网络同步赛.... 最近NOI是越来越向NOIP靠拢了....但是我还是不会做..... 第一题:程序自动分析 先离散化一下..然后最多就剩20w个数 , 不等于就存起来.. ...
- NOI2015滚粗记
我的第一次也是最后一次NOI 好像写的晚了许多……可能一谈到退役总会有些伤感,并不愿去面对…… 一路走来已有5年,虽然我总在说“其实我好好学的时间只有半年”,但那也不过是给自己是蒟蒻找的借口吧...一 ...
- 【从零开始学BPM,Day2】默认表单开发
[课程主题]主题:5天,一起从零开始学习BPM[课程形式]1.为期5天的短任务学习2.每天观看一个视频,视频学习时间自由安排. [第二天课程] Step 1 软件下载:H3 BPM10.0全开放免费下 ...
- BZOJ 4199: [Noi2015]品酒大会 [后缀数组 带权并查集]
4199: [Noi2015]品酒大会 UOJ:http://uoj.ac/problem/131 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- NOIp2016 Day1&Day2 解题报告
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
- [BZOJ4200][Noi2015]小园丁与老司机
4200: [Noi2015]小园丁与老司机 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 106 Solved ...
随机推荐
- jquery easyUI DataGrid 初始化的时候就显示可排序的字段
在使用easy ui的列表中,想要标记可以排序的字段,使用户一看页面就知道哪些是可以点击排序的. 给可排序的字段添加 图标在列名后面.不可排序的字段还和原来一样. 步骤: 你需要一个图标 , 你需要给 ...
- SQL Server 查看对象之间的引用关系
前期准备: use studioA; go create table T(X int,Y int); insert into T(X,Y) values(1,1),(2,2); ...
- Oracle EBS-SQL (PO-9):检查期间采购订单执行情况.sql
--采购订单执行情况查询(七天内接收情况)select pha.segment1 采购订单, msib.segment1 物料编码, pla.qu ...
- 960 grid 分析
960 网格系统的构造如下:页面总宽度 960px12 栏布局, 每栏 60px每栏两边保留 10px 的外边距, 相当于 20px 的槽内容区域总宽度是 940px 960 布局无疑是非常好的网格系 ...
- Buffer Cache(缓冲区缓存)篇:keep缓冲区池(保留池)
Buffer Cache可以有三个池 默认缓冲区池 keep缓冲区池 recycling缓冲区池 --保留池和回收池可以独立于sga中的其他缓存分配内存.创建表的时候可以在storage子句中使用b ...
- MSSQL 获取指定日期所在星期的第一天和最后一天日期 获取指定日期坐在月的第一天和最后一天
ufn_GetWeekFirstAndEndDay 获取指定日期所在星期的第一天和最后一天日期 ALTER FUNCTION [dbo].[ufn_GetWeekFirstAndEndDay]( ...
- 练习3.20 a 将中缀表达式转换为后缀表达式
//将中缀表达式转换为后缀表达式 int main() { ; ]={,,,,,,,}; char tmp; PtrToStack s; s = CreateStack( MaxSize ); ) { ...
- Centos6.5升级gcc for qt5.3.1
1.升级GCC CentOS6.5内置的GCC版本为4.4,而Qt5.2.1则需要4.8.2的支持(支持C++ 11特性),因此,必须先升级GCC wget http://ftp.tsukuba.wi ...
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
Set类型的使用: <hibernate-mapping package="cn.model"> <class name="Department&quo ...
- magento 获取attribute的所有option
$attribute = Mage::getSingleton('eav/config')->getAttribute('catalog_product', 'color');if ($attr ...