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

推荐订阅源

N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
爱范儿
爱范儿
量子位
博客园 - 聂微东
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
GbyAI
GbyAI
MyScale Blog
MyScale Blog
IT之家
IT之家
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Hugging Face - Blog
Hugging Face - Blog
The Register - Security
The Register - Security
Microsoft Security Blog
Microsoft Security Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
雷峰网
雷峰网
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - 叶小钗
D
DataBreaches.Net
B
Blog
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
aimingoo的专栏
aimingoo的专栏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
腾讯CDC
T
Threat Research - Cisco Blogs
SecWiki News
SecWiki News
Martin Fowler
Martin Fowler
D
Docker
Cisco Talos Blog
Cisco Talos Blog
T
Tenable Blog
Webroot Blog
Webroot Blog
宝玉的分享
宝玉的分享

明明如月成长笔记

个人数据的开源备份:从明清档案之殇想到的 简体字的双重优势:打字效率与扫盲成效全解析 四小时深圳书城奇遇:那些藏在书架间的偶然与必然 正式把我的笔记系统迁移到 Obsidian,为了和 AI 配合 Gemini CLI 登录踩坑记录:GOOGLE_CLOUD_PROJECT_ID 的坑与解法 在 MacOS 上,成功恢复存储卡上被误删的照片 AI CLI 工具:Claude Code, Codex, Gemini CLI, Qwen code, CodeBuddy cli, cursor-agent 我的常用命令 港漂日记62:父亲节独自带娃,室内游戏、香港公园探展、观鸟、品味米其林餐厅 南航随心飞机票爬虫解密 acw_sc__v2 港漂日记61:香港私立诊所首诊:商业医保如何改变我的就医体验? 香港历史博物馆:看秦始皇兵马俑,还能和孔子比身高? 港漂日记59:母亲节礼物!AI 涂色小技巧,让孩子的爱跃然纸上 港漂日记60:西营盘网红旧书店 Book & Go 淘书记 港漂日记58:萌娃中环学体操,课后老师狂点赞 五一游记D4:深圳笔架山儿童乐园,邂逅无人机送外卖 我的400篇博客都写了些什么 珊瑚海兔四岁啦 港漂日记D159:亲子同乐日:一场精彩的幼儿园嘉年华 蛇年春节自驾D10:东莞-深圳-香港 DeepSeek教我如何收拾行李箱 福田取逗留签 回港新方式 蛇年春节自驾D9:江门-顺德-东莞 中国侨都华侨华人博物馆 东莞迎宾馆 蛇年春节自驾D8:茂名-开平-江门 挥春作业 粤西堵车 开平碉楼 迎财神 茂名博物馆参观记 蛇年春节自驾D7:茂名 中国第一摊 茂名博物馆 亚朵酒店 蛇年春节自驾D6:南宁-茂名 发财树 青秀山 路途亲子游戏 蛇年春节自驾D5:南宁过大年 醒狮贺岁 三街两巷 特色美食 骑行穿城 琅西夜市 打铁花 新春好!我用DeepSeek写祝福,顺便送你三款红包封面 蛇年春节自驾D4:钦州-南宁 钦州老街,万丽年夜饭 蛇年春节自驾D3:海陵岛-钦州 绝美悬崖餐厅,海景房租赁行情 明明如月成长笔记2024年公众号创作回顾(含免费红包封面🧧) 蛇年春节自驾D2:深圳-阳江-海陵岛 明明和虹虹2024年公众号创作回顾(含免费红包封面🧧) 蛇年春节自驾D1:深圳亲子游 港漂日记D118:备战HK100,徒步港岛'恐龙径' 港漂日记D115:春节大筹备:AI 助力,书法添彩 港漂日记D114:推荐两款适合新港漂使用的app 2025新年计划之:全面拥抱AI 港漂日记D111:备战HK50 港岛径拉练 港漂日记D110:一个普通的周六见闻,聚餐、借书、儿童乐园,体育选拔机制,公共自习室,挫折教育 我的2024:辗转四城,忙碌充实 港漂日记D104:港大幸福家庭博览会,亲子工坊与未来趋势 港漂日记D101:赤柱圣诞狂欢,古迹海景遛娃 港漂日记D100:港漂百日,圣诞快乐🎄 港漂日记D97:欢乐星期天:港大访古探幽,尖沙咀购物赏景 港漂日记D96:太平山卢吉道:一次穿越山林、俯瞰繁华的震撼之行 皇马巴萨元老赛:传奇重逢,闪耀球场 港漂日记D93:宝宝居港三月余,英语表达大进步 港漂日记D90:绘本阅读,潜水展,华嫂冰室 港漂日记D89:宝妈带娃闯大馆,老友相聚话鸡娃 港漂日记D84:消防队亲子嘉年华:风车 DIY、叠杯子,奖品拿到手软! 港漂日记D83:港澳通行证:深圳换证碰壁,香港解锁秘籍 港漂日记D82:笑不活了!在 “知悭识水”嘉年华,我被自家娃的“鬼画符”征服 别再傻傻手工记账!AI 加持 beancount,效率狂飙 N 倍,真香警告 港漂日记D76:勇闯艺趣嘉年华,数数宝宝戴了几顶帽子 港漂日记D75:抵港首次学校秋游 奔赴元朗开心农场 港漂日记D73:深圳盐田周末放松游 | 高铁'灵活行'思考 | 灯塔图书馆 | 壹海城 | 盐田印象 | 港深对比 港漂日记D72:深度揭秘:我是怎么借助AI创作宝宝校庆视频的 港漂日记D71:盐田中英街漫记:海岸盛景,历史长歌 港漂日记D70:海南巨舰下香港,全民共赴海军约 港漂日记D69:完了!在香港,幼儿园小班作业居然做到晚上九点多。。。 港漂日记D68:亲子共赴嘉年华,反诈工坊入童心 港漂日记D61:哇塞!西九龙超燃嘉年华,亲子嗨玩,禁毒护航! 港漂日记D55:台风过境,顶楼泳池看海景,铜锣湾逛吃不停歇 港漂日记D50:探秘香港看病:为宝宝抢号二十次,诊疗却遭宝妈质疑 “没意义”? 港漂日记D45:复诊体验,天哪!在香港做B超居然排到了2027年。。。 港漂日记D42:香港迪士尼 x 万圣节:游客 Cosplay 百态,共赴奇趣冒险 港漂日记D32:在香港读杂志《明报周刊》《国家地理》 港漂日记D31:在校尿裤子怎么办?爷爷寄来滑板车 爸爸讲英文绘本 港漂日记D30:楼顶滑步车 画画闹情绪 拼多多发掘低价秘诀 港漂日记D29:生活的琐碎与温暖 港漂日记D28:深圳一日游 跨境巴士体验 万象天地 陶陶居 gaga 港漂日记D27:香港公园 读绘本 淘拼集运自提体验pk 睡前故事的四个阶段 港漂日记D26:幼儿园小班竟有五项作业 给工人姐姐一部手机 港漂日记D25:社区托班体验 菜鸟驿站取件 港漂日记D22:社区托班报名 中山纪念公园体育课 乔治五世纪念公园观察 港漂日记D21:东涌东荟城 大屿山双峰越野赛 辅导作业 港漂日记D20:和平号环球游轮分享会 数码港 儿童加油站 港漂日记D15:参观幼儿园,登太平山看夜景,杜莎夫人蜡像馆 港漂日记D14:长洲岛的缤纷一日:奇趣与温情交织 港漂日记D13:香港中央图书馆观察 麦当劳价格 佐治五世纪念公园 社区配套 港漂日记D12: 免费早报 宝宝报课情况 AppleTV 港漂日记D11: 回国代理,智能家居,晨间习惯 港漂日记D10: 折腾智能家具设备,HomeKit,HomeAssistant,AppleTV,米家 港漂日记D8:西区社区中心探访 困难班 辅导班 童军 港漂日记D7:北上消费,中式独居生活vs美式家庭生活,车和家,重典治乱 港漂日记D6:宝宝天星小轮,宝爸研究医保 港漂日记D5:回顾宝宝一周学习表现 港漂日记D4:宝宝生活习惯与社交的思考 港漂日记D3:香港中秋怎么放假,看亚冠,老房子水质问题 港漂日记D2:中秋铜锣湾赏灯,学校手工作品 港漂日记D1:宝宝上学,校车接送,街市买菜,安装马桶,物业规矩,垃圾处理,读报感悟 港漂日记D0:南京飞香港,禄口V7,国泰航空,光大银行送机,上海银行境外接机 在南京六朝博物馆,我看到了195件禁止出国文物中的2件 驾照过期了怎么办?原来还可以在异地轻松补办 镇江博物馆:精美的器物与缺失的展示 镇江一日游:润扬大桥,金山寺,锅盖面,镇江博物馆 扬州一日游:博物馆、历史、恐龙、雕版印刷、富春茶社 子女体育规划指南:揭秘奥运冠军对身体素质的要求 杭州萧山机场 T4 航站楼国际出发 V25 贵宾厅体验 2035年的上海是什么样子?上海城市规划展示馆绝美揭秘! 李笑来又出书了!这次只花了18美金和一天时间!深度拆解他是如何用GPT-4o快速写书的
【转】疯狂提交找错法
lmm333 · 2010-11-26 · via 明明如月成长笔记

