zoukankan      html  css  js  c++  java
  • 2014 Shanghai Invitation Contest

    题目链接

    http://acm.hdu.edu.cn/search.php?field=problem&key=2014%C9%CF%BA%A3%C8%AB%B9%FA%D1%FB%C7%EB%C8%FC%A1%AA%A1%AA%CC%E2%C4%BF%D6%D8%CF%D6%A3%A8%B8%D0%D0%BB%C9%CF%BA%A3%B4%F3%D1%A7%CC%E1%B9%A9%CC%E2%C4%BF%A3%A9&source=1&searchmode=source

    A:思维题

      题意:给你n个数,Jerry可以任意对每个数进行操作,操作方法是对每个数加0,或者k的整倍数。问能不能让1---n这n个数每个数只出现一次。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 105;
    int a[maxn],cnt[maxn];
    int T,n,k;
    int main ()
    {
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&k);
            bool fg=1;
            memset(cnt,0,sizeof(cnt));
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
                if(a[i]>n)
                    fg=0;
                if(fg)
                    cnt[a[i]]++;
            }
            for(int i=1;i<=n&&fg;i++)//向后滚动
            {
                if(cnt[i]>1)
                {
                    cnt[i+k]+=(cnt[i]-1);
                    cnt[i]=1;
                }
            }
            for(int i=1;i<=n&&fg;i++)
            {
                if(cnt[i]!=1)
                    fg=0;
            }
            if(fg)
                printf("Jerry
    ");
            else
                printf("Tom
    ");
        }
        return 0;
    }

    B:题意很好懂算法是,线段树+扫描线。

    C:

    D:放置战舰(二分图)

    F:给出一个表达式的系数和变量,然后输出表达式。注意下面几个点1、第一个数、最后一个数。2、正负数。3、0,-1,1特判。4、如果全部为零,输出0。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int maxn=150;
    char s[maxn]={'0','p','q','r','u','v','w','x','y','z','j'};//10;
    int a[maxn];
    int T,n,k;
    int main ()
    {
        scanf("%d",&T);
        while(T--)
        {
            for(int i=1;i<=10;i++)
                scanf("%d",&a[i]);
            bool fg=1,ok=1;
            for(int i=1;i<=10;i++)
            {
                if(a[i])
                {
                    ok=0;
                    if(fg)//第一个
                    {
                        if(i!=10)
                        {
                            if(a[i]==1)
                            {
                                printf("%c",s[i]);
                            }
                            else if(a[i]==-1)
                            {
                                printf("-%c",s[i]);
                            }
                            else
                                printf("%d%c",a[i],s[i]);
                        }
                        else
                            printf("%d",a[i]);
                        fg=0;
                    }
                    else
                    {
                        if(i!=10)
                        {
                            if(a[i]>0)
                            {
                                if(a[i]==1)
                                    printf("+%c",s[i]);
                                else
                                    printf("+%d%c",a[i],s[i]);
                            }
                            else
                            {
                                if(a[i]==-1)
                                    printf("-%c",s[i]);
                                else
                                    printf("%d%c",a[i],s[i]);
                            }
                        }
                        else
                        {
                            if(a[i]>0)
                                printf("+%d",a[i]);
                            else
                                printf("%d",a[i]);
                        }
                    }
                }
            }
            if(ok)
                printf("0
    ");
            printf("
    ");
        }
        return 0;
    }

     J:判断安卓手机型号的大小。注意:1、如果最后一个字母是A,那么通常省略。2、如果第二个字母相同则比较后面所有的字母,否则最后一个字母不包含在内。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 105;
    char s1[maxn],s2[maxn];
    int T;
    int cmp(int s,int t)
    {
        for(int i=s;i<=t;i++)
        {
            if(s1[i]>s2[i])
                return 1;
            if(s1[i]<s2[i])
                return -1;
        }
        return 0;
    }
    int main ()
    {
        int ic=0;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s%s",s1,s2);
            int l=strlen(s1);
            if(l==5)
                s1[5]=='A';
            l=strlen(s2);
            if(l==5)
                s2[5]=='A';
            int a1=cmp(0,0);
            int a2;
            if(s1[1]==s2[1])
                a2=cmp(2,5);
            else
                a2=cmp(2,4);
            printf("Case %d:",++ic);
            if(a1==1)
                printf(" >");
            else if(a1==0)
                printf(" =");
            else
                printf(" <");
            if(a2==1)
                printf(" >
    ");
            else if(a2==0)
                printf(" =
    ");
            else
                printf(" <
    ");
        }
        return 0;
    }
    想的太多,做的太少。
  • 相关阅读:
    leetcode 【 Merge Two Sorted Lists 】 python 实现
    leetcode 【 Remove Duplicates from Sorted List II 】 python 实现
    leetcode 【 Remove Duplicates from Sorted List 】 python 实现
    leetcode 【 Remove Nth Node From End of List 】 python 实现
    leetcode 【 Linked List Swap Nodes in Pairs 】 python 实现
    i++操作非原子的验证代码
    黑马MySQL数据库学习day03 级联 多表查询 连接和子查询 表约束
    mysql 原理 ~ sql查询语句
    tidb 架构 ~Tidb学习系列(3)
    mysql 查询优化 ~ 善用profie利器
  • 原文地址:https://www.cnblogs.com/pealicx/p/6131088.html
Copyright © 2011-2022 走看看