ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

(联考)noip90

2021-11-06 06:31:06  阅读:194  来源: 互联网

标签:gets sum noip90 nan 2i 100pts 排序 联考


T1

sbdp

设 \(dp_{i,j,k,l}\) 表示矩形左上角为 \((i,j)\) ,右下角坐标为 \((k,l)\) ,往外扩展转移即可,暴力做是 \(O(n^{4})\) 的。

发现只有 \(i+j+k+l=n+m+2\) 才有用,于是可以去掉第四维,\(O(n^3)\) 。

T2

阅读完它写的垃圾程序后就能发现,排序就是把后边所有比当前数小的都挪到当前数的前面,如果是nan则不去后边找。

模拟上述过程即可,将所有非nan的数预先排序就可以做到 \(O(n\log{n})\) 。

T3

44pts:傻瓜背包。

44+8pts:判掉 \(n=m\) 的。

100pts:

如果 \(n\) 为奇数,则加一个0到这个序列中,方便处理。

将 \(a_{i}\) 排序,求个差分数组 \(d_{i}=a_{2i}-a_{2i-1}\) 。

再求个 \(sum=\sum_{i}d_{i}\) ,此时的 \(sum\) 表示的便是离0差了多少。

将 \(d_{i}\) 从大到小排序,如果交换一个 \(d_{i}\) 对应的 \(a_{2i},a_{2i-1}\) ,那么 \(d_{i}\gets -d_{i}\) ,于是 \(sum\gets sum-2d_{i}\)(后边的 \(d_{i}\) 是没交换之前的 \(d_{i}\) )。

所以扫一遍排完序的 \(d_{i}\) ,能减就减,可以证明这么做一定将 \(sum\) 消到0。

证明?推小马的blog

T4

48pts:按照题目说的用类似线段树的形式来写。

100pts:

不会,待填,咕。

标签:gets,sum,noip90,nan,2i,100pts,排序,联考
来源: https://www.cnblogs.com/-OMA-/p/15515898.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有