zoukankan      html  css  js  c++  java
  • 【usaco】1.1

    你的飞碟在这儿Your Ride Is Here(难度:入门难度)

    题目链接

    题目大意

    emmmm 输入两个字符串,问他们每个字母的asco码相乘后字符串是否相等。

    思路

    一道水题?(雾)

    错误代码:

    #include<cstdio>
    #include<cstring>
    using namespace std;
    char s1[10],s2[10];
    int main()
    {
        scanf(" %s %s", s1+1,s2+1);
        int len1=strlen(s1+1),len2=strlen(s2+1);
        int ans1=1,ans2=1;
        for(int i=1;i<=len1;i++)
            ans1*=(s1[i]-'A'+1)%47;
        for(int i=1;i<=len2;i++)
            ans2*=(s2[i]-'A'+1)%47;
        if(ans1==ans2)
            printf("GO");
        else
            printf("STAY"); 
        return 0;
    }
    

    注意ans1和ans2最后没有%47,所以最后的答案全部输出STAY,50分。

    代码

    #include<cstdio>
    #include<cstring>
    using namespace std;
    char s1[10],s2[10];
    int main()
    {
        scanf(" %s %s", s1+1,s2+1);
        int len1=strlen(s1+1),len2=strlen(s2+1);
        int ans1=1,ans2=1;
        for(int i=1;i<=len1;i++)
            ans1*=((s1[i]-64)%47);
        for(int i=1;i<=len2;i++)
            ans2*=((s2[i]-64)%47);
        ans1%=47;
        ans2%=47;
        if(ans1==ans2)
            printf("GO");
        else
            printf("STAY"); 
        return 0;
    }
    

    贪婪的送礼者Greedy Gift Givers(难度:普及-)

    题目链接

    题目大意

    在一个聚会上,人们互相赠送钱,问聚会结束后每个人分别少了多少钱或多了多少钱。

    思路

    边读入边记录每个人的钱数,用结构体表示每个人的名字和他的钱数。模拟。

    错误代码:

    代码

    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n;
    struct node{
        char name[20];
        int sum;
    }student[20];
    int main()
    {
        scanf("%d", &n);
        for(int i=1;i<=n;i++)
            scanf(" %s", student[i].name);
        for(int i=1;i<=n;i++)
        {
            char s[20];
            int idx,mon,cnt,mon_aq,mon_af,idx1;
            scanf(" %s", s);
            for(int j=1;j<=n;j++)
                if(strcmp(s,student[j].name)==0)
                {
                    idx=j;
                    break;
                }
            scanf("%d%d", &mon, &cnt);
            if(cnt==0)
                continue;
            mon_aq=mon/cnt;
            mon_af=mon_aq*cnt;
            student[idx].sum-=mon_af;
            for(int j=1;j<=cnt;j++)
            {
                scanf(" %s", s);
                for(int k=1;k<=n;k++)
                    if(strcmp(s,student[k].name)==0)
                    {
                        idx1=k;
                        break;
                    }
                student[idx1].sum+=mon_aq;
            }
        }
        for(int i=1;i<=n;i++)
            printf("%s %d
    ", student[i].name,student[i].sum);
    }
    

    黑色星期五Friday the Thirteenth(难度:普及-)

    题目链接

    题目大意

    从1900年到1900+n-1的时候每个月的13号是星期几。最后输出7个数,表示星期几

    思路

    直接通过每个月分的天数来统计即可。

    错误代码:

    代码

    #include<cstdio>
    using namespace std;
    int n,last=3;
    int month[12]={31,31,28,31,30,31,30,31,31,30,31,30};
    int ans[7];
    int main()
    {
        scanf("%d", &n);
        for(int i=1900;i<=1899+n;i++)
        {
            if(i%400==0 || (i%100!=0 && i%4==0))
                month[2]=29;
            for(int j=0;j<12;j++)
            {
                last=(last+month[j])%7;
                ans[last]++;
            }
            month[2]=28;
        }
        for(int i=0;i<7;i++)
            printf("%d ", ans[(i+6)%7]);
        return 0;
    }
    

    坏掉的项链Broken Necklace(难度:普及-)

    题目链接

    题目大意

    从项链的两边开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事,问最多收多少珠子。

    思路

    把输入的字符串复制两边来模拟一个环形,然后枚举每个点。

    错误代码:

    
    

    代码

    #include<cstdio>
    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    int n;
    string s;
    int calc(int idx)
    {
        int ans=0;
        char a1=s[idx];
        char a2=s[idx+1];
        for(int i=idx;;i--)
        {
            if(s[i]==a1 || s[i]=='w')
                ans++;
            else
                break;
        }
        for(int i=idx+1;;i++)
        {
            if(s[i]==a2 || s[i]=='w')
                ans++;
            else
                break;
        }
        return ans;
    }
    int main()
    {
        scanf("%d", &n);
        cin>>s;
        s=s+s+s;
        int ans=0;
        for(int i=n;i<2*n;i++)
        {
            if(s[i]==s[i+1])
                continue;
            if(s[i]=='w')
            {
                s[i]='r';
                ans=max(ans,calc(i));
                s[i]='b';
                ans=max(ans,calc(i));
                s[i]='w';
            }
            ans=max(ans,calc(i));
        }
        ans=min(ans,n);
        if(ans==0) 
            ans=n;
        printf("%d", ans);
        return 0;
    }
    
  • 相关阅读:
    使用grpc C++功能
    华为任正非访谈
    苹果产品
    异步编程
    基于磁盘存储
    spring 应用
    java简单框架设计
    消息队列架构
    03 java 基础:注释 关键字 标识符 JShell
    02 java 基础:java 文件名与类名关系 CLASSPATH
  • 原文地址:https://www.cnblogs.com/Wolfbeyond/p/10460331.html
Copyright © 2011-2022 走看看