2017年浙江省赛总结
摘要:最终是5题银。其实感觉再给点时间能7题的,主要是最后机子不够用了,没时间调试了,当然代码能力弱也是很大的一个问题。 E题,队友当时卡了很久,最终是A了。赛后发现就是一个很水的数位DP。。代码如下: 1 #include <stdio.h> 2 #include <algorithm> 3 #incl
阅读全文
UVALive 3716 DNA Regions ——(扫描法)
摘要:乍一看这个问题似乎是很复杂,但其实很好解决。 先处理出每个点到原点的距离和到x正半轴的角度(从x正半轴逆时针旋转的角度)。然后以后者进行排序。 枚举每一个点到圆心的距离,作为半径,并找出其他到圆心距离不超过这个值的点,由于他们的角度是有序的,因此线性的找出角度差最小的满足题意的两个点即可(相当于拿一
阅读全文
UVALive 3716 DNA Regions ——(式子变形)
摘要:一开始直接想到了二分,写了一发然后过了全部样例就交了,果断WA。因为这个问题显然是不满足单调性的。 然后想之前刚做的斜率优化DP,但是那个是求斜率最大值,不是求满足斜率大于一定值的最大长度的。也构造不出好的方法。 最后的方法是列个式子:i+1~j位置可以成立仅当 (pre[j] - pre[i])
阅读全文
2016-2017 ACM-ICPC Northwestern European Regional Programming Contest (NWERC 2016)
摘要:只A出了其中的5题。。这场题意好晦涩啊,而且其他题目也有一定的难度。又是tarjan又是dinic的。。暂时先给写出来的5题做个题解吧。 题目链接:https://vjudge.net/contest/158990#overview。 C题,还是一个比较水的题目,只要看懂了题意就能A出来了。 E题,
阅读全文
Egyptian Collegiate Programming Contest (ECPC 2015) C题 Connecting Graph
摘要:这题上次用的是线性求LCA过的,数据比较水,当时没有被T掉(不过线性的做法是在线的)。现在重新的分析一下这个问题。在所有的操作都进行完毕以后,这个图形肯定会变成一棵树,而我们的要求是在这棵树上的一条链上求出边权值t的最大值,那么很显然的可以使用树链剖分来解决这个问题(在做这题之前我还不知道LCA也可
阅读全文
UVALive 4726 Average ——(斜率优化DP)
摘要:这是第一次写斜率优化DP= =。具体的做法参照周源论文《浅谈数形结合思想在信息学竞赛中的应用》。这里仅提供一下AC的代码。 有两点值得注意:1.我这个队列的front和back都是闭区间的;2.在while(...) front++; 这个循环里面,<=写成<就会WA,不知道是为何(讲道理是肯定没问
阅读全文
CodeForces 494B Obsessive String ——(字符串DP+KMP)
摘要:这题的题意就很晦涩。题意是:问有多少种方法,把字符串s划分成不重叠的子串(可以不使用完s的所有字符,但是这些子串必须不重叠),使得t串是所有这些新串的子串。譬如第一个样例,"ababa"和"aba",共有5种方法:{aba}(前3个),{aba}(后3个),{abab},{baba},{ababa}
阅读全文
UVALive 5052 Genome Evolution ——(xjbg)
摘要:本以为这题n=3000,随便n方一下就能过。于是我先枚举长度len再枚举起点,不断增加新的点并删除原来的点,判断在b中的r-l+1是不是等于len即可,这个过程显然要用set维护比较方便,但是貌似卡了这个log,T了= =。 然后修改了一下思路,先枚举左端点,再不断的向有扩张,并用两个变量l和r来标
阅读全文
UVA 11525 Permutation ——(线段树,脑筋急转弯)
摘要:只要注意到对于譬如:S1*(k-1)! 因为后面k-1个数字的全排列个数刚好是(k-1)!,那么第一个数字就是没有取过的数字的第(S1+1)个即可。取走这个数字以后这个数字就不能再用了,依次类推即可得到整个排列了。 那么随便用线段树维护一下即可。 代码如下:
阅读全文
UVALive 4976 Defense Lines ——(LIS变形)
摘要:题意:给出序列,能够从这序列中删去连续的一段,问剩下的序列中的最长的严格上升子串的长度是多少。 这题颇有点LIS的味道。因为具体做法就是维护一个单调的集合,然后xjbg一下即可。具体的见代码吧:
阅读全文
UVA 11605 Lights inside a 3d Grid —— (概率和期望)
摘要:题意:见大白书P181。 分析:一个一个点的进行分析,取其期望然后求和即可。假设当前点在第一次中被选到的概率为p,f[i]表示进行k次以后该点亮的概率(在这里也可以理解为期望),g[i]表示k次后该点不亮的概率,那么联立: 1.f[1] = p; 2.f[i] + g[i] = 1.0; 3.f[i
阅读全文