• Codeforces Round #506 (Div. 3)


    /*
    第一次写codeforce的题解
    之前一直拿它来练手速 
    前几天发现在好好施展一场就能到蓝名了
    恰好碰上一场div3 灰常开心
    然后只做了2题  现在改一改CE题
    
    C - Maximal Intersection
    这题一开始想麻烦了 想的是分有n和没有n讨论
    比赛的时候少考虑了一种然后wa.......
    其实 考虑n条线段的交 就是minr-maxl
    那么我们枚举删掉那一个 然后剩下的按上面的方法求一下
    借助set 因为要支持删除一个元素 并且有重复要用multiset
    另外multiset用的不多刚才wa了好几发.....
    end这个迭代器指的应该是最后一个元素 rbegin才是最后一个 
    */
    
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<set>
    #define maxn 300010
    using namespace std;
    int n,l[maxn],r[maxn],ans;
    int main(){
        scanf("%d",&n);multiset<int>L,R;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&l[i],&r[i]);
            L.insert(l[i]);R.insert(r[i]);
        }
        for(int i=1;i<=n;i++){
            L.erase(L.find(l[i]));R.erase(R.find(r[i]));
            ans=max(ans,*R.begin()-*L.rbegin());
            L.insert(l[i]);R.insert(r[i]);
        }
        printf("%d
    ",ans);
        return 0;
    }
    
    /*
    D题 字符串拼接的操作就是前一个*10^len2 + 后一个数
    正着枚举两个(a+b)%k==0  <->  (a%k+b%k)%k==0
    我们只枚举a 构造出b来 看看符合条件的b有几个
    必须位数和%k的余数都符合条件才行
    然后预处理下f[i][j]是i位数中%k余j的数的个数 
    map加了一个log所以比较慢 改改%longlong啥的优化常数卡过去了  
    */
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<cstdlib>
    #include<map>
    #define maxn 200010
    #define ll unsigned long long
    using namespace std;
    int n,k,r,now,tmp,a[maxn];
    ll ans;
    const ll P=10; 
    map<int,int>f[12];
    int Get(ll x){
        int res=0;
        while(x){
            res++;x/=10;
        }
        return res;
    }
    int main(){
        scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            int c=Get(a[i]);f[c][a[i]%k]++;
        }
        for(int i=1;i<=n;i++){
            now=Get(a[i]);int c=a[i]*P%k,pre=a[i]%k;
            for(int j=1;j<=10;j++){
                tmp=k-c;if(tmp>=k)tmp-=k;
                ans+=f[j][tmp];
                if(j==now&&tmp==pre)
                    ans--;c=c*P%k;
            }
        }
        printf("%lld
    ",ans);    
        return 0;
    } 
  • 相关阅读:
    获得最小的topK
    阿里凑单算法
    排序指标 --- 1、平均准确率均值 (Mean Average Precision-MAP) & 2、NDCG (normalized discounted CG-cumulative gain,累计增益)
    deepwalk算法
    tmp-动态规划-迷宫走法
    分治法-合并K个有序链表
    如何在创建hive表格的python代码中导入外部文件
    如何删除hive表格的分区
    pytorch中torch.nn构建神经网络的不同层的含义
    pytorch中如何使用预训练词向量
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/9545242.html
Copyright © 2020-2023  润新知