• 10.30 下午考试


    P76
    竞赛时间: ??????????:??-??:??

    题目名称
    名称 he she it
    输入 he.in she.in it.in
    输出 he.out she.out it.out
    每个测试点时限 1 秒 1 秒 1 秒
    内存限制 512MB 512MB 512MB
    测试点数目 10 10 10
    每个测试点分值 10 10 10
    是否有部分分
    题目类型 传统 传统 传统

     


    【问题描述】
    一张长度为N的纸带, 我们可以从左至右编号为0 − N( 纸带最左端标号为
    0)。 现在有M次操作, 每次将纸带沿着某个位置进行折叠, 问所有操作之后纸带
    的长度是多少。
    【输入格式】
    第一行两个数字N, M如题意所述。
    接下来一行M个整数代表每次折叠的位置。
    【输出格式】
    一行一个整数代表答案。
    【样例输入】
    5 2
    3 5
    【样例输出】
    2
    【样例解释】
    树上有只鸟。
    【数据规模与约定】
    对于60%的数据, N, M ≤ 3000。
    对于100%的数据, N ≤ 10^18, M ≤ 3000。

    /*
    离线做
    每次折之后 都找出后面还没折的位置变到了那里
    设折的位置为x,折之前位置为i
    若i<=x则位置不变 
    若否则变为2*x-i
    并且一直保持左端点为0
    若这之后右边折到0左边 则所有的点加上右边现在位置的相反数
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define LL long long
    #define maxn 3010
    using namespace std;
    LL n,m,r;
    LL w[maxn];
    LL init()
    {
        LL x=0,f=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    int main()
    {
        freopen("he.in","r",stdin);
        freopen("he.out","w",stdout);
        n=init();m=init();r=n;
        for(LL i=1;i<=m;i++)
          w[i]=init();
        for(LL i=1;i<=m;i++)
        {
            LL minn=2*w[i]-r;r=w[i];
            for(LL j=i+1;j<=m;j++)
            {
                if(w[j]<=w[i])continue;
                w[j]=2*w[i]-w[j];
            }
            if(minn<0)
            {
                r-=minn;
                for(LL j=i+1;j<=m;j++)
                  w[j]-=minn;
            }
        }
        cout<<r<<endl;
        return 0;
    }


    【问题描述】
    给你M, S, L, R, 求满足L ≤ (S × x) mod M ≤ R最小的正整数x。

    【输入格式】
    第一行一个数T代表数据组数。
    接下来T行每行四个数代表该组数据的M, S, L, R。
    【输出格式】
    对于每组数据, 输出一行代表答案。 如果不存在解, 输出“ −1”。
    【样例输入】
    1
    5 4 2 3
    【 样例输出】
    2
    【 样例解释】
    叫南小鸟。
    【数据规模与约定】
    对于30%的数据, 保证有解且答案不超过10^6。
    对于另外20%的数据, L = R。
    对于100%的数据, 1 ≤ T ≤ 100,0 ≤ M, S, L,R ≤ 10^9。

     正解暂无                                                                                                                                                                       

    【问题描述】
    N个人坐成一圈, 其中第K个人拿着一个球。 每次每个人会以一定的概率向
    左边的人和右边的人传球。 当所有人都拿到过球之后, 最后一个拿到球的人即为
    胜者。 求第N个人获胜的概率。( 所有人按照编号逆时针坐成一圈)
    【输入格式】
    第一行一个数T代表数据组数。
    对于每组数据, 第一行两个整数N, K如题意所述。
    接下来每行一个实数p代表该人将球传给右边的人的概率。
    【输出格式】
    对于每组数据, 一行一个实数代表答案, 保留9位小数。
    【样例输入】
    1
    5 1
    0.10
    0.20
    0.30
    0.40
    0.50
    【 样例输出】
    0.007692308
    【 样例解释】
    然后鸟是我的。
    【数据规模与约定】
    对于20%的数据, N ≤ 3。
    对于70%的数据, T, N ≤ 100。
    对于100%的数据, T ≤ 10000,1 ≤ N ≤ 100。

      正解暂无  

  • 相关阅读:
    使用ZooKeeper实现Java跨JVM的分布式锁
    基于ZooKeeper的分布式锁和队列
    activiti数据库表结构剖析
    visualvm监控jvm及远程jvm监控方法
    使用visualvm 远程监控 JVM
    java jprofile
    Linux服务器上监控网络带宽的18个常用命令
    Redis-sentinel哨兵模式集群方案配置
    电容的去耦半径
    DC-DC BUCK电源芯片的基本原理和组成
  • 原文地址:https://www.cnblogs.com/dingmenghao/p/6034094.html
Copyright © 2020-2023  润新知