A题:
题目连接:http://codeforces.com/contest/723/problem/A
题意:三个人同时到某个位置,问移动距离总和最小是多少
思路:到中位数是最优的,详情查询“带权中位数”有证明
题解:https://blog.csdn.net/xiang_6/article/details/83549914
B题:
题目连接:http://codeforces.com/contest/723/problem/B
题意:给定一个字符串,问括号外面最长的单词长度以及括号内单词个数
思路:直接模拟
题解:https://blog.csdn.net/xiang_6/article/details/83549939
C题:
题目连接:http://codeforces.com/contest/723/problem/C
题意:给定n个数,a_i 表示第i首歌曲由 a_i 号歌手演奏,但是主人公只喜欢编号 1-m 的歌手,
现在他要改变某些歌曲的演奏人员,这样的话他喜欢的一些歌手会演奏若干首曲目,令b_k 表示第k号歌手演奏的曲目数,现在主人公要最大化b数组的最小值,其次要尽量少的做出改变;
思路:首先我们可以知道这个最小值 t_,最大就是 n/m 下取整;然后就是改变,先挑编号大于m的歌手改变,把演奏曲目小于t_的歌手的编号以及差的值保存起来,然后进行操作,当没有大于m的歌手时,在改变多余的歌手;
注意:不必要把所有的歌手都换成编号1-m的,因为这个我错了一次
题解:https://blog.csdn.net/xiang_6/article/details/83549968
D题:
题目连接:http://codeforces.com/contest/723/problem/D
题意:给定n*m 的一片陆地,陆地周围都是还,这个片陆地中存在湖用‘.’ 表示,土地用‘*’表示,跟还连着的湖不算湖;;;
现在要填平一些湖使得湖的数目恰好是k个,,问 最小需要填平的面积
思路:首先dfs把所有的湖找出来,以及它们的大小,维护一下,肯定先挑小的湖填,然后枚举把符合当前编号的点的编号设成-1,(其实可以直接修改s数组,改成‘*’,,当时傻),然后输出
题解:https://blog.csdn.net/xiang_6/article/details/83549996
E题:
题目连接:http://codeforces.com/contest/723/problem/E
题意:给定n个点,m条边的无向图,现在要把m条边有向化,找一种方案使得 入度等于出度的结点的数量尽量多,
思路:首先我想到的就是只要度数为偶数的结点多可以为答案做出贡献,也就是最后他们的出入度数应该是一样的,但是我没有想到怎么构造方案
首先我们要知道度数为奇数的结点的个数是偶数个,每个结点的度数都是偶数的无向图一定存在欧拉回路,并且满足出入度相同,那么我们就可以给图加一个新结点(n+1),把度数为奇数的结点跟他连边,这样这个图就满足上述所说,并且满足最优解就是原图中度数为偶数的结点个数;
但是原图可能是不连通的,这样我们就把新图的n+1个结点跑dfs,中间输出,同时删边,
求解欧拉回路的一个算法:
题解:https://blog.csdn.net/xiang_6/article/details/83550010
F题:待更