• “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 H


    给定一个长度为 的非负整数序列,下标为 , ,…,n

    定义:sequence(K : 由下标为 的倍数组成的子序列,即下标为 , ,2 ,...,[n1/k]

    query(K,S : 询问sequence(K 中的第 大的数字

    第一行一个整数 ,表示测试组数。
    对于每组数据,第一行输入两个整数 ,1<=n<=20000  , 1<=m<=100000  表示序列的长度, 表示询问个数。
    接下来一行是 个整数0 ,1 ,..,n1 ,0<=<31   , i=0,1,,n ,表示序列。
    接下来 行,每行两个整数K,
    <=  10   , 1<=S<=

    每组数据对于每个询问输出一行,若sequence(K 的元素个数小于 ,输出 ;否则输出query(K,S

    复制
    1
    5 2
    2 5 3 4 1
    2 4
    2 1
    
    -1
     3
    解法:
    1 预处理,对于每一个数字我们都根据题意进行保存,应该复杂度n*logn
    2 排序
    2.1 k大于n,s==1 数字最小也>=1,输出a[0]
    2.2 k<=n k的序列不足S,输出-1,可以的输出保存值
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define LL long long
     4 #define ULL unsigned long long
     5 vector<int>Ve[52345];
     6 int a[52345];
     7 bool Vesort(int x,int y){
     8     return x>y;
     9 }
    10 int main(){
    11     int t;
    12     cin>>t;
    13     while(t--){
    14         int n,m;
    15         for(int i=0;i<=52345;i++){
    16             Ve[i].clear();
    17         }
    18         scanf("%d%d",&n,&m);
    19         for(int i=0;i<n;i++){
    20             scanf("%d",&a[i]);
    21         }
    22         for(int i=1;i<=n;i++){
    23             for(int j=0;j<n;j+=i){
    24                 Ve[i].push_back(a[j]);
    25             }
    26             sort(Ve[i].begin(),Ve[i].end(),Vesort);
    27         }
    28         while(m--){
    29             int k,s;
    30             scanf("%d%d",&k,&s);
    31             if(k>n){
    32                 if(s==1){
    33                     printf("%d",a[0]);
    34                 }else{
    35                     printf("-1");
    36                 }
    37             }else{
    38                 if(Ve[k].size()<s){
    39                     printf("-1");
    40                 }else{
    41                     printf("%d",Ve[k][s-1]);
    42                 }
    43             }
    44             cout<<endl;
    45         }
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    SpringMVC:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax;
    SpringMVC DELETE,PUT请求报错 添加支持Http的DELETE、PUT请求
    HashMap源码总结
    ArrayList动态扩容大小
    Java中的可选操作
    Java中深拷贝与浅拷贝理解
    String在内存中如何存储
    异常处理—checked exception 和 unchecked exception
    Comparable和Comparator区别
    Scanner类与Readable接口
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/7163759.html
Copyright © 2020-2023  润新知