Codeforces Round #381 (Div. 2)
摘要:A题,虽然是水题,但是也需要仔细。代码如下: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #include <vector> 5 #include <iostream> 6 using namespace s
阅读全文
2017 ZSTU寒假排位赛 #6
摘要:题目链接:https://vjudge.net/contest/149212#overview。 A题,水题,略过。 B题,水题,读清题意即可。 C题,数学题,如果把x表示成x=nb+m,则k=n/m属于[1,a],m属于[1,b-1]。然后由第一个式子得到n=(x-m)/b,那么带入第二个式子得,
阅读全文
POJ 1741 Tree ——(树分治)
摘要:思路参考于:http://blog.csdn.net/yang_7_46/article/details/9966455,不再赘述。 复杂度:找树的重心然后分治复杂度为logn,每次对距离数组dep排序复杂度为nlogn,而找重心的复杂度为dfs的复杂度——O(n),因此总的复杂度为O(nlognl
阅读全文
Codeforces Round #372 (Div. 2)
摘要:A题,水题,但是因为我自己的写法没特判n是1导致WA了一次。 B题,直接用数组记录一下各个字母出现的次数即可,问号另外统计,然后每26个看看是否可行,如果可行那么其他的问号随便放就好。用map记录WA了一次,因为map里只要一个节点被用来记录过,然后被减到0,使用size()访问也会把这个节点计算在
阅读全文
2017 ZSTU寒假排位赛 #5
摘要:题目链接:https://vjudge.net/contest/148901#overview。 A题,排序以后xjbg即可。 B题,弄个数组记录当前列是不是删除以及当前行是不是已经大于下一行然后乱搞即可。 C题,线段树写的比较无脑,但是可以直接搞,在遍历的时候记录最大的,然后继续找的时候更新答案即
阅读全文
Intel Code Challenge Elimination Round (Div.1 + Div.2, combined)
摘要:A题,水题,不过我写的时候少考虑了一个细节导致WA了一发。 B题,水题,判断一行内元音字母的个数是不是等于p[i]即可。 C题,好题,反过来思考,用并查集离线处理。每次如果能合并就合并并更新答案即可。代码如下: 1 #include <stdio.h> 2 #include <algorithm>
阅读全文
Codeforces Round #392 (Div. 2)
摘要:突然觉得CF的题很锻炼代码能力和反应速度。。更加坚定了我在寒假要多打CF的决心。 AB都是大水题,直接跳过了。 C题,很简单的题目,不过感觉细节必须考虑清楚。WA了很多发才过,而且最终代码还很挫。。还特判了n是1和2的情况= =。。代码太挫了就不贴了。 D题,也是比较简单的贪心,不过感觉直接写for
阅读全文
2017 ZSTU寒假排位赛 #4
摘要:题目链接:https://vjudge.net/contest/148543#overview。 A题:n个罪犯,每个人有一个犯罪值,现在要从里面选出连续的c个人,每个人的犯罪值都不能超过t,问选法的种类数。O(n)xjbg一下即可: 1 #include <stdio.h> 2 #include
阅读全文
HDU 5974 A Simple Math Problem ——(数论,大连区域赛)
摘要:给大一的排位赛中数论的一题。好吧不会做...提供一个题解吧:http://blog.csdn.net/aozil_yang/article/details/53538854。 又学了一个新的公式..如果x和y互质,那么x+y和x*y互质。证明如下:随便找一个x中有的因子c,因为x,y互质,因此c不是
阅读全文
Codeforces Round #373 (Div. 2)
摘要:A题,水题。只要细心一点就能做出来的。 B题,最后的排列只可能是rbrbr..或者brbrb..,那么枚举这两种情况,统计当前序列和他们不同的r或者b的个数,假设为x和y,那么较小的他们互换即可,而剩下的只能重刷,因此,答案是min(x,y)+max(x,y)-min(x,y)=max(x,y)。最
阅读全文
2017 ZSTU寒假排位赛 #3
摘要:题目链接:https://vjudge.net/contest/147974#overview。 A题,费用流,不会。。跳过了。 B题,给一个图,问至少添加几条边能成为强连通图。显然缩点,要使得成为一个scc,任意一个点都要至少一个入度和出度,而一条边可以提供一个入度和出度,因为答案为max(入度为
阅读全文
HDU 3689 Infinite monkey theorem ——(自动机+DP)
摘要:这题由于是一个单词,其实直接kmp+dp也无妨。建立自动机当然也是可以的。设dp[i][j]表示匹配到第i个字母的时候,在单词中处于第j个位置的概率,因此最终的答案是dp[0~m][len],m是输入的长度,len是单词的长度。转移方程见代码,即在一个节点的位置时,枚举下一步的走法,乘以这种走法的概
阅读全文
CodeForces 755D PolandBall and Polygon ——(xjbg)
摘要:每次连线,起点和终点之间,每一个被点亮的点,这些点都能连出去两条线,因此可以增加的块数+2(1这个点除外,因为只有连出的点没有连进的点),计算起点和终点之间有几个点被点亮即可,然后1这个点特判一下。感觉,可以用线段树维护。。不过这题还是有规律的,每转过一圈,两线之间的点数就会加1,然后O(n)扫一遍
阅读全文
2017 ZSTU寒假排位赛 #2
摘要:题目链接:https://vjudge.net/contest/147632#overview。 A题,状态压缩一下然后暴力即可。 B题,水题,略过。 C题,有负数,前缀和不是单调的,因此不能用尺取法。做法是枚举左端点i,然后在[i,n]这个范围内用线段树查找最左边的pre>=S+pre[i-1]的
阅读全文
HDU 1255 覆盖的面积 ——(线段树+扫描线)
摘要:又做了一题扫描线以后对节点的覆盖标记理解的更加深刻了。 代码如下:
阅读全文
HDU 3265 Posters ——(线段树+扫描线)
摘要:第一次做扫描线,然后使我对线段树的理解发生了动摇= =。。这个pushup写的有点神奇。代码如下:
阅读全文
2017 ZSTU寒假排位赛 #1
摘要:题目链接:https://vjudge.net/contest/147102#overview。 A题:给出一堆的点,要找出两条垂直的直线,一条与x轴呈45度。-->使得所有的点到任意一条直线的最短曼哈顿距离(具体见题意描述)的最大值最小。做法是先把坐标轴逆时针旋转45度,x'=(x-y)/sqrt
阅读全文
UVA 11853 Paintball ——(dfs+圆交判定)
摘要:题意:给出一个1000*1000大小的矩阵,里面有若干圆,表示障碍物,现在要找出从左边到右边的一条通路,输出入口和出口的坐标,如果有多答案,输出y值最大的答案。 分析:从与上面相连的圆开始dfs,每次找与之相交的圆作为dfs的路径,如果能访问到下面,那么左边和右边肯定是不连通的;否则,连通。并且在d
阅读全文
Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined)
摘要:A题,直接开map统计需要的字母即可。但是样例1的单词不是题目中的那个单词,被坑了一次。不过学习了min原来可以min({1,2,3});这样写来比较多个参数。 B题,类似于筛法nlogn即可。但是题目中说了,如果只有一个宠物,是不会自己打自己的,因此如果只有一个1,答案应该是1(也即答案至少为1)
阅读全文
CodeForces Good Bye 2016
摘要:A题,水题略过。 B题,也水,但是想复杂了。只要运动超出[0,20000]的范围就算不可能了。 C题,我自己的方法是解不等式,然后取最大的答案即可。代码如下: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #i
阅读全文
Codeforces Round #388 (Div. 2)
摘要:A题B题,水的不行,跳过。 C题,每一个人都肯定消灭掉后面的一个字母不同的人,那么用队列保存两个阵营的人的位置,每一轮以后都让位置加上n即可。具体见代码: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #inc
阅读全文
CodeForces 754C Vladik and chat ——(xjbg)
摘要:虽然是xjbg的题目,但是并不很好做。 题意不难理解。读入有点麻烦。做法是先正着推每段对话的?可能是谁说的,然后反过来选择即可。正推时,其中vis数组表示谁已经被用过了,cnt表示该组当前可以选择几个,choose[i][j]表示第i段对话中,选择第j个名字作为说话者是不是可能的。 那么正推时就不难
阅读全文
CodeForces 754D Fedor and coupons ——(k段线段最大交集)
摘要:还记得lyf说过k=2的方法,但是推广到k是其他的话有点麻烦。现在这里采取另外一种方法。 先将所有线段按照L进行排序,然后优先队列保存R的值,然后每次用最小的R值,和当前的L来维护答案即可。同时,如果Q的size()比k大,那么就弹出最小的R。 具体见代码: 另外,输出方案的方式也值得注意一下。
阅读全文