摘要: 话说这题比赛时候过的好少,连题都没读TOT 先考虑dp求01串的不同子序列的个数。 dp[i][j]表示用前i个字符组成的以j为结尾的01串个数。 如果第i个字符为0,则dp[i][0] = dp[i-1][1] + dp[i-1][0] + 1,dp[i][1] = dp[i-1][1] 如果第i 阅读全文
posted @ 2017-08-19 23:03 iRedBean 阅读(1227) 评论(6) 推荐(1) 编辑
摘要: 三年半的ACM生涯终于迎来了终点,退役之时,感慨万分,故写此文以纪念逝去的时光,那些为ACM拼搏的日子,那段弱校ACM的奋斗史。 三年半的ACM生涯,窝见证了CUMT从打铁到铜牌的突破,又见证了从铜牌到银牌的突破;见证了集训队员从3人发展到10余人,又见证了ACM实验室的落实。 三年半的ACM生涯, 阅读全文
posted @ 2017-01-31 22:36 iRedBean 阅读(1750) 评论(0) 推荐(2) 编辑
摘要: 考虑每个数在最大值内的倍数都求出来大概只有max(ai)ln(max(ai))个。 先排个序,然后对于每个数ai,考虑哪些数字可以变成ai*k。 显然就是区间[ai*k,ai*(k+1))内的数,这个二分一下就好了。 阅读全文
posted @ 2016-10-18 23:30 iRedBean 阅读(223) 评论(0) 推荐(0) 编辑
摘要: dp[i][0]表示从i出发,轮到先手走的最优值。 dp[i][1]表示从i出发,轮到后手走的最优值。 dp[i][0]=max(dp[j][1]+sum[j]) dp[i][1]=min(dp[j][0]-sum[j]) 倒着推就好了。 阅读全文
posted @ 2016-10-18 23:26 iRedBean 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 考虑将两个单词变成有序,我们可以得到一个或者两个旋转次数的区间。 然后考虑将两组单词变成有序,比如[l,mid]和[mid+1,r],对于mid和mid+1这两个单词我们可以求出使他们有序的旋转次数的区间。 然后将这个区间与[l,mid]的区间以及[mid+1,r]的区间求交,就可以得到使[l,r] 阅读全文
posted @ 2016-10-18 23:22 iRedBean 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 求出无向图的所有边双联通分量,然后缩点就成了一颗树。 然后我们选取最大的那个边双联通分量作为根,这样我们就可以确定所有割边的方向了。 对于边双联通分量里面的边,我们随便dfs一下就可以把它变成强连通分量,方向也就确定了。 阅读全文
posted @ 2016-10-18 23:10 iRedBean 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 首先检测有木有和Computer匹配的Socket,如果有则将其匹配。 然后将所有没有匹配的Socket连上Adapter,再去检测有木有Computer与Socket匹配。 重复这个操作31次,所有Socket的power都变成1了,如果再不能匹配就结束程序。 阅读全文
posted @ 2016-10-18 23:05 iRedBean 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 显然要二分答案,然后对于一个天数,我们来判断是否可以通过所有考试,这里就贪心来安排就好了。 首先我们希望每门课的考试时间越晚越好,然后就是先复习最早开始的考试。 阅读全文
posted @ 2016-10-18 22:58 iRedBean 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 由于本人愚笨,最后一题实在无力AC,于是只有前14题的题解Orz 总的来说,这次模拟赛的题目不算难,前14题基本上一眼就有思路,但是某些题写起来确实不太容易,编码复杂度有点高~ L1-1 N个数求和 设计一个分数类,重载加法运算符,注意要约分,用欧几里得算法求个最大公约数即可。 L1-2 比较大小 阅读全文
posted @ 2016-05-17 00:05 iRedBean 阅读(1698) 评论(1) 推荐(0) 编辑
摘要: 思路:先把路径按反斜杠split成数组,然后用一个ArrayList去模拟。如果遇到空或者.则不处理;如果遇到..则删除ArrayList最后一个元素(注意如果只有1个元素则不删除);其他情况直接加到ArrayList里面。注意特判输入空串的情况。 阅读全文
posted @ 2016-04-12 23:30 iRedBean 阅读(255) 评论(0) 推荐(0) 编辑