zoukankan      html  css  js  c++  java
  • CF 1438E

    unique&erase: https://blog.csdn.net/hellokandy/article/details/51317593

    参考博文:https://www.cnblogs.com/DeepJay/p/14115735.html

    这个代码是真的简洁清晰,看的太舒服了

    https://codeforces.ml/contest/1438/problem/E

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 typedef pair<int, int> pii;
     5 const int N = 2e5 + 10;
     6 int n;
     7 ll a[N], sum[N];
     8 vector<pii> v;
     9 
    10 void solve(int tag)
    11 {
    12     for(int i = 1 ; i <= n ; i++){
    13         sum[i] = sum[i - 1] + a[i];
    14     }
    15     for(int l = 1 ; l < n - 1 ; l++){
    16         int b;for(b = 30 ; b >= 0 ; b--){
    17             if((1 << b) & a[l])    break;
    18         }
    19         ll up = (1 << (b + 1));
    20         for(int r = l + 2 ; r <= n ; r++){
    21             ll tmp = sum[r - 1] - sum[l];
    22             if(tmp >= up)    break;
    23             else if((a[l] ^ a[r]) == tmp){
    24                 if(!tag)    v.push_back({l, r});
    25                 else    v.push_back({n - r + 1, n - l + 1});
    26             }
    27         }
    28     }
    29 }
    30 
    31 int main(){
    32     ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    33     cin >> n;
    34     for(int i = 1 ; i <= n ; i++){
    35         cin >> a[i];
    36     }
    37     solve(0);
    38     reverse(a + 1, a + n + 1);
    39     solve(1); 
    40     sort(v.begin(), v.end());
    41     v.erase(unique(v.begin(), v.end()), v.end());
    42     //unique返回不重复的最后一个元素的后一个地址
    43     //erase则将这一部分重复元素删除 
    44     cout << (int)v.size() << endl;
    45     
    46     return 0;
    47 }
  • 相关阅读:
    mysql读写分离
    redis和memcached的区别(总结)
    MySQL常见面试题
    mysql查询优化
    mysql中enum类型
    ySQL性能优化的21个最佳实践 和 mysql使用索引
    如何选择mysql存储引擎
    Windows10右键添加"在此处打开命令窗口"
    centos7下安全访问远程服务器
    常用http/https以及socks5代理总结
  • 原文地址:https://www.cnblogs.com/ecustlegendn324/p/14291715.html
Copyright © 2011-2022 走看看