太菜了,心态炸了。QAQ
A-Vertices in the Pocket()
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4100
题目大意:给出T组合数据,每组数据n个点,m次询问,每次有两种情况,1.x,y之间链接一条边。2.如果这个图加入k条边,输出最少的联通块数和最多的联通快数。注意,连点的时候,一对点只能连一条边,即x y连后,不能再连x y了。
思路:看着像CF里面的一道题,当时猛哥读出来的时候说这个先放一放,最后写,结果最后也没有写。。。
最少的联通快个数很好求,当前联通快个数-k即可。(在不同的联通快之间连边),注意联通快的最小个数为1.
剩下就是求最大的联通块个数了。我们已经有一些联通块了,(操作1给出的联通快可以用并查集来维护)。同时用权值线段树维护联通快的大小,可用边的数量,联通快数量。
剩下的就是找最少链接几个联通快能把这k条边都用上。我们贪心的每次都选择最大的联通快,然后是次大的,再次的。。
选到最后,二分剩余的联通快的个数,取最小值即可。
ACCode:
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
B-Element Swapping()
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4101
看的我头疼,一脸蒙蔽,溜了溜了。
队友做的,题解:https://blog.csdn.net/henucm/article/details/89742028
D-Traveler
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6005
题目大意:一个人一开始在点1,要走到点n,其中每个点都要走一遍,问路径。行走的方式有四种:
1. i->i-1 2.i->2i 3.i->2i+1 4.i->int[i/2]
每个点只能走一次,每一步都不能超过n。
思路:试着写了几个点,画了波图,发现可以看成这样的:![2019浙江ACM省赛部分题解-ABDEFGHIJK_第1张图片](http://img.e-com-net.com/image/info8/22ab00c8ce99497b892e510d95d5402a.jpg)
直接一层一层的刷新就行了,跟本没有走不到的。具体看代码就好了
ACCOde:
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
E-Sequence in the Pocket
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4104
题目大意:n个数,每个数都可以放在一开始,给你一个排列,看最少经过多少次修改能使队列单调不减
思路:队友写的,我在摸鱼
ACCode:
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
F-Abbreviation
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4105
题目大意:除了首字母外,其他定义为元音的字母都去掉。
思路:模拟就行了
ACCode:
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
G-Lucky 7 in the Pocket
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4106
题目大意:在n后面距离n最近的那个数,可以被7整除但不可以被4整除,输出。
思路:签到提,模拟。
ACCode:
int main(){
int T;scanf("%d",&T);
while(T--){
int n;scanf("%d",&n);
for(int i=n;1;++i){
if(i%7==0&&i%4!=0){
printf("%d\n",i);
break;
}
}
}
}
H-Singing Everywhere
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4107
题目大意:给出n个数,如果存在一个数a[i]>a[i-1]&&a[i]>a[i+1]那么就有一个“峰”,问最多删掉一个数,这个数组的最小峰的个数是多少?
思路:模拟,因为删掉一个数只会对前面和后面那个数产生影响,枚举模拟即可。
ACCode:
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
I-Fibonacci in the Pocket
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4108
题目大意:给你一个斐波那契数列,然后问你第x项加到第y项是奇数还是偶数,奇数输出1,偶数输出0.
思路:找到规律后发现三个一组都是奇奇偶,那么就可以%3直接判断了。
ACCode:
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
J-Welcome Party()
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4109
题目大意:n个人,m个关系,然后让你找出n个人的进入房间的字典序最小的序列。房间里有不认识的人,进入后不开心。输出最小的不开心数。
思路:ZOJ栈啊!!!!!卡了我两个半小时,最后发现是爆栈了,改成BFS就过了!!换成数组模拟DFS也过了,佛了。
建好图之后,每个联通快编号最小的人先进去,优先队列来维护下一个进入的id。
ACCode:
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
K-Strings in the Pocket
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4110
文少写的,但是似乎还没发博客,于是我就先占个坑。据说是用马拉车写的。