2017 ZSTU寒假排位赛 #4】的更多相关文章

题目链接:https://vjudge.net/contest/149498#overview. A题,水题,直接按照题意模拟一下即可. B题,我用的是线段树.大力用的差分标记(上次听zy说过,下次再做些类似的题目好了),lyf的方法也不错. C题,不难发现,00是不能变成其他的,而11可以变成10或者01,01/10也可以变成11.那么,如果字符串a中全是0,而b中有1,那么a是不能变成b的:同理,如果b全是0,而a中有1存在,也是不能够转化的. D题,floyd即可.具体见代码: #incl…
题目链接:https://vjudge.net/contest/147102#overview. A题:给出一堆的点,要找出两条垂直的直线,一条与x轴呈45度.-->使得所有的点到任意一条直线的最短曼哈顿距离(具体见题意描述)的最大值最小.做法是先把坐标轴逆时针旋转45度,x'=(x-y)/sqrt2, y'=(x+y)/sqrt2.然后我们把最短曼哈顿距离和最短点到直线距离做个转化,求后者,然后乘sqrt2可以得到前者.因此最后的x'=x-y,y'=x+y.之后,二分答案mid,用一条竖着的线…
题目链接:https://vjudge.net/contest/147632#overview. A题,状态压缩一下然后暴力即可. B题,水题,略过. C题,有负数,前缀和不是单调的,因此不能用尺取法.做法是枚举左端点i,然后在[i,n]这个范围内用线段树查找最左边的pre>=S+pre[i-1]的点,更新答案即可(和上次的巴比伦&&圣杯类似).代码如下: #include <stdio.h> #include <algorithm> #include <…
题目链接:https://vjudge.net/contest/149845#overview. A题,水题. B题,给出 p个 第一个人的区间 和 q个第二个人的区间,问[l,r]中有多少个整数满足,第二个人的区间范围全部增加这个整数以后 和第一个人的区间有交集.以为是个数据结构题,后来才发现p和q的范围才50.那么暴力枚举位移dt,然后对第二个人的区间做差分标记然后看看有没有交集即可.代码如下(我发现数组越界了也能A...): #include <stdio.h> #include <…
题目链接: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,那么带入第二个式子得,x=m(kb+1).已经知道的m的范围,因此m的和为b(b-1)/2.然后因为k的范围已知,那么枚举k累和即可得到答案.注意m算好以后要先mod,不然太大了后面会溢出.代码如下: #include <…
题目链接:https://vjudge.net/contest/148901#overview. A题,排序以后xjbg即可. B题,弄个数组记录当前列是不是删除以及当前行是不是已经大于下一行然后乱搞即可. C题,线段树写的比较无脑,但是可以直接搞,在遍历的时候记录最大的,然后继续找的时候更新答案即可. D题,题意是给出m个限制条件,每个限制条件表示[L,R]范围内&和为x.问是不是存在这样的数组.方法是线段树记录区间内&的和.然后m组每次更新[L,R]都使得|上x,因为要&为1,…
题目链接:https://vjudge.net/contest/148543#overview. A题:n个罪犯,每个人有一个犯罪值,现在要从里面选出连续的c个人,每个人的犯罪值都不能超过t,问选法的种类数.O(n)xjbg一下即可: #include <stdio.h> #include <algorithm> #include <string.h> #include <map> #include <set> #include <vect…
题目链接:https://vjudge.net/contest/147974#overview. A题,费用流,不会..跳过了. B题,给一个图,问至少添加几条边能成为强连通图.显然缩点,要使得成为一个scc,任意一个点都要至少一个入度和出度,而一条边可以提供一个入度和出度,因为答案为max(入度为0的点,出度为0的点).如果要求最多能添加几条使得还不是scc,则参照:最多添加几条使得还不是scc.如果是无向图问至少添加几条使得是边双联通,则参照:至少添加几条使得边双联通. C题,线段树区间合并…
在家都变的懒惰了,好久没写题解了,补补CF 模拟 A - Wet Shark and Odd and Even #include <bits/stdc++.h> typedef long long ll; const int N = 1e5 + 5; const int INF = 0x3f3f3f3f; int main(void) { std::vector<int> vec; int n; scanf ("%d", &n); ll sum = 0;…
2017杭电ACM集训队单人排位赛 - 6 排名 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 59 1 X X 1 1 X X 0 1 X X 1003 bx回文 dp[i]表示到串长度为i时的最大愉悦值 枚举以i为回文串中心,串为奇数时候,为中心,偶数时,为偏左部分的中心点. dp[i+k] = max(dp[i-k]+a[2*k+1]); dp[i+k+1] = max(dp[i-k]+a[2*k]); 多组样例注意初始化,这…