NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析 Part 3.
*已更新
胡乱分析的第三部分,程序填空(所谓的完善程序)
说到初赛,好像本周六就是了。哇好激动。。
填空题都是玄学。也许get到点了就会好做一些。。
(标红的是填在空里的答案)
T1.交朋友
(小矮个没人权系列,最后才让找)
(快排判定条件展览大会)
(让你成天用STL sort,傻逼了吧)
“我们用排序+链表的方式帮助每一个人找到在他之前进入教室的并且和他身高最相近的人,由于我们直到所有人的身高和走进教室的次序,所以可以采用离线的做法来解决这样的问题。”
给定的程序大体思路是排序后从后往前算与每个同学身高最相近的人,然后把这个同学从链表中踹出去删掉。
想必看这篇随笔的各位手头都有题面吧,具体题面我就不说了。
第一空,快排交换元素的判定条件。
各位 是 i <= j 不是 i < j 不是 j <= i 不是 j < i 更不是其他奇怪的东西,本来还想说点啥,但是。。这个的确没啥好说的。。。
第二空,数组模拟链表指针。
看到循环里有previous数组,下文中也提到了next数组,自然能想到这俩数组有啥特殊含义。
上一句是previous[rank[i]] = rank[i-1],指向上一个节点;这句照葫芦画瓢地写就是next[rank[i]] = rank[i+1],指向下一个节点。
第三空,更新变量的值
出题人您挺喜欢镜像写法啊,您之前那个更新shorter的操作已经把答案全暴露了。。
嗯,higher = height[next[i]] - height[i]。
第四空,维护answer数组。
题意说了要找一个身高差小的做朋友,因为之前已经排了序,所以只需要计算身高差即可,取身高差小的那个做朋友。看到if判定成功的执行语句是answer[i] = previous[i],那看来是上一个节点身高差比下一个节点身高差小了,自然想到shorter要比higher小才会这么干。
所以啊,shorter < higher。
第五空,听说你已经找到朋友了?把他踹出去 更新链表
出题人您能不能别在上边写一个相似的语句提示我答案了。。。。。镜像写法不好玩啊。。。
此乃链表删点的基本操作,被删去的这个节点的上一个节点把后继接在这个节点的下一个节点上,然后,被删去的这个节点的下一个节点把前驱接在这个节点的上一个节点上,就能完成删除操作,因为这个节点已经被孤立了,它不再属于链表。
出题人已经非常好心的把绿色的操作写在上头了,你只需要把蓝色的那个 previous[i] = previous[next[i]] 操作写在空里就行,对对,就是那个previous[next[i]] = previous[i]。
T2. 交通中断
话说回来, 当时我做这道题的时候还不知道spfa是什么呢
现在。。。spfa板子随手就能打出来。。
从代码整体上来看,分两步走,第一步是spfa预处理处点1到其他点的最短路径,第二步是一个裸的bfs,用来判断如果某个城市炸了之后哪个最短路改变了。
第一空,spfa算法的初值处理
我们能很显然的得出dist数组是存放最短路径的,我暂且假定您熟知spfa算法。
把所有的dist初始化为infinity,从起点到起点的最短路显然是0,这一步就写dist[1] = 0就好。
第二空,松弛操作的判定条件
熟悉spfa板子的话可以特别轻松的把这个空写出来 。翻译成人话,如果试图更新的路径比原来那个路要短,那么当前更新的比较优,所以就更新这个dist。
嗯,dis[point[j]] < dist[x] + weight[j]。
第三空,spfa对出队列的特殊处理。
其实就是我之前经常写的那个inq数组,判断哪个点是不是在队列里。每次弹出一个点并向外扩展,那么这个弹出的点应该把标记删去,也就是visit[x] = 0,因为在求最短路的过程中这个点相连的边可能会更新多次,如果打了标记不删去就会无法继续更新(后续节点有可能判定失败无法入队)
第四空与第五空,在bfs的过程中维护visit数组,给最短路没有变化的点打上标记以便于后续的维护答案。
由于这俩空关系太密切所以我放在一块讲了。。
第四空判断搜索到当前的点是不是最短路不变,可能不好想,但它应该是dist[x] + weight[j] == dist[point[j]]。
第五空记录标记数组visit,如果当前点最短路不变就打一个标记,显然,visit[point[j]] = 1。
以上,就难度看来去年的题还是不算难的,思维量大的题也就那几个。。
我去年怎么就这么菜呢.jpg
NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析 Part 3.的更多相关文章
- NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析 Part 2.
洛谷秋令营day1模拟赛原地爆炸,心态崩了.于是打算写一下初赛题放松一下. 上次胡乱分析到了选择题,这次我想说说后面的题. 问题求解 T1.有一个1x8的方格图形,黑白两色填涂每个方格,两个黑格并不能 ...
- NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析
最近在做历年的初赛题,那我捡几道比较有代表性的题说一下好了 原题可以在这里看:https://wenku.baidu.com/view/10c0eb7ce53a580217fcfede.html?fr ...
- NOIP2016提高组初赛(2)四、读程序写结果3、求最长回文子序列
#include <iostream> using namespace std; int lps(string seq, int i, int j) { int len1, len2; i ...
- NOIP2016提高组初赛(2)四、阅读程序写结果2、
#include <iostream> using namespace std; int main() { ][], b[][]; ]; string tmp; , j = , k = , ...
- NOIP2016提高组初赛(1)
一.选择题 6.后缀表达式,使用二叉树来求解,正常情况下的表达式a*(b+c)- d为中序遍历的二叉树. 即 若转换为后缀表达式(左右根)则为abc+*d- 14.代数字进去,多试几遍: 三.问题求解 ...
- NOIP2018提高组初赛准备
NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...
- noip2018提高组初赛试题
一.单项选择题(共 10 题,每题 2 分,共计 20 分: 每题有且仅有一个正确选项) \2. 下列属于解释执行的程序设计语言是( ). A. C B. C++ C. Pascal D. Pytho ...
- NOIP2018提高组初赛知识点
(传说,在神秘的初赛中,选手们经常互相爆零以示友好……) 历年真题:ti.luogu.com.cn 以下标题中打*的是我认为的重点内容 一.关于计算机 (一)计算机组成 硬件组成: 1. 控制器(C ...
- NOIP2016提高组解题报告
NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合
随机推荐
- hdu_1041(Computer Transformation) 大数加法模板+找规律
Computer Transformation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- Oil Deposits(dfs水)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241 Oil Deposits Time Limit: 2000/1000 MS (Java/Othe ...
- 解决php的sha1和java的sha1(DigestUtils.sha1Hex)产生的字符串不相等的问题
最近对接某个第三方服务,其中对接某些api需要用到他们的签名回调,根据他们传来的get参数和apiSecret进行拼接并使用sha1加密,然后返回弄成jsonp的格式返回,出于菜鸟的本能,首先是下载了 ...
- cesium编程入门(一)cesium简介
cesium编程入门 cesium是什么 Cesium 是一个跨平台.跨浏览器的展示三维地球和地图的 javascript 库. Cesium 使用WebGL 来进行硬件加速图形,使用时不需要任何插件 ...
- 设置Sql server用户对表、视图、存储过程、架构的增删改查权限
根据数据库Schema限制用户对数据库的操作行为 授予Shema dbo下对象的定义权限给某个用户(也就是说该用户可以修改架构dbo下所有表/视图/存储过程/函数的结构) use [Your DB N ...
- ArcGIS中实现指定面积蜂窝(正六边形)方法
本篇博文为博主(whgiser)原创,转载请注明. 空间聚集研究中,地理尺度大多数都是基于格网构建的,只需fishnet下就行了.也常有使用社区.交通小区(TZ)作为研究单元的.直到发现蜂窝网络做出的 ...
- The most interesting feature of iPhone X - FaceID
No doubt everybody knows that iPhone 8 & iPhone X appear on the market. A feature called FaceID ...
- Java compiler level does not match the version of the installed java project facet错误的解决
因工作的关系,Eclipse开发的Java项目拷来拷去,有时候会报一个很奇怪的错误.明明源码一模一样,为什么项目复制到另一台机器上,就会报“java compiler level does not m ...
- Javascript学习--烟花
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- pythhon_如何读写json数据
案例: 在web应用中常常用到json数据进行传输数据,本质上是字典类型数据转换成字符串,通过字符串进行网页传输,然后把接收到的字符串转换成字典类似数据 需求:实现字典转换成字符串,字符串转换成字典数 ...