hihoCoder简单问题合集
2018-03-31 本文已影响1人
贪婪的君子
1135:提补交卡
提取主要信息:得到最长连续天数
在一张补交卡提交之后,总能得到比之前所有连续天数更长的数据。
简单来说,我们需要明白,这里的连续天数是如何求到的。显然,两个连续出现的未签到日期的序号之差即为连续天数,而求其中最大,则是找到其中具有最大差值的两个序号。
一言以蔽之:只有连续使用补交卡才能获得最大值——即贪心算法+枚举。
伪代码如下:
if N > M then : return 100;
days[0] = {0};
days[1...M] = { 未签到日期 };
max = 0;
for i = 0 to days.length then:
max = days[N]-days[0] > max ? (days[N]-days[0]) : max;
这个问题只要明白连续天数所具有的含义,就已经做完了。
1135:Magic Box
这是一道枚举题,非常简单,甚至不需要提取有效信息,阅读完之后立刻能想到枚举。
直接伪代码:
input = 输入的子串;
x[3] = 爆炸时气球个数差;
ryd[3] = 各种颜色的统计;
for i = 1 to input.length then :
统计各种颜色的总数;
if 两两颜色差值是否与爆炸时气球个数差相同 then :
max = 当前箱中气球总数 > max ? 总数 : max;
清空ryd;
这里只有分析,具体的AC代码和题目链接我都放在了GitHub上,点蓝字即可转到,或者:https://github.com/ai977313677/hihoCoder
如果你有更好的想法,欢迎讨论。