• 【PAT甲级】1085 Perfect Sequence (25 分)


    题意:

    输入两个正整数N和P(N<=1e5,P<=1e9),接着输入N个正整数。输出一组数的最大个数使得其中最大的数不超过最小的数P倍。

    trick:

    测试点5会爆int,因为P太大了。。。

    AAAAAccepted code:

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 typedef struct node{
     5     long long val;
     6     bool flag;
     7 };
     8 bool cmp(node a,node b){
     9     if(a.val!=b.val)
    10         return a.val<b.val;
    11     return a.flag>b.flag;
    12 }
    13 node a[200007];
    14 map<int,int>pos;
    15 int main(){
    16     ios::sync_with_stdio(false);
    17     cin.tie(NULL);
    18     cout.tie(NULL);
    19     int n,p;
    20     cin>>n>>p;
    21     for(int i=1;i<=n;++i)
    22         cin>>a[i].val;
    23     for(int i=1;i<=n;++i){
    24         a[i+n].val=a[i].val*p+1;
    25         a[i+n].flag=1;
    26     }
    27     sort(a+1,a+1+n+n,cmp);
    28     int cnt=0;
    29     int ans=0;
    30     for(int i=1;i<=n+n;++i){
    31         if(a[i].flag==0){
    32             ++cnt;
    33             if(!pos[a[i].val])
    34                 pos[a[i].val]=cnt;
    35         }
    36         else{
    37             int x=(a[i].val-1)/p;
    38             int tamp=cnt-pos[x]+1;
    39             ans=max(ans,tamp);
    40         }
    41     }
    42     cout<<ans;
    43     return 0;
    44 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    java实现算年龄
    java实现手机尾号评分
    java实现手机尾号评分
    java实现手机尾号评分
    java实现手机尾号评分
    java实现手机尾号评分
    java实现三角螺旋阵
    Delphi ActiveForm发布全攻略
    序列化FastReport,重要提示少走弯路 good
    深入探索ScrollWindow
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11878078.html
Copyright © 2020-2023  润新知