做 ACM 的那些人应该也都知道传说中的“疯狂提交找错法”吧。就是如果你题目没有过的话,提交的罚时是不会在最后的分数里面扣掉的。当然是希望在尽量少的次数内过掉,但是情急之下,疯狂提交也是一个办法,不管怎么算它都是有好处的:

  • 如果最后题目 AC (Accept) 了,虽然罚时会让排名下降,但是不管罚时多少,多做出一道题的总比少做出一道题目的排名要靠前。
  • 如果题目没有 AC ,也并没有什么损失。

但是疯狂提交也必须要能“找错”,否则就没有什么意义了。今天我也非常疯狂地爽了一把,并且最后成功找到问题,把题目 AC 了。

其实我平时并不做 ACM ,因为我对存算法不太在行,而且我也特别讨厌 ACM 这种纯黑箱的形式,只告诉你正确或者错误,而得不到一点调试信息。但是仔细想想其实现实世界很多地方是这样的,比如许多商业软件,没有提供源代码,出错以后你也只能是茫然,再比如自己发布软件的时候,甚至连“对”或者“错”这样的单纯的结果都没有,你只能尽可能地去遇见和避免各种 Bug 和错误。所以其实做 ACM 的题目应当还是一个相当不错的锻炼吧。

但是数值分析这门课的几个作业是 ACM 形式的判题系统,所以还得去做。这次的题目并不难,就是代数方程求根,算法也在书上都讲过了。然而做出来的程序无论如何都是 Wrong Answer 。这四五天的空余时间几乎都在做这个题目,唉,做得郁闷到极点,怎么就能不对呢?我尝试了各种各样的方法,牛顿法、改进的牛顿法、二分法、Steffensen 方法,还把它们结合起来,修改各种优化参数……总之就是过不了。

