zoukankan      html  css  js  c++  java
  • 【LOJ】#2291. 「THUSC 2016」补退选

    题解

    在trie树上开vector记录一下这个前缀出现次数第一次达到某个值的下标,以及记录一下现在这个前缀有多少个

    为什么thusc有那么水的题……是为了防我这种cai ji爆零么= =

    代码

    #include <iostream>
    #include <cstdio>
    #include <vector>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    //#define ivorysi
    #define pb push_back
    #define eps 1e-12
    #define space putchar(' ')
    #define enter putchar('
    ')
    #define mp make_pair
    #define pb push_back
    #define fi first
    #define se second
    #define mo 974711
    using namespace std;
    typedef long long int64;
    typedef double db;
    struct node {
        vector<int> v;
        int cnt;
        int nxt[10];
        node() {cnt = 0;v.clear();memset(nxt,0,sizeof(nxt));}
    }tr[6000005];
    int rt = 1,nodecnt = 1,Q;
    char s[65];
    void Insert(int id,char *str,int on) {
        int p = 1,L = strlen(str + 1);
        for(int i = 1 ; i <= L ; ++i) {
    	if(!tr[p].nxt[str[i] - 'a']) {
    	    tr[p].nxt[str[i] - 'a'] = ++nodecnt;
    	}
    	p = tr[p].nxt[str[i] - 'a'];
    	tr[p].cnt += on;
    	if(tr[p].cnt > tr[p].v.size()) tr[p].v.pb(id);
        }
    }
    int Query(char *str,int x) {
        int p = 1,L = strlen(str + 1);
        for(int i = 1 ; i <= L ; ++i) {
    	if(!tr[p].nxt[str[i] - 'a']) return -1;
    	p = tr[p].nxt[str[i] - 'a'];
        }
        if(tr[p].v.size() - 1 < x) return -1;
        return tr[p].v[x];
    }
    void Solve() {
        scanf("%d",&Q);
        int K,ans = 0,a,b,c;
        for(int i = 1 ; i <= Q ; ++i) {
    	scanf("%d",&K);scanf("%s",s + 1);
    	if(K == 1) Insert(i,s,1);
    	else if(K == 2) Insert(i,s,-1);
    	else {
    	    scanf("%d%d%d",&a,&b,&c);
    	    int t = (1LL * abs(ans) * a + b) % c;
    	    printf("%d
    ",ans = Query(s,t));
    	}
        }
    }
    int main() {
    #ifdef ivorysi
        freopen("f1.in","r",stdin);
    #endif
        Solve();
        return 0;
    }
    
  • 相关阅读:
    今天的雪糕格外好吃!
    定了!对于本周四(7.16日)抽奖活动取消简要说明,新抽奖活动暂定下周三(7.22日)...
    你喜欢什么样的课堂?
    无题
    属于你们的“礼仪小课堂”
    红歌合唱之团结就是力量
    《此生未完成》痛句摘录(一)
    端午前夕的班级小游戏
    排序>插入排序 小强斋
    排序>交换排序 小强斋
  • 原文地址:https://www.cnblogs.com/ivorysi/p/9083422.html
Copyright © 2011-2022 走看看