• 7/26第三次多校


    目前有01,03,10,11,烂尾了
    官方题解

    1001
    不用高精度,,,超过44E就TAT了
    longlong就够了
    注意0的情况

    #include<cstdio>
    #include<cmath>
    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
        string st;
        while (cin>>st){
            if (st.length()>10) puts("TAT");
            else {
                long long n=0;
                for (int i=0;i<st.length();i++){
                    n = n*10 + (st[i]-'0');
                }
                //printf("n=%I64d
    ",n);
                if (!n)puts("TAT");
                else {
                    int ans=0;
                    for (;n>1;ans++){
                        n= (long long)floor((sqrt(n)));
                    }
                    if (ans<6)printf("%d
    ",ans);
                    else puts("TAT");
                }
            }
        }
        return 0;
    }

    1002_hdu5273
    这里写图片描述
    官方题解讲的略简单

    某题解
    这题意思就是让你先列出一个hi的排列,然后如果满足(hi>hi-1 and hi>hi+1)的值为1,那么c[i]这个值就能取,然后我们把第一个样例的全部情况列出来,模拟一下答案,发现公式就是(c[1]+c[n])/3+(c[2]+…+c[n-1])/2;

    某题解+1
    然后对这个全排列进行分析,对i这个位置,
    如果在中间的话,相邻就有两个元素,就是三个元素的全排列,有3!=6种情况,然而只有大的在中间,两个小的在左右这种情况有效,排列两种,所以所有情况中是1/3是符合的,所以对期望的贡献值是Ci/3;
    如果在两端的话,相邻就是一个元素了,2!=2,只有一种情况符合,所以贡献Ci/2,
    之后对1进行一下特判,答案就出来了。

    #include<cstdio>
    using namespace std;
    double c[1010];
    int main(){
        int n;
        while (scanf("%d",&n)==1){
            for (int i=1;i<=n;i++)scanf("%lf",&c[i]);
            if (n==1)printf("%.6lf
    ",c[1]);
            else {
                double ans=(c[1]+c[n])/2.0;
                for (int i=2;i<=n-1;i++)ans+=c[i]/3.0;
                printf("%.6lf
    ",ans);
            }
        }
        return 0;
    } 

    1003
    重点在骑士和皇后的情况
    骑士可以找规律或者dp搞出来
    皇后我这么搞然后挂了,cdm说一看表就是个威佐夫博弈
    http://blog.csdn.net/y990041769/article/details/21694007
    看了下,打表发现问题
    表张这样
    这里写图片描述
    跑debug里的代码
    这里写图片描述

    然后出来这个
    这里写图片描述
    不知道为什么,,,
    感觉像威佐夫博弈,然而图有点出入,
    最不明所以的是这么写还A了,我的天

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstring>
    using namespace std;
    const int N=1007;
    int  h[N][N];
    bool q[N][N];
    
    void Init(){
        memset(h,0,sizeof(h));
        for (int i=1;i<N-5;i+=3){
            h[i][i]=-1;
            h[i+2][i+1]=h[i+1][i+2]=1;
        }
    
        memset(q,1,sizeof(q));
        for (int i=1,j=1;max(i,j)<N-5;i+=2,j++)q[i][j]=0;
        for (int i=1,j=1;max(i,j)<N-5;i++,j+=2)q[i][j]=0;
    } 
    
    double phi = (1 + sqrt(5)) / 2.0;
    void debug(){
        for (int i=1;i<=30;i++){
            for (int j=1;j<=30;j++){
                bool ok=((min(i-1, j-1) != (int)(phi*abs(i-j))));
                if (ok!=q[i][j])printf("[%d][%d]->%d
    ",i,j,ok);
            }
        }
    }
    
    int main(){
        //freopen("fuck.in","r",stdin);
        int T,type,n,m;
        scanf("%d",&T);
        Init();
        //debug();
        while (T--){
            scanf("%d%d%d",&type,&n,&m);
            if (type==1) puts((n&m&1)?"G":"B");
            if (type==2) puts((n==m )?"G":"B");
            if (type==3){
                if (h[n][m]== 0)puts("D");
                if (h[n][m]== 1)puts("B");
                if (h[n][m]==-1)puts("G");
            }
            if (type==4){
                puts((min(n-1,m-1)!=(int)(phi*abs(n-m)))?"B":"G");
            }//puts((q[n][m])?"B":"G");
        }
        return 0;
    } 

    1010
    这里写图片描述
    这里写图片描述

    #include<cstdio>
    #include<iostream>
    using namespace std;
    
    int main(){
        int a,v1,v2;
        while (scanf("%d%d%d",&a,&v1,&v2)==3){
            if(!a)puts("0.0000000000");
            else if (v1<=v2)puts("Infinity");
            else {
                double ans=a*v1*1.0/(v1*v1-v2*v2);
                printf("%.10lf
    ",ans);
            }
        }
        return 0;
    } 

    1011
    10W数据,,平方过?
    当时的想法是先写个暴力T一发再说,,
    然后莫名其妙就A了
    cw分析的不错:因为距离差最多只有200000种可能。所以最多只运行200001次。。。。所以没有平方那么多,。

    #include<cstdio>
    #include<cmath> 
    #include<cstring>
    using namespace std;
    const int N=100007;
    bool vis[N<<1];
    int ax[N],ay[N];
    int n,m;
    
    bool work(){
        memset(vis,0,sizeof(vis));
        for (int i=1;i<=n;i++)
            scanf("%d%d",&ax[i],&ay[i]);
        for (int i=1;i<=n;i++)if(ax[i]<=m&&ay[i]<=m){
            for (int j=1;j<i;j++)if(ax[j]<=m||ay[j]<=m){
                int d=abs(ax[i]-ax[j])+abs(ay[i]-ay[j]);
                if (vis[d])return 1;
                else vis[d]=1;
            }
        }
        return 0;
    }
    
    int main(){
        //freopen("fuck.in","r",stdin);
        int T;scanf("%d",&T);
        while (T--){
            scanf("%d%d",&n,&m);
            if (work())puts("YES");
            else puts("NO");
        }
        return 0;
    } 
  • 相关阅读:
    Delphi cxGrid –--> RecordIndex out of Range
    局域网共享需要密码
    提高AdoQuery的速度
    string literals may have at most 255 elements
    delphi控件属性大全-详解-简介
    Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值
    FastReport 使用说明
    delphi的取整函数round、trunc、ceil和floor
    cxGrid 速度
    SQL Server 无法在服务器上访问指定的路径或文件解决方法
  • 原文地址:https://www.cnblogs.com/cww97/p/7533991.html
Copyright © 2020-2023  润新知