A
你想去参加一个选举,这个选举有n个人投票,你希望所有人都能选你。让第i个人选你的方法有两个:1.给这个人p[i]块钱。2.有m[i]个别人选了你。问让所有人都选你的最小花费是多少。
解析看G题
B
给你一个数n,可能包含前导0。你可以交换n中两个相邻的数,如果这两个数是求余2的余数是不同的。求你所能得到的n的最小值。
这个题也不写题解了,只要思路想明白了,代码一点问题都没有。
思路/感想: 这个题我一开始还想的是贪心,找某个最优的替换规则,但后来都失败了。失败了很多次之后,突然想到了答案。
因为这n个数中只有相邻的一奇一偶两个数才能交换位置,那么这n个数的奇数部分和偶数部分是相对独立的。因此我们可以把这n个数的奇数部分和偶数部分拆成两个独立的数组,每次都先输出最小的。
如:246432
奇数部分:3
偶数部分:24642
1)2<3所以输出一个2。
2)4>3所以输出一个3。
3)奇数部分没有数了,所以直接输出剩余的所有偶数4642。
因此答案是234642。
C
P的键盘有一些键坏了,为了确定坏了哪些键,P输入了一个字符串s在屏幕上。如果a的键正常那么每次输入就会输出一个a到屏幕上,如果a的键坏了,那么每次输入就会输出两个a到屏幕上。给你这个字符串s,问那些键是没坏的。
水题。
D
你有n名员工和s美元。你要给这n名员工发工资,每个人获得的工资在[ l[i],r[i] ]之间。问怎么才能在最多花s美元的情况下,让员工工资的中位数最高。
E
你有n块白木板和k块红木板,每块木板都有它的长度。你要把这些木板排成一个先上升后下降的趋势,这个栅栏只有一块红木板,并且这块红木板要是栅栏中最高的。问最后使得这个拼凑出来的多边形栅栏的周长为Q[i]的方案数是多少。
待补。
F
给你n个由0和1组成的字符串。你可以选择随意两个字符串中的两个字符,然后交换它们。(swap(s[x][a],s[y][b]))问通过这样的交换,最多可以产生多少个回文串(操作次数不限)。
思路/感想: 这个题能做出来感觉也有点侥幸,因为我的解法我并没有想的特别清楚,所以逻辑可能也不是那么的严谨(但确实是一遍就过了)。
当一个字符串对称的两个位置上的两个数不相等时,肯定是一个是0,一个是1。这时我们就有两种选择:换一个1过去或者换一个0过去。所以就有了一个万能的替换(既可以把别的地方的1换成0,也可以把别的地方的0换成1)。
因为这是万能替换,因此可以自己中和自己。(这不太好说,放个代码把)
if(s[i][j]!=s[i][s[i].size()-j-1])
{
if(sum>0) sum--;
else sum++;
}
然后如果sum还是大于0。那么还有那是可以替换的,而且还不影响字符串的对称性呢?:长度为奇数的字符串的中间那个数。它还可以中和万能替换。
如果万能替换全部被中和,那么结果即为n(所有串都变为了回文串)。否则就把剩下的万能替换都塞进某一个字符串中,并破坏的它的对称性,则有结果即为n-1。
G
你想去参加一个选举,这个选举有n个人投票,你希望所有人都能选你。让第i个人选你的方法有两个:1.给这个人p[i]块钱。2.有m[i]个别人选了你。问让所有人都选你的最小花费是多少。
就是上面A题的困难版,将数据范围扩大了。
E2. Voting
感想
这次的比赛过程也算是比较正常的,该做的都做出来了。做不出来的离做出来还有比较大的差距,进步也不是说有就有的,继续积累把。
本文深入探讨了算法竞赛中的解题策略与思考过程,通过具体题目解析,分享了解决复杂算法问题的心得与技巧,包括选举策略优化、数值操作、键盘故障诊断、薪资分配策略、木板排列组合、字符串对称性分析等。

1266

被折叠的 条评论
为什么被折叠?



