Codeforces Round #375 (Div. 2) 题目解析&总结

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题:待更

你可能感兴趣的:(codefoces)