zoukankan      html  css  js  c++  java
  • codeforces 1257 E、F

    E:发现lis上的数不用改

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef double db;
    const int N = 2e5+5;
    int n,m,k,a[N],b[N],c[N];
    vector<int> v;
    int slove(){
        vector<int> lis;
        for(auto x:v){
            if(lis.empty())lis.push_back(x);
            else{
                if(x>lis.back())lis.push_back(x);
                else{
                    int id = lower_bound(lis.begin(),lis.end(),x)-lis.begin();
                    lis[id] = x;
                }
            }
        }
        return lis.size();
    }
    int main(){
        ios::sync_with_stdio(false);
        cin>>n>>m>>k;
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int i=1;i<=m;i++)cin>>b[i];
        for(int i=1;i<=k;i++)cin>>c[i];
        sort(a+1,a+1+n);
        sort(b+1,b+1+m);
        sort(c+1,c+1+k);
        for(int i=1;i<=n;i++)v.push_back(a[i]);
        for(int i=1;i<=m;i++)v.push_back(b[i]);
        for(int i=1;i<=k;i++)v.push_back(c[i]);
        cout<<n+m+k-slove()<<endl;
    }
    

    F:
    不会啊。看到折半以后感觉有了很多头绪,
    于是我们就枚举前2^15次方个数然后map存一下,后面的直接找就行。
    找的时候发现。。。我们怎么找啊,要做的是找a1+a2=b1+b2吧,移一下项,变成找差相同的即可

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef double db;
    int n,a[105];
    map<vector<int>,int>mp;
    int c[105];
    int main(){
        ios::sync_with_stdio(false);
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int i=0;i<(1<<15);i++){
            vector<int> v;
            for(int j=1;j<=n;j++){
               c[j]=__builtin_popcount(a[j]>>15^i)-__builtin_popcount(a[1]>>15^i);//高15位
               v.push_back(c[j]);
            }
            mp[v]=i;
        }
        for(int i=0;i<(1<<15);i++){
            vector<int> v;
            for(int j=1;j<=n;j++){
                c[j]=__builtin_popcount(a[1]&32767^i)-__builtin_popcount(a[j]&32767^i);
                v.push_back(c[j]);
            }
            if(mp.count(v)){
                cout<<(mp[v]<<15)+i<<endl;
                exit(0);
            }
        }
        cout<<-1<<endl;
    }
    
    
  • 相关阅读:
    使用RationalRose画活动图
    使用RationalRose画用例图
    UML工具RationalRose下载和安装
    使用BootStrap布局网站首页
    BootStrap入门
    使用JQuery发送请求局部刷新页面
    使用JQuery完成表单的校验(扩展)
    Window 由于未经处理的异常,进程终止。
    MySQL数据类型DECIMAL用法
    推荐收藏 —— MySQL视图详细介绍
  • 原文地址:https://www.cnblogs.com/MXang/p/11950792.html
Copyright © 2011-2022 走看看