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

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

博客园 - 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