zoukankan      html  css  js  c++  java
  • 模拟赛1030d2


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

    /*
      刚开始用并查集写的60%的数据,原因是更新时不管有没有用的元素都更新了,其实有用的最多 
      3000个,完全可以离线做,然后只更新这3000个。 
    */
    #include<cstdio>
    #include<iostream>
    #define ll long long
    #define N 3010
    using namespace std;
    ll a[N],n,m;
    ll read()
    {
        ll num=0,flag=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')flag=-1;c=getchar();}
        while(c>='0'&&c<='9'){num=num*10+c-'0';c=getchar();}
        return num*flag;
    }
    int main()
    {
        freopen("he.in","r",stdin);
        freopen("he.out","w",stdout);
        m=read();n=read();
        for(ll i=1;i<=n;i++)
          a[i]=read();
        ll l=0,r=m;
        for(ll i=1;i<=n;i++)
        {
            ll mid=a[i];
            if(mid<=(l+r)/2)
            {
                l=mid;
                for(ll j=i+1;j<=n;j++)
                  if(a[j]<mid)a[j]=mid+mid-a[j];
            }
            else
            {
                r=mid;
                for(ll j=i+1;j<=n;j++)
                  if(a[j]>mid)a[j]=mid+mid-a[j];
            }
        }
        cout<<r-l;
        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

  • 相关阅读:
    《Orange‘s》 Bochs环境配置
    《CSAPP》读书笔记
    基于SDL2实现俄罗斯方块
    VS 提示对象被多次指定;已忽略多余的指定
    SDL2.0 vs2017环境配置
    初探模板元编程
    从代码理解 cartographer X --- 浅析Cartographer框架之美
    从代码理解 cartographer 1
    Arch Linux 安装总结
    从代码理解 cartographer 3 --- 理解 Range data 数据的流入
  • 原文地址:https://www.cnblogs.com/harden/p/6036198.html
Copyright © 2011-2022 走看看