训练日记7.10

一、训练赛情况

  1. A. Broken Keyboard(AC)(水题)
    题意:
    有一些好的按键和一些坏的按键,按好的出现一个字符,按坏的末尾会出现两个字符,问你哪些是好的。
    思路:
    只要判断字符是不是连续出现2次,就行了。

  2. Binary Palindromes
    题意:
    有n个01串,可以任意交换串内或串和串间的字符。问最多能获得多少回文串。
    思路:
    1.n个字符串,我们一定可以创造出n-1个回文串,我们只需要判断最后一个能否成为回文串即可;
    2.字符串分为两种:奇数长度的和偶数长度的,其中奇数长度的一定是由奇数个0/1加上偶数个0/1,偶数长度的一定是由偶数个数的0和1相加;
    3.在最开始统计此次所有字符串0的总和的奇偶性zero和1的总和的奇偶性one(值为1代表奇数,0代表偶数),同时计算出奇数长度串的个数,每有一个奇数串,对zero和one做出变化,最后判断zero和one是否都为0即可;

  3. C. Minimize The Integer(AC)
    题意:
    给你一串数,可以交换相邻且奇偶性不同的两个数。若干次这样的操作后所能得到这串数的最小值是什么。
    思路:
    读完题之后就感觉这题是贪心,但是没啥想法,又看了一遍题目,灵光一闪,题目要求只有奇偶之间可以换位置,也就是说所有奇数的相对位置是不变的,所有偶数的相对位置也是不变的。那么就开两个数组把奇偶分离储存,然后一次输出两个数组中较小的那个就行了。这个题其实也不算难,关键就是真正理解那句话。

  4. D.Salary Changing
    题意:
    有N名员工和S元钱,然后我们想知道在每一名员工有薪资要求在[li, ri]的情况下,我们如何在总共就S元钱的情况下做到员工薪资的中位数最高?
    思路:
    我们可以去二分答案这个中位数,那么,如果说右区间小于这个中位数的,我们直接加他的左区间,同样的,当右区间大于这个中位数且左区间小于这个中位数(这里提到的中位数都指的是二分答案的答案)那么就直接判断,如果现在小的还不够,就直接用小的,如果小的够多了,就让他取中位数的钱,再最后就是,左区间也大于中位数的,那么直接使用左区间即可。

  5. E1&E2.Voting
    题意:
    有 n 个人投票,每人对应一个m[i], p[i],第 i 个人 m[i] 指的是,如果有 m[i] 个人已经把票投给你了,那么他也会把票免费投给你,否则你就花费p[i]让他把票投给你。为了让所有的人都把票投给你,问你需要的最少花费是多少?
    思路:
    从后往前的遍历,如果还未投你票的人数k 满足 n - k < i (i从n递减),那么就可以免费得票,否则就需要买最便宜的票。
    我们从后往前看,因为0≤M≤N,所以我们从N反过来枚举所有的M,N、N-1、N-2……、i、…… 、0,如果现在是遍历到了i,那么如果我们要去贪心的选择的话,就是要让在目前的已选人数必须要求"≥i"才行,那么也就是说在待选区域的人数size应该满足 N - size ≥ i 才行。
    pi的处理其实就好的多了,我们可以用贪心的办法解决,如果说 N - size < i,那么,我们的size一定是偏大了,我们就可以去把偏大的部分给买通了,这时候就可以用优先队列去找这size里面的最小p值即可。

  6. F.Red-White Fence
    题意:
    给你一堆木条,一些是白色的,一些是红色的。然后要把这些木条拼到一起构成长度先递增后递减的样子,然后要求红色木条长度最长,问最后使得这个拼凑出来的多边形的周长为Qi的方案数是多少。

二、赛后总结

今天真是失了智了上来第一题就罚时了, 没仔细看题就交代码了…再简单的题也不应该掉以轻心。B题也不难只要把那句话理解好就行,回文串那个题也应该出来的,当时死活就是想不到…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值