码迷,mamicode.com
首页 > 其他好文 > 详细

P2237 [USACO14FEB]自动完成Auto-complete

时间:2018-08-28 16:14:54      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:int   二分   前缀   cassert   自动完成   second   out   span   i++   


先排个序, 对于每一个询问二分前缀位置, 加上k即可.
莫名其妙WA了一次居然是因为

ios::sync_with_stdio(false);

\(puts();\)有影响...

#include <cstdio>
#include <cstring>
#include <cassert>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<string, int> P;
const int MAXN = 3e4 + 10;

int W, N;
P s[MAXN];

int main()
{
    ios::sync_with_stdio(false);
    cin>>W>>N;
    for(int i = 1; i <= W; i++) cin>>s[i].first, s[i].second = i;
    sort(s + 1, s + W + 1);

    for(int i = 1; i <= N; i++){
        int k; string str;
        cin>>k>>str;
        P *pit = lower_bound(s + 1, s + W + 1, P(str, 0)) + k - 1;
        if(pit - s <= W && pit->first.substr(0, str.size()) == str)
            cout<<pit->second<<endl;
        else cout<<-1<<endl;
    }

    return 0;
}

P2237 [USACO14FEB]自动完成Auto-complete

标签:int   二分   前缀   cassert   自动完成   second   out   span   i++   

原文地址:https://www.cnblogs.com/wsmrxc/p/9548697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!