zoukankan      html  css  js  c++  java
  • CF1102E Monotonic Renumeration

    (large{题目链接})
    (\)
    (Large extbf{Solution: } large{首先我的思路是对原序列进行排序离散,然后预处理出每个数字的最右对应数字的下标。然后再扫一遍求出有用的数字个数cnt,答案即为2^{cnt},复杂度 ext{O(nlogn)。}\其实可以 ext{O(n),因为值域太大,所以数组开不下,不过可以开vector啊,我当时没想到,STL大法好。}})
    (\)
    (Large extbf{Code: })

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    
    const int N = 2e5 + 5;
    const int p = 998244353;
    
    int a[N], b[N], c[N], pos[N], nxt[N];
    
    int pow(int x, int y) {
    	ll a = x, ret = 1;
    	for (; y ; y >>= 1, a = (a * a) % p) if (y & 1) ret = (ret * a) % p;
    	return ret;
    }
    
    int main() {
    	ios::sync_with_stdio(false);
    	int n, cnt = 0;
    	cin >> n;
    	for (int i = 1; i <= n; ++i) cin >> a[i], b[i] = a[i];
    	sort(b + 1, b + 1 + n);
    	int q = unique(b + 1, b + 1 + n) - b - 1;
    	for (int i = n; i >= 1; --i) {
    		c[i] = lower_bound(b + 1, b + 1 + q, a[i]) - b;
    		if (!pos[c[i]]) pos[c[i]] = i;
    		nxt[c[i]] = pos[c[i]];
    	}
    	int l = 1;
    	for (int i = 1; i <= n; ++i) {
    		if (i > l) ++cnt;
    		l = max(l, nxt[c[i]]);
    	}
    	cout << pow(2, cnt);
    	return 0;
    }
    
  • 相关阅读:
    Mysql优化之6年工作经验总结
    mysql_innodb存储引擎的优化
    十六、MySQL授权命令grant的使用方法
    十五、Mysql字符集的那些事
    十四、索引
    十三、视图
    十二、存储过程
    十一、触发器
    十、存储引擎
    九、备份与恢复
  • 原文地址:https://www.cnblogs.com/Miraclys/p/12689443.html
Copyright © 2011-2022 走看看