zoukankan      html  css  js  c++  java
  • 1.19日模拟

    1.19测试题

    1P1007绕钉子的长绳子(https://vijos.org/p/1007)

    背景

    平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形。

    现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计。

    描述

    求出绳子的长度

    格式

    输入格式

    第1行两个数:整数N(1<=N<=100)和实数R。

    接下来N行按逆时针顺序给出N个钉子中心的坐标
    坐标的绝对值不超过100。

    输出格式

    一个数,绳子的长度,精确到小数点后2位。

    样例1

    样例输入1

    4 1
    0.0 0.0
    2.0 0.0
    2.0 2.0
    0.0 2.0

    样例输出1

    14.28 

    限制

    各个测试点1s

    提示

    如果你用比较复杂的方法AC了,请想一想有没有更加简便的方法。

    2、洛谷P1276 校门外的树(增强版)

    题目描述

    校门外马路上本来从编号0到L,每一编号的位置都有1棵树。有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B);幸运的是还有植树者每次从编号C到D 中凡是空穴(树被砍且还没种上树苗或树苗又被砍掉)的地方都补种上树苗(记 1 C D,含C和D);问最终校门外留下的树苗多少棵?植树者种上又被砍掉的树苗有多少棵?

    输入输出格式

    输入格式:

    第一行L和N,表示校园外原来有L+1棵树,并有N次砍树或种树的操作。

    以下N行,砍树或植树的标记和范围,每行3个整数。

    L(1 <= L <= 10000)和 N(1 <= N <= 100)

    输出格式:

    共两行。第1行校门外留下的树苗数目,第2行种上又被拔掉的树苗数目。

    输入输出样例

    输入样例#1

    10 3

    0 2 6

    1 1 8

    0 5 7

    输出样例#1

    3

    2

    说明


    3、食物链(http://acm.nyist.net/JudgeOnline/problem.php?pid=207)

    时间限制:1000 ms  |  内存限制:65535 KB

    难度:5

    描述

    动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 
    现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 
    有人用两种说法对这N个动物所构成的食物链关系进行描述: 
    第一种说法是"1 X Y",表示X和Y是同类。 
    第二种说法是"2 X Y",表示X吃Y。 
    此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。 
    1) 当前的话与前面的某些真的话冲突,就是假话; 
    2) 当前的话中X或Y比N大,就是假话; 
    3) 当前的话表示X吃X,就是假话。 
    你的任务是根据给定的N(1 <= N <= 50,000)和K句话(0 <= K <= 100,000),输出假话的总数。 

    输入

    第一行是两个整数N和K,以一个空格分隔。 
    以下K行每行是三个正整数 D,X,Y,两数之间用一个空格隔开,其中D表示说法的种类。 
    若D=1,则表示X和Y是同类。 
    若D=2,则表示X吃Y。

    输出

    只有一个整数,表示假话的数目。

    样例输入

    100 7

    1 101 1

    2 1 2

    2 2 3

    2 3 3

    1 1 3

    2 3 1

    1 5 5

    样例输出

    3

    /*
       这题,,,水呀。
    */
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #define maxn 1001
    
    using namespace std;
    int n,cnt;
    double R,tot,ans[maxn],x[maxn],y[maxn];
    
    double serch(double x1,double y1,double x2,double y2)
    {
        double ans1=(x2-x1)*(x2-x1);
        double ans2=(y2-y1)*(y2-y1);
        double ans3=ans1+ans2;
        double ans4=sqrt(ans3);
        return ans4;
    }
    
    int main()
    {
        cin>>n>>R;
        cnt=0;
        for(int i=1;i<=n;i++)
        {
            cin>>x[i]>>y[i];
            cnt++;
        }
        for(int i=1;i<n;i++)
        {
            tot+=serch(x[i],y[i],x[i+1],y[i+1]);
        }
        tot+=serch(x[n],y[n],x[1],y[1]);
        tot+=3.1415*R*2;
        printf("%.2lf
    ",tot);
        return 0;
    }
    心若向阳,无言悲伤
    /*
    本来想写线段树,写崩了着能用循环
    所以就,,,过了
    */
    
    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    int n,m,ans1,ans2,x,y,cnt,j;
    int tree[100010],v[100010];
    int flag;
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=0;i<=n;i++)
          tree[i]=1;
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&flag,&x,&y);
            j=0;
            if(flag==0) 
            {
                for(j=x;j<=y;j++)
                {
                    if(tree[j]) 
                    {
                        tree[j]--;
                        if(v[j]==1) ans1++,v[j]=0;
                    }
                    else continue;
                }
            }        
            if(flag==1) 
            {
                for(j=x;j<=y;j++)
                {
                    if(!tree[j]) tree[j]++,v[j]=1;
                    else continue;
                }
            }
        }
        for(int i=0;i<=n;i++)
        {
            if(v[i]==1) ans2++;
        }
        printf("%d
    %d
    ",ans2,ans1);
        return 0;
    }
    心若向阳,无言悲伤
    #include<bits/stdc++.h>
    using namespace std;
    #define N 50010
    int n,k,fa[N*3];
    int find(int u)
    {
        return fa[u]==u?fa[u]:fa[u]=find(fa[u]);
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin>>n>>k;
        int d,x,y,fx1,fx2,fx3,fy1,fy2,fy3,tot=0;
        for(int i=1; i<=n*3; i++)fa[i]=i;
        for(int i=1; i<=k; i++)
        {
            cin>>d>>x>>y;
            if(x<1||x>n||y<1||y>n)
            {
                tot++;
                continue;
            }
            if(d==2&&x==y)
            {
                tot++;
                continue;
            }
            fx1 = find(x);fx2 = find(x+n);fx3 = find(x+2*n);
            fy1 = find(y);fy2 = find(y+n);fy3 = find(y+2*n);
            if(d==1)
            {
                if(fx1==fy2||fx1==fy3)
                {
                    tot++;
                    continue;
                }
                else fa[fx1]=fy1,fa[fx2]=fy2,fa[fx3]=fy3;
            }
            else
            {
                if(fx1==fy1||fx1==fy3)
                {
                    tot++;
                    continue;
                }
                else fa[fx1]=fy2,fa[fx2]=fy3,fa[fx3]=fy1;
            }
        }
        cout<<tot;
        return 0;
    }
    这题发了不就·
    折花枝,恨花枝,准拟花开人共卮,开时人去时。 怕相思,已相思,轮到相思没处辞,眉间露一丝。
  • 相关阅读:
    数据库表结构变动发邮件脚本
    .net程序打包部署
    无法登陆GitHub解决方法
    netbeans 打包生成 jar
    第一次值班
    RHEL6 纯命令行文本界面下安装桌面
    C语言中格式化输出,四舍五入类型问题
    I'm up to my ears
    How to boot ubuntu in text mode instead of graphical(X) mode
    the IP routing table under linux@school
  • 原文地址:https://www.cnblogs.com/L-Memory/p/6305966.html
Copyright © 2011-2022 走看看