D-Distinct Split
![](https://i-blog.csdnimg.cn/blog_migrate/9fa47eff0562dc7a02268c3dcd9003fc.png)
题目意思是说,给你一个字符串,你可以在任意位置将其分为两半,每一半的值都是f(X)的值,f(x)代表了字符串中字母的种类。
分割出来的字符串尽可能包含多的字母种类以及少的重复字母——正确的分割位置一定在吃下新字母的地方,因为左半字符串吃下新字母,右半字符串就可能失去新字母。
所以,对每个可能的位置进行检验即可。
![](https://i-blog.csdnimg.cn/blog_migrate/50140815a027e8dc8f1f4957282905b6.png)
E- Negatives and Positives
![](https://i-blog.csdnimg.cn/blog_migrate/68f8c35c95c4d140714d5428f3441a38.png)
题目大意是说,给定一个包含一定数据的列表,你可以让任意相邻的两数正负翻转,操作次数不限,最终要是的列表的各项和最大。
根据实际操作可以发现,通过多次操作,可以令任意两个位置的数正负翻转,所以位置不是问题。
正数及零没必要翻转,只用考虑负数。
偶数个负数可以都被转换为负数,奇数个负数可以把负号转给绝对值最小的数
根据以上思想,求解为
![](https://i-blog.csdnimg.cn/blog_migrate/fb8341cad190b7a05f488e451a5449ca.png)
G1- Teleporters
![](https://i-blog.csdnimg.cn/blog_migrate/c3192f1482f27bc7c0287cb1117bafdb.png)
题目大意是说,给定一个列表,列表各项的值代表从该项使用传送器回到原点所要花费的硬币,而这移动到该项也需要花费硬币,每一步一个硬币,而最终要求,给你一定的硬币,你最多能用几个传送器。
思路很简单,遍历列表每一项,求出每一项对应的花费。
升序排序后从第一项开始,将每次要花的钱和剩下的钱比较(代码部分选择了花费总和和给定总和比较)。
特殊情况特殊处理,如果给了很多钱,导致可以用完所有传送器,就要在最后一次比较中再分类。
![](https://i-blog.csdnimg.cn/blog_migrate/14911672a4402c75430245d7f64cb2d9.png)