有 3 种属性的人 a, b, ab。其中 ab 属性的人既可以当 a 也可以当 b。问如果组建一个团队要求 a, b 属性的人各一半,这个团队的最大人数是多少?
不妨设 \(a < b\) , 那么分为两种情况:
所以就是一水题……
将两个序列分成相同的块数,使得每一个块的和相同。问最多能分成几块?
类似于双指针的想法,当第一个序列的和小于第二个序列和的时候,上面的指针右移动,直到两个序列的和相同,这时块数加一,然后两个序列的和重置(反之亦然)。直到两个指针都指向了序列尾。
给定一段 01 序列,问能不能分成几个子序列,使得每个子序列都是 0 开始和结尾,且 01 交替。
一开始读错题目了…… 看漏了 01 交替这个条件,直到我 wa 了一发。
其实不用想那么多,直接模拟即可。答案用队列维护。再开个数据结构(我用队列)标记下当前这个答案队列是 0 结尾,还是 1 结尾。
那么从左到右扫一遍:
当遇到 1 的时候,查询当前是否有 0 结尾的答案队列,有,就插入到这个答案队列里,并把标记改为 1 结尾。没有,就直接输出 -1 即可。
当遇到 0 的时候,查询当前是否有 1 结尾的答案队列,有,就插入并修改标记,没有,就多开一个队列,表示这是一个新的队列,并且是 0 结尾的。
扫完之后,0 结尾的队列的个数就是子序列个数。注意这个时候, 1 结尾队列应该为空(为此,我还 wa 了一发)这里要判断一下。剩下的就是序列输出了,队列不断弹出即可。
大意是在某个给定的时间点,猫有 H 个饥饿值,然后每分钟会掉 D 点饥饿值,你需要去买一些面包给猫。每个面包降低 N 点饥饿值。每个面包的价格为 C 。但是在过了 20: 00 的时候,面包会打八折。问把猫的饥饿值降低到小于等于 0 的最小花费是多少。
很显然 20: 00 后立刻买。
20: 00 前计算立刻买和 20:00 的时候买的花费,取比较小的那一个就行了。
定义如果一个字符串为只含有两种不同字母的,那么这种字符串就是特殊的。
给定一个字符串,询问是否能分为两个特殊的字符串。
水题……计算字母种数,显然,当种数为 1 或者 大于 4 的时候,不能分成两个特殊的字符串。
当字母种数为 4 的时候一定可以。
当种数为 2,3 的时候,只要这几种字母的个数都不为 1,那么肯定能分。
写完我才发现原来都是水题……手速好慢啊
原文:https://www.cnblogs.com/ljxtt/p/12199402.html