zoukankan      html  css  js  c++  java
  • Codeforces Round #381 (Div. 2) C. Alyona and mex

      题目大意:要构造一个长度为n的序列,从而使得在由给出的m个区间得到的m个mex值中的最小值 尽可能的大;一个区间的mex值代表不存在于这个区间中的最小的非负整数(有点绕...)

     题解思路:解这题有两个突破口;第一个:只从题目给的那两个简单样例也可以发现最终结果的规律,就是结果只跟最短的区间长度有关(或者自己画多几个例子也都会发现的,,虽然我给不出严谨的证明=_=...)。 知道了这一步后,剩下的就是思考如何去构造这个数列,也是第二个突破口;一开始的时候自己在知道最终结果只跟最小的区间长度有关时就一直纠结在如何构造这个数列,考虑要怎么才能使得给出的m个区间在互相影响的前提下又能满足区间内都有数字0~mi-1(反应过来后感觉自己好智障:明明最终结果只会是最短的区间长度min了,那每个区间只需有0~min-1不就行了吗=_=...)。  这些都知道后,就只要使序列从第一个开始像0、1、2...min-1、0、1、2...min-1...这样构造就行了,因为这样来不论取任何一个长度大于等于min的区间的话,里面都一定会包含0~min-1这些数的。

      AC代码:

     1 /**
     2 * @author Wixson
     3 */
     4 #include <iostream>
     5 #include <cstdio>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <algorithm>
     9 #include <queue>
    10 #include <stack>
    11 #include <vector>
    12 #include <utility>
    13 #include <map>
    14 #include <set>
    15 const int inf=0x3f3f3f3f;
    16 const double PI=acos(-1.0);
    17 const double EPS=1e-10;
    18 using namespace std;
    19 typedef long long ll;
    20 typedef pair<int,int> P;
    21 
    22 int n,m,l,r,Min;
    23 int a[100010];
    24 int main()
    25 {
    26     //freopen("input.txt","r",stdin);
    27     cin>>n>>m;
    28     Min=inf;
    29     for(int i=0;i<m;i++)
    30     {
    31         cin>>l>>r;
    32         if(r-l+1<Min) Min=r-l+1;
    33     }
    34     //
    35     int temp=0;
    36     for(int i=0;i<n;i++)
    37     {
    38         a[i]=temp;
    39         temp=(temp+1)%Min;
    40     }
    41    
    42     //
    43     cout<<Min<<endl;
    44     for(int i=0;i<n;i++)
    45     {
    46         printf("%d ",a[i]);
    47     }
    48     putchar('
    ');
    49     return 0;
    50 }
  • 相关阅读:
    centos7 安装jdk 1.8
    CentOS查看Java进程并部署jar包
    Mybatis传多个参数(三种解决方案)
    mybatis使用注解往postgresql数据库表insert数据[主键自增]的写法
    在Linux上安装tomcat和JDK
    Linux下部署springboot项目的步骤及过程
    maven安装第三方jar包到本地仓库
    Android 开源动画框架:NineOldAndroids
    Android多国语言的value文件夹命名方式
    C++编程经验-返回局部变量的讨论(转)
  • 原文地址:https://www.cnblogs.com/geek1116/p/6220160.html
Copyright © 2011-2022 走看看