2019.9.14 模拟赛总结

发卷先看题目。。。

T1的题目描述非常网络流,成功被误导3秒钟;然后就想暴力,就是可以满足这个节点就满足,不能满足就不满足,大概一个dfs就可以了,然而发现想法有BUG

T2刚看没有什么想法,只感觉肯定会用到题目性质来做一个时间比较优的算法。

T3一看是一个通配符匹配的问题,想了想只知道暴力匹配。

看完题目之后发现还是T1比较可做,在发现之前思路的BUG之后想到了可以用一个类似背包的思路做。对每个点的每个儿子进行0-1背包,算出不超过在当前节点流量限制的情况下,最多能选多少个节点;在能够选节点个数同样多的方案中,贪心地选取所需能量最小的那种方案。叶节点作为边界特殊处理一下。

T1做得比较顺畅,自己手出了几组数据,改了一下细节然后就结束。

后面还是觉得T2要有思路一些,就开始做T2。
刚开始以为是三分(最近做三分有点走火入魔…),但发现它并不是一个单峰函数。
然后一般情况下这种跟区间有关的问都有一些比较有意思的那种放一个计数器然后扫一遍加加减减的那种做法嘛,就开始乱涂乱画。
大概猜了一个结论吧,就是 E E E的取值只会在每个区间的右端点才可能取到,这样的话 E E E就是可枚举的了。
然后就枚举 E E E,枚举每个区间然后进行计算,经过对拍之后发现结论是正确的。


这里大概感性理解一下这个结论:
E E E取得很小的时候,每个区间的贡献都是 A i A_i Ai,都很小;
E E E逐渐增大时,每个区间的贡献都会增大;
但当 E E E超过一些区间的右端点时,这个区间就会报废,就会造成损失。
E E E恰好在某个区间右端点的时候,就是马上造成损失之前(悬崖勒马),所以


可是复杂度还是很高,大概只能过 50 % 50\% 50%吧,就尝试优化。
想到算每一个区间的贡献,然后发现要把很多个 A i A_i Ai加起来什么的,觉得复杂度降不下来,就放弃了。(其实跟正解很接近了
想了很久没有什么思路,就先保存了这个代码,去看T3,看了一下时间还剩1小时40分钟。

T3磕了很久但是没有什么思路,但总不可能放弃,就果断打了一个其实自己心里也没什么底的暴力匹配。
先预处理一下每个字母在 B B B串的哪些位置出现过,当 A A A串出现通配符的时候就可以让通配符后面那一个字符去对应 B B B中任意一个相同的字符。
首尾可以特判,不过感觉不简洁而且没太大用处所以我没有写。
虽然只是一个暴力,但是有很多细节的东西写崩了,所以还调了很久。注意一下写递归的时候很多只用于其中一层的变量最好写到参数里面,这种错误很不好调。
最后写完了测试完还有十几分钟的样子,再检查了一下文件名什么的就结束了。


出分之后还是挺惊讶的,T1爆零了,而自己不怎么看好的T3有七十几分,T2比较正常,五十几分。

T1也没想到是贪心,不过从题解的话来看,树背包应该是可以过的呀,但是全WA了,还没有看出来是哪里。


不过这个贪心确实不好证明正确性 (感性理解?

T2差一点想到了正解,但是失之毫厘,差之千里。我觉得 E E E的取值只需要右端点就可以了,但题解把左端点也弄进去了,我觉得没有必要;不过虽然左端点不会成为答案,但可以方便统计答案;可能我一直在看右端点就没有想到这个地方来,但这道题果然还是那种区间问题的小套路。

T3 RE了3个点,发现数组开小了,看错了,只开了 80 % 80\% 80%的大小 (糟糕)还以为这个“暴力”可以过什么的,但我还是太天真, 改了之后会T掉2个点,所以还是乖乖按题解的思路写了一下。


各题题解挖坑代填。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值