贪婪的君子程序员

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
如果你有更好的想法,欢迎讨论。

上一篇 下一篇

猜你喜欢

热点阅读