zoukankan      html  css  js  c++  java
  • 写在杭电热身赛2之后

      11点40左右感到新校,我们到的时候才几个人啊.

    期间随便看了看网站,也就是苹果的发布会,等到12点开始做题了,不过队友还没有来啦,首先A了一道水水水题

    A Computer Graphics Problem

    按格式输出不同的符号而已
    直接贴代码了
    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int main()
    {
        int n,x;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&x);
            x = x/10;
            printf("Case #%d:
    ",i);
            printf("*------------*
    ");
            for(int j=10-x;j>0;j--)
                printf("|............|
    ");
            for(int k=x;k>0;k--)
                printf("|------------|
    ");
            printf("*------------*
    ");
        }
        return 0;
    }
    

    The Number Off of FFF

    做完这道呢,队友也都来了,就进入了正式的比赛节奏,我先准备做最后一道The Number Off of FFF,WA了很久不知道错在哪里

    最后马骋A过了,看了下,基本思路一样啊

    我为什么WA了啊,题目意思很简单啊,就是报数,后面一个跟着前面一个报数,每次加一,有且只有一个报错了

    我用的数组存了,马骋用的直接用的两个int 保存前后的,时间也快多,开始没想到

    先贴AC代码

    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<iostream>
    using namespace std;
    
    int main()
    {
        int t;
        cin>>t;
        for(int i=1; i<=t; i++)
        {
            printf("Case #%d: ",i);
            int n,a,b,j;
            bool iff=0;
            cin>>n>>a;
            for(j=2; j<=n; j++)
            {
                cin>>b;
                if(b!=a+1)
                {
                    printf("%d
    ",j);
                    iff=1;
                    break;
                }
                a=b;
            }
            for(; j<n; j++) scanf("%d",&a);
            if(!iff) printf("1
    ");
        }
        return 0;
    }
    

     然后是我的WA

    #include <iostream>
    #include <cstdio>
    typedef long long ll;
    using namespace std;
    
    int  num[10005];
    int main()
    {
        int t,n,x;
        scanf("%d",&t);
        for(int ii=1;ii<=t;ii++)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&num[i]);
            }
            x=1;
    
            for(int i=2;i<=n;i++)
            {
                if(num[i]!=num[i-1]+1)
                {
                    x=i;
                    break;
                }
            }
            printf("Case #%d: %d
    ",ii,x);
        }
        return 0;
    }
    

     明天继续写,室友要碎觉了

    有些东西不写下来就会忘记的

    这道题目不会做,开始随便写了个暴力测试数据,发现一个规律,就是所有以0结尾的数x,从0到x各位上的数的和为10的倍数的数的数量为x/10-1

    就是用这个规律,碰巧过了这一道题目,有人说可以用什么数位dp,表示实在不会的说

    贴代码

    #include <iostream>
    #include <cstdio>
    using namespace std;
    long long c;
    
    bool isGood(long long x)
    {
        long long count  = 0;
        while(x!=0)
        {
            count += x % 10;
            x=x/10;
        }
        if(count % 10 == 0)
            return true;
        return false;
    }
    
    long long NUM(long long a , long long b)
    {
        long long cc=0;
        for(long long i = a; i<=b; i++)
        {
            if(isGood(i))
            {
                cc++;
            }
        }
        return cc;
    }
    int main()
    {
        long long  t;
        long long x,y;
    
        scanf("%I64d",&t);
        for(long long ii=1; ii<=t; ii++)
        {
            c=0;
            scanf("%I64d %I64d",&x,&y);
            long long xa = (x-1) / 10 * 10;
            long long ya = y / 10 * 10;
            long long aa = (x-1) /10 - 1 + NUM(xa,x-1);
            long long bb = y/10 - 1 + NUM(ya,y);
            c = bb - aa;
    
            printf("Case #%I64d: %I64d
    ",ii,c);
        }
        return 0;
    }
    

    Naive and Silly Muggles

    这道题是最小包围圆,几何体,直接上模版

    #include<stdio.h>
    #include<math.h>
    /*求三点的圆心和半径的函数*/
    void sdi(double x1,double y1,double x2,double y2,double x3,double y3,double *x0,double *y0,double *r)
    {
        *x0=((y3-y1)*(y2*y2-y1*y1+x2*x2-x1*x1)+(y2-y1)*(y1* y1-y3*y3+x1*x1-x3*x3))/(2*(x2-x1)*(y3-y1)-2*(x3-x1)*(y2-y1));
        *y0=((x3-x1)*(x2*x2-x1*x1+y2*y2-y1*y1)+(x2-x1)*(x1*x1-x3*x3+y1*y1-y3*y3))/(2*(y2-y1)*(x3-x1)-2*(y3-y1)*(x2-x1));
        *r=sqrt((x1-*x0)*(x1-*x0)+(y1-*y0)*(y1-*y0));
    }
    /*求两点间的距离*/
    void ldi(double x1,double y1,double x2,double y2,double *r)
    {
        *r=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    }
    /*判断三点构成的圆是否包含其他的任意点*/
    int bji(int n,double *x,double *y,double r)
    {
        int i;
        for(i=1; i<=n; i++)
        {
            if(r<sqrt((x[0]-x[i])*(x[0]-x[i])+(y[0]-y[i])*(y[0]-y[i])))
                return 0;
        }
        return 1;
    }
    
    int main()
    {
        int n,i,j,k,t;
        double xx,yy;
        double x[120],y[120],x0,y0,r,s;
        scanf("%d",&t);
        for(int ti = 1;ti<=t;ti++)
        {
            n=3;
            /*输入所有点*/
            for(i=1; i<=n; i++)
            {
                scanf("%lf %lf",&x[i],&y[i]);
            }
    
            r=0;
            s=0;
            x[0]=x[1];
            y[0]=y[1];
            /*先求出两点间的最长距离。以这两点的距离为直径画一个圆。*/
            for(i=1; i<n; i++)
            {
                for(j=i+1; j<=n; j++)
                {
                    ldi(x[i],y[i],x[j],y[j],&s);
                    if(s>r)
                    {
                        r=s;
                        x[0]=(x[i]+x[j])/2;
                        y[0]=(y[i]+y[j])/2;
                    }
                }
            }
            /*如果包含了所有的点那么 就是所求的解*/
            if(bji(n,x,y,r/2))
            {
                scanf("%lf %lf",&xx,&yy);
                printf("Case #%d: ",ti);
                double disss;
                ldi(x[0],y[0],xx,yy,&disss);
                if(disss <= r/2)
                    puts("Danger");
                else
                    puts("Safe");
            }
            /*如果不包含所有的点那么 就是三点所确定的圆是我们所求的解*/
            else
            {
                s=1000;
                r=0;
                for(i=1; i<=n-2; i++)
                {
                    for(j=i+1; j<=n-1; j++)
                    {
                        for(k=j+1; k<=n; k++)
                        {
                            sdi(x[i],y[i],x[j],y[j],x[k],y[k],&x[0],&y[0],&r);
                            if(bji(n,x,y,r)&&r<s)
                            {
                                s=r;
                                x0=x[0];
                                y0=y[0];
                            }
                        }
                    }
                }
                scanf("%lf %lf",&xx,&yy);
                printf("Case #%d: ",ti);
                double disss;
                ldi(x0,y0,xx,yy,&disss);
                if(disss <= s)
                    puts("Danger");
                else
                    puts("Safe");
    
            }
        }
        return 0;
    }
    

     现场就做出来了4个题目,给上交的AK大神们跪了

     
  • 相关阅读:
    iOS 开发学习之 User Interface(2)UIWindow 视窗
    iOS 开发学习之 User Interface(1)APP 生命周期
    OC-学习Tips
    初识Objective-C
    Android代码报错:setContentView(R.layout.activity_main)
    解决Discuz! info: MySQL Query Error
    技术网站
    java调用机器上的shell脚本
    素材网、图片库
    database工具
  • 原文地址:https://www.cnblogs.com/wejex/p/3316023.html
Copyright © 2011-2022 走看看