最后我静下来仔细想了一下,如果测试数据里面的数据非常大的话,用 double 进行计算必定会溢出,那样肯定算不出结果来,但是我看到题目的状态显示有人确实通过了,所以测试数据应该不会特别大。不过令我郁闷的是我在使用二分法的时候竟然 TLE (Time Limit Exceeded) 了,那除非是一个很大的区间啊!

最后我决定用疯狂提交找错法了。我要探测测试数据!但是 OJ (Online Judger) 给出的结果种类非常少,包括 WA (Wrong Answer) 、TLE 和 Runtime Error SIGSEGV 等,根本不能从中得出测试数据,然而我们可以对测试数据(包括整个运行环境中的任何状态)进行一个 bool 测试并得到结果:结果就由 WA 和 SIGSEGV 两种状态来区分。于是我写了一个 helper 函数:

void fire_seg_fault(){ int *ip = 0; *ip = 0;}

原理很简单,就是要产生一个运行时错误, abort 函数不允许调用,除以零似乎也被忽略掉了,不过对 NULL 指针解引用是绝对会造成运行时错误的。然后在代码里面就可以对测试数据进行探测了,比如:

if (n > 1000) fire_seg_fault();

提交,然后根据结果是 WA (或者 TLE) 还是 SIGSEGV 来判断 n 的范围。然后逐次缩小范围,对于整数来说总是可以在比较可观的次数之内得到一个准确的值。对于浮点数来说,其实计算机里面的浮点数也不会是无限位的,所以从理论上来说也可以通过逐步缩小范围得到“精确”的值(也就是它给定的值)。

