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

推荐订阅源

V2EX - 技术
V2EX - 技术
P
Privacy International News Feed
Security Latest
Security Latest
H
Hacker News: Front Page
T
Tenable Blog
The Hacker News
The Hacker News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Security @ Cisco Blogs
Project Zero
Project Zero
O
OpenAI News
AI
AI
Spread Privacy
Spread Privacy
C
CERT Recently Published Vulnerability Notes
The Last Watchdog
The Last Watchdog
G
GRAHAM CLULEY
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Scott Helme
Scott Helme
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
NISL@THU
NISL@THU
A
Arctic Wolf
T
Threat Research - Cisco Blogs
PCI Perspectives
PCI Perspectives
N
News and Events Feed by Topic
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
Simon Willison's Weblog
Simon Willison's Weblog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Google Online Security Blog
Google Online Security Blog
罗磊的独立博客
L
LINUX DO - 最新话题
U
Unit 42
S
Security Affairs
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 【当耐特】
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
月光博客
月光博客
Engineering at Meta
Engineering at Meta
腾讯CDC
F
Full Disclosure
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 司徒正美
The Cloudflare Blog

博客园 - woodfish

偏序集的Dilworth定理 XJOJ历经2个月终于完成啦~~ fork()调用的一个趣题 实现google那种输入框提示的功能 POJ 3691 安徽第二题 有限状态自动机+DP [计算几何]点集中的点能组成多少个正方形 [计算几何]POJ 1375 点对圆的切线+线段重叠 [计算几何]POJ 1556 判断线段相交+Dijkstra [计算几何] POJ 1873 暴力+凸包 [计算几何]POJ 1266 三角形的外接圆 圆的参数方程 POJ 1026 置换群 [计算几何]POJ 1031 计算点对多边形的偏转角度 [计算几何]POJ2079 求点集中面积最大的三角形 [计算几何]POJ3608 求2个不相交凸包的最短距离 [计算几何]凸包的旋转卡壳算法 C++禁止一个类被继承的技术 C与汇编的接口技术 计算位数的3种方法 避免使用条件分支
哈尔滨赛区网络预选赛总结
woodfish · 2008-09-20 · via 博客园 - woodfish

一共8道题,我们队最后AC了6道,队伍排名29,还不错.

刚开始比赛,早上9点,脑袋晕晕的,看了A题,是个计算几何,就是求一个车能否通过一个直角弯道,我画了画图马上觉得直接枚举角度,让车靠着一个顶点旋转就可以了,但是当时脑袋晕晕的,根本写不了代码,于是看B题,发现B题已经有些队过了,看来是个很简单的题目,当时急急的读完题目竟然把题目搞错了,前后写了2个版本的程序都没写下去,后来看有100多个队过了,心急了,我靠,今天rp不会这么差吧,这种题都过不了,下定恒心好好读下题,恍然大悟,果然是个简单题,于是三下五除二的写完代码提交AC了. 我写B题的时候hyh在写1007是个图论题,我搞完1002后就去看1006了,刚看完题hyh说他1007WA了2次,找不到错,让我做下1007,他来搞1006,我把1007看了下,就是个判断一个图是否为二分图并且求最大匹配.1007题是我今天状态的转折点阿!!最喜欢做这种题目了,打开editplus,狂敲一阵,中间没停过,  然后 越敲越兴奋,10分钟左右就敲完了,测试样例过了,于是交了,RE错误,omg,竟然出现这种错误了.把代码检查一遍,突然发现粘最大匹配模板过来的时候变量名重复了,我弱智了.... 改一改,交就AC了.这个时候hyh把1006也一次性AC了,我这时已经很兴奋了,然后hyh和wyb一起搞1001了,    我于是看其他的题目,看了一下1005,发现就是个状态压缩dp,只是在状态转移的时候比较复杂,我下定决心写了,于是开始写,也是一股气写完了,写完了发现状态转移的那个dfs搜索函数把我自己都吓倒了,一大堆的括号和位操作.... 然后花了点时间调试,确定没问题就交了,结果TLE了!! 看来测试数据很多阿  在自己的机子上跑极限数据一下就出来了,于是先用我的程序打个表,交上去就AC了!!  在我搞这题的时候hyh和wyb把1001搞定了.       这时一共搞定5道题了,剩下的1008基本没什么人交,估计很难,于是我来搞1003,hyh和wyb去搞数学题1004去了. 1003题目我前后读了6,7遍才大致了解什么意思,就是先求出一个凸包,然后在平面上找一个点,使这个点到凸包上所有顶点的距离之和最小. 这个点就是费马点,网上搜了下还是不知道怎么求凸包的费马点,后来用牛顿迭代法竟然过了!!!   hyh和wyb搞1004一直都犹豫用那种方法,算法都想正确了,就差要快速的分解一个超大数的质因子了,由于高精度要求,决定用java搞了,wyb写了半天发现有问题,当时没什么时间了,我就开始重写,用最朴素的质因素分解,因为打素数表都要好长时间,写完了稍微改了下交了三个版本的程序,这个时候大家交程序都交疯了,等程序评测要等很长时间.  我们不停的刷status,最后竟然全部CE了!!!  我汗阿,猛然才发现我们的wyb大牛把java程序的类名建成MMain了.....  我是直接在那个类里面写的程序!! 狂汗阿!!!

下面把6个题的算法简单说一下:

1001 Turn the corner  枚举车靠着转角的顶点旋转的角度(0-90,步长0.001),然后看在这个角度下车子能否放到这个弯道中.

1002 The Mussels 把各个等级的管子和各个等级的蜗牛的个数全部存下来,然后按照等级1到等级n考虑,线性扫描一便计算就可以了。

1003    Watch out the Animal  先求出点集的凸包,然后用牛顿迭代求出最短距离和。

1004 ACM(Array Complicated Manipulation) 可以证明:只要n的质因子里面没有2个相同的,也就是质因子的阶只能为1,那么答案就是yes,否则答案就是no,由于数据范围超大,所以关键就在于怎么加速上面这个判断过程。

1005 Bricks 由于方块的高度最高不超过3,所以在放第i行时,只需要知道第i行和第i+1行的状态就可以推出i+1行和i+2行的状态,由于宽度小于等于6,所以可以用二进制压缩一个行的状态,用dp[i][j][k]表示在放到第i行时,第i行的状态是j,第i+1行的状态是j能够覆盖的最多格子数。然后根据不同方块的形状来枚举递推就可以了。

1006 Counter Strike 题目是求一个序列中平均数大于a的连续子序列有多少个。这样转换:把每个数减去a,化为求一个序列中连续子序列的和大于0的序列有多少个。设转换后的序列为b[],设s[i]表示b[1]+b[2]+...+b[i],则问题转换为求数对(i,j),使得j>i并且s[j]-s[i]>0,既j>i且s[i]>s[j],也就是求s数组的逆序对的个数。这个用树状数组或者分治都可以搞定。

1007 The Accomodation of Students 判断一个图是否为二分图:对图的每一个连同分量进行染色,相邻点颜色要不同,如果在dfs染色过程中出现矛盾,则图不为二分图。如果是二分图,根据染色的结果对顶点号进行映射,重新建立一个二分图, 然后求出这个二分图的最大匹配数就可以了。