hnoi 2016 省选总结
感觉省选好难的说。。。反正我数据结构太垃圾正解想到了也打不出来打一打暴力就滚粗了!
DAY1
0+20+30
DAY2
60-20+0+60
最后170-20分,暴力分还是没有拿全!
然而这次是给了50+20+30+60+10+60=230分的暴力分的。
妈蛋数据加强gi掉了两个点
写一写那两个60分的暴力是怎么打出来的吧0.0
day2 t1 sequence
显然暴力n^3是没什么希望了只有10分,那么注意到前两个点的值很小,直接n^2预处理答案就可以了,还有前30-40分的预处理时候不可以只记录一维前缀,要处理出所有答案(一路推过去)就行了。
另外的50-60分的时候n=100000,q=10。那么我们就只要优化预处理就可以过了,这个时候空间也开不下了(这是得不到60分的主要问题,数据点比较水,n^2的暴力都可以过),推导一个公式:以某一个点位置左右拓展创建子串,在这个点的子串总数为(左端连续比其小的数字个数+1)*(右端连续比其小的数+1)n^2预处理(但是可以单调栈或者随机跳表来优化)
qn 查询,这样就有60分了。(公式仅仅成立于数字互不相等的情况)
举一个例子:
母序列:5 4 2 1 3
2的左边有2个连续的数字比大,左边0个,那么2这个位置的影响值为:(2+1)*(0+1)=3,也就是说在这5个数子的所有子序列中,有3个子序列的最小值为2。
所以预处理每一个数字左右各有多少个连续的数字比它小,它的每一个子问题都也都满足这一个性质,查询每一个位置的数字的影响值,就选取较小值(min(l,l1)+1)*(min(r.r1)+1)就可以了。
E哥的AC正解就是分治加上记忆化搜索,动态存储了每一次询问的情况(居然是在线的!%%jump写的离线解法)
当然这题别的乱搞优化也可以AC--0.0
|
5 |
4 |
2 |
1 |
3 |
L |
0 |
1 |
2 |
3 |
0 |
R |
0 |
0 |
0 |
1 |
0 |
Val(影响值) |
1 |
2 |
3 |
8 |
1 |
L=1,r=5时对于答案的贡献 |
5 |
8 |
6 |
8 |
3 |
不加优化的核心代码O(n^2+nq)
void doit1()
{
if
(n>5000) {erfen(1,n);}else{
for
(i=1;i<=n;i++)
{
x=i;
while
(a[x-1]>a[i] && x>1) x--;
l[i]=i-x+1;
x=i;
while
(a[x+1]>a[i] && x<n) x++;
r[i]=x-i+1;
}}
while
(q--)
{
scanf("%lld%lld",&x,&y);
ans=0;
for
(i=x;i<=y;i++)
{
f1=min(i-x+1,l[i]);
f2=min(y-i+1,r[i]);
ans+=a[i]*f1*f2;
}
printf("%lld\n",ans);
}
}
day2
t3 number
数位dp(或许不算DP吧)f[i]来统计以第i位结尾的子串有多少个可以被p整除。Vector数组动态地存储下第i位结尾可以被P整除的数的开头位置,查询O(n)扫描加二分查找就可以了。
复杂度O(n^2+nmlogn)
讲道理N^2不带常数是可以过的哟。(毕竟评测姬很优秀)
最后说几句(总结)
这次省选在我们机房里相较考得似乎还可以,但是运气成分很大啊。机房里很多人都去想了正解并且几乎成功实现了,大多只是失手而已。我只是老实的打打暴力。这样下去是不行的,所以接下来的学习中我应该改变方向,改变我在数据结构上的弱势,多去想正解,还有就是几何,概率,博弈方面我基本都不会,需要去学习!
再多努力一点吧0^0!
hnoi 2016 省选总结的更多相关文章
- [HNOI 2016]树
Description 题库链接 给你一棵 \(N\) 个节点根节点为 \(1\) 的有根树,结点的编号为 \(1\sim N\) :我们称这颗树为模板树.需要通过这棵模板树来构建一颗大树.构建过程如 ...
- HNOI 2016 省队集训日记
第一天 DeepDarkFantasy 从东京出发,不久便到一处驿站,写道:日暮里. ——鲁迅<藤野先生> 定义一个置换的平方为对1~n的序列做两次该置换得到的序列.已知一个置换的平方, ...
- 【BZOJ 4539】【HNOI 2016】树
http://www.lydsy.com/JudgeOnline/problem.php?id=4539 今天测试唯一会做的一道题. 按题目要求,如果暴力的把模板树往大树上仍,最后得到的大树是$O(n ...
- 数据结构(树链剖分,堆):HNOI 2016 network
2215. [HNOI2016]网络 ★★★☆ 输入文件:network_tenderRun.in 输出文件:network_tenderRun.out 简单对比时间限制:2 s 内存 ...
- HNOI(湖南省选试题)——永无乡
今天写了一道十分巧妙的数据结构题---永无乡 (看的题解......) 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 ...
- [HNOI 2012]集合选数
Description 题库链接 对于任意一个正整数 \(n\) ,求出集合 \(\{1,2,\cdots,n\}\) 的满足约束条件"若 \(x\) 在该子集中,则 \(2x\) 和 \( ...
- [HNOI 2016]最小公倍数
Description 题库链接 给定一张 \(N\) 个顶点 \(M\) 条边的无向图(顶点编号为 \(1,2,\cdots,n\) ),每条边上带有权值.所有权值都可以分解成 \(2^a\time ...
- [HNOI 2016]序列
Description 题库链接 给你一个长度为 \(n\) 的序列 \(A\) ,给出 \(q\) 组询问.每次询问 \([l,r]\) ,求该区间内所有的子序列中最小值的和. \(1\leq n, ...
- [HNOI 2016]大数
Description 题库链接 给你一个长度为 \(n\) ,可含前导零的大数,以及一个质数 \(p\) . \(m\) 次询问,每次询问你一个大数的子区间 \([l,r]\) ,求出子区间中有多少 ...
随机推荐
- 数据库订正脚本性能优化两则:去除不必要的查询和批量插入SQL
最近在做多数据库合并的脚本, 要将多个分数据库的表数据合并到一个主数据库中. 以下是我在编写数据订正脚本时犯过的错误, 记录以为鉴. 不必要的查询 请看以下语句: regiondb = db.Houy ...
- vsftp黑白名单设置及问题
问题一:ftpusers和user_list两个文件各自的用途是什么?有何关系? 首先请明确一点:ftpusers不受任何配制项的影响,它总是有效,它是一个黑名单!该文件存放的是一个禁止访问FTP的用 ...
- stc89c52开发板遥控器解码 红外线发射 内置 eeprom 存储 串口显示编码
单片机,大概三年前,就买了一本 <爱上单片机> 最后就学会,用面包板了,编程书上基本没讲. 看原理图,看时序图,看数据手册, 都没讲. 而且书上自带的代码写的很烂. 1,缩近控制不好 2, ...
- 160907、CSS 预处理器-Less
CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...
- 互联网公司前端初级Javascript面试题
互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...
- python实现文章或博客的自动摘要(附java版开源项目)
python实现文章或博客的自动摘要(附java版开源项目) 写博客的时候,都习惯给文章加入一个简介.现在可以自动完成了!TF-IDF与余弦相似性的应用(三):自动摘要 - 阮一峰的网络日志http: ...
- 13、mysql/触发器
1. mysql mysql基础 1)mysql存储结构: 数据库 -> 表 -> 数据 sql语句 2)管理数据库: 增加: create database 数据库 default ...
- Python源代码目录组织结构
- bootstrap/moban191/js/templatemo_custom.js
(function($) { "use strict"; // Cache selectors var lastId, topMenu = $(".menu-holder ...
- 《C++标准库》
函数对象 使用bind时注意,占位符有自己的命名空间std::placeholders,如果不在程序开始处using std::placeholders,那么就要写成: std::bind(std:: ...