经过我疯狂探测,得出了测试数据的规模:

  • 一共有 14 组测试数据。
  • 有 a > b 的情况。(真过分,ACM 就经常有这种情况啊,说“a and b are the two end-points of the given interval”,故意不说 a 比 b 小,然后又在示例测试中把所有的例子都写成 a 比 b 小,让你产生错觉,却又在测试数据里面来个 a 比 b 大,如果不小心误以为 a 一定比 b 小的就要郁闷了)
  • a 的取值范围为 -100 到 1 。
  • b 的取值范围为 -0.5? 到 3 。
  • eps 如题目中描述的一样,一直都是 0.00005 。

出乎我的意料竟然测试数据的规模这么小的。可是竟然在二分法的时候会 TLE ,这就让我不解了。接着我继续用探针探测出 TLE 出在第三组测试数据上。第三组数据 n 是 5 ,并不大,所以我决定把第三组的参数全部探测出来,当然并不是特别轻松的活,我都想用脚本来写个“探测机”了。不过总算数据并不变态,最后还是被我探测出来了:

a == -4b == 2n == 5c[5] == 1c[4] == 4.6c[3] == -1.94c[2] == 0.296c[1] == -0.0199c[0] == 0.0005

这下为什么会 TLE 就明了了,画出函数图形如下所示:
graph.png
我在判断结束条件的时候用了如下语句:

if (fp == 0 || (GOOD_ENOUGH(b-a, eps) && GOOD_ENOUGH(fp, eps)))

其中 GOOD_ENOUGH 是一个用于判断绝对值的宏。总之就是函数值 fp 在给定的区间 (-4,2) 里面的函数值永远都达不到给定的精度 (eps) ,所以就在那里死循环了。去掉那个判断得出的结果会飞掉,因为我在这里犯了一个很严重的错误:左右两边函数值的符号是一样的,不能用二分法。

但是我是在牛顿法失败的情况下才会去用二分法。牛顿法为什么会失败呢?实际上,在给定的区间之内根本没有实根,只有 4 个虚根,唯一的实根是 -5 左右的那个,但是那个是在区间之外的,可是几乎所有的收敛序列都直接收敛到那里去了,但是是在给定的区间之外的,无疑要被丢弃。

可是这样的话题目不是有问题吗?题目中说过:

It is guaranteed that a unique real number r exists in the given interval such that p(r) = 0.

在给定的区间之内明明没有根嘛,不过单从图形上来看的话,还是很接近零的。最后我将牛顿法的初始值选取密度加大了,总算得到一个看上去像样点的解,算出来的函数值是 0.0045 ,唉,这和零相比应该还有很大的差距吧,可是我把程序提交上去之后竟然 AC 了!不过让我觉得好像是有些碰运气的感觉啊。

不过毕竟是郁闷了几天的题目了,总算是通过了。发现自己在做这样的题目的时候经常都是考虑得太过复杂了。但是如果数学功底再扎实一些,从理论上来仔细分析一下的话,也许不会出现这种类似于“侥幸”通过的尴尬情况了吧。 :)