惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
WordPress大学
WordPress大学
C
Check Point Blog
GbyAI
GbyAI
U
Unit 42
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Hugging Face - Blog
Hugging Face - Blog
Vercel News
Vercel News
博客园 - 【当耐特】
美团技术团队
小众软件
小众软件
S
SegmentFault 最新的问题
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Cloudflare Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog

博客园 - magicdlf

[HIMCM暑期班]第4课: 扑克牌问题 [HIMCM暑期班]第3课:一个博弈问题 [HIMCM暑期班]第2课:建模 [HIMCM暑期班]第1课:概述 [C#]ASP.NET MVC 3 在线学习资料 [HIMCM]Consortium可以免费下载了! [C#]在Windows Service中使用ThreadPool [HIMCM]MathType小练习 [C#]DataGridView中使用数据绑定Enum类型 SRM 518 解题报告 SRM 522 解题报告 [原创]简易版Socket聊天室 附源码 再谈C#扫雷 C#实现扫雷出炉 如何通过P/Invoke返回Struct和String Array 计算文件的散列值 zz .NET抽象工厂模式 from cnblogs 清空VSTFS cache 如何在VSTFS中设置email notification
SRM 521 解题报告
magicdlf · 2011-11-08 · via 博客园 - magicdlf

听说这一轮是TCO的备用题,所以潘达教主悲剧地不能参加了。戴牛展现出了惊人的实力,勇夺第八,rating暴涨。250pt是一个很水的贪心题,500pt是一个有一些trick的暴力题,但是由于一些细节的原因,比赛的时候没有做出来。

以下是详细的报告:

250pt: 给定一个string,包括一串未匹配的括号对(),问要将这些括号匹配至少需要添加多少个括号。括号匹配类问题里最简单的一个问题了。假设在某个位置出现了一个右括号’)’而之前没有足够的左括号,则需要在它之前添加一个左括号,位置不限。假设以上条件满足,在串结束的时候发现左括号数比右括号数多(包括添加的左括号),则需要补全相应的右括号。算法就是基于以上两条原则进行贪心,用leftright变量来统计当前的左括号数和右括号数,视情况添加括号即可。

500pt: 在平面上有最多40个点,现在用一个大小范围在nlownhigh之间正方形去选取这些点,每一次选取可以不同的点集。问一共有多少个这样的点集。点坐标的范围-10e810e8nlownhigh的范围110e8。这一题比较阴险的一个地方在于,如果要枚举所有的点集,那么一共会有2^40个不同的点集,而函数的返回值也暗示了这一点,而事实上可能的组合大约只有(2n)^2种,这一点可以由一维的情况推广而知。假设在一维的轴上有若干个点,用一个矩形去选取不同的点的集合,我们发现,能选取到的只有连续的点集,推广到二维上亦是如此。将所有的点离散化后,我们得到一个N*N的矩阵,我们枚举这些矩阵,使其满足边长大于等于nlow并且小于等于nhigh、且可以构成正方形。将这样的正方形能选取的点集存入一个set,最后只需要统计set内元素的个数即可了。算法的复杂度O(40^4)

1000pt: 1*2的砖块堆一个烟囱,每一层用四块砖,每块砖必须放在两块砖的结合处之上。问要砌一个n (n<10e18)的烟囱,有多少种不同的砌砖顺序。枚举每一层可能出现的砖块排列情况作为dp的状态,手算推出状态间转移的方程,得到一个O(N)的算法。然后用矩阵乘的性质,对这个算法进行加速,类似于快速幂乘法的原理。具体的推算过程请见官方editorial:

http://apps.topcoder.com/wiki/display/tc/SRM+521