文章

2

粉丝

134

获赞

0

访问

10.3k

头像
利用队列推导
P1690 南京大学2019年机试题
发布于2022年3月30日 15:30
阅读数 5.0k

先看数据范围 3e8

好的数组下标记录true false 被排除了

那就是把数放数组里呗(很明显是要存起来的,因为查询多次)

 

放数组里,,,那怎么推呢?可以看出他可以又之前有的推导过来

 

简而言之,比如你知道了 21  那你就可以通过加一个 2或者加一个0得到212 210

利用一个队列

 

然后在搜索下标就行了

复杂度应该是O(nlogn)---->lower_bound

```

//
// Created by Arc on 2022/3/30.
//
#include <iostream>
#include<stdio.h>
#include <vector>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include<queue>
#include <set>
using namespace std;
const long long INTN=30800000000;
int main(){
   long long num;
   cin>>num;
    vector<long long> dp={10,12,21,23,32,34,43,45,54,56,65,67,76,78,87,89,98};
     queue<long long> q;
     for(int i=0;i<17;i++){
         q.push(dp[i]);
     }
     while(!q.empty()  ){
         long long x=q.front();
        // cout<<"x"<<x<<endl;
         if(x>INTN) break;
         q.pop();
         int last=x%10;
   ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发