我是如何想到用最简单易懂的解法的

nico和niconiconi

http://www.nowcoder.com/questionTerminal/70a03345bae6499ea4338ebc3a0b60e9

我是如何想到用最简单易懂的解法的

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n;
ll a,b,c;//范围是1e9,但相加就要超,所以用ll 
ll f[300010]={0};
char s[300010];
int main(){
    scanf("%d%lld%lld%lld",&n,&a,&b,&c);
    scanf("%s",s);
    //贪心,每一个位置的最大分数 
    for(int i=1;i<=n;i++){
        f[i]=max(f[i],f[i-1]);
        if(s[i-1]=='n' && s[i]=='i' && s[i+1]=='c' && s[i+2]=='o'){
            f[i+3]=max(f[i+3],f[i-1]+a);
            if(s[i+3]=='n' && s[i+4]=='i'){
                f[i+5]=max(f[i+5],f[i-1]+b);
                if(s[i+5]=='c' && s[i+6]=='o' && s[i+7]=='n' && s[i+8]=='i')
                    f[i+9]=max(f[i+9],f[i-1]+c);
            }
        }
    }
    printf("%lld",f[n]);
    return 0;
}
全部评论

相关推荐

若怜君欢:驾驶证去掉吧,PPT啥的也去掉,本硕课程去掉,导师和研究方向去掉;加入本硕排名(好才写);技能栏加入你会的那些控制算法和滤波算法,这个比你会啥啥啥软件更有用;获奖写上去,奖学金啊,有没有专利啊之类的 电机和硬件这一块,属于传统制造业,制造业实习并不多。多投一些攒攒经验,有实习最好,没有也不需要焦虑(制造业实习其实除了转正,没多大用处) 最后,划重点,等秋招开始后,把你所有社交软件都发一份简历上去,并经常更新,找人内推你!
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务