首页 > 其他分享 >Educational Codeforces Round 113 (Rated for Div. 2) D

Educational Codeforces Round 113 (Rated for Div. 2) D

时间:2022-11-06 23:55:04浏览次数:52  
标签:Educational Rated int Codeforces pos 113 区间

D. Inconvenient Pairs

观察完样例我们发现发现有且仅有一个共同区间的才是一对
这样我们直接记录x,y 二分出他在哪个区间内
check在共同区间的个数即可
但是还有另一种解法
我们直接对点进行排序 我们将他是这个区间的拿出来 然后就可以直接做了

bool cmp(pair<int,int>a,pair<int,int>b){
    if(a.second<b.second)return 1;
    else return 0;
}
void solve(){
    int n,m,k;cin>>n>>m>>k;
    vector<int>x(n+10),y(m+10);
    map<int,int>stx,sty;
    for(int i=1;i<=n;i++)cin>>x[i],stx[x[i]]++;
    for(int i=1;i<=m;i++)cin>>y[i],sty[y[i]]++;
    vector<pair<int,int>>v(k);
    for(int i=0;i<k;i++)
        cin>>v[i].first>>v[i].second;
    sort(all(v));
    int pos=-1,ans=0;
    for(int i=1;i<=n;i++){
        map<int,int>mpy;
        vector<int>q;
        int sum=0;
        for(int j=pos+1;j<v.size();j++){
            auto [a,b]=v[j];
            if(a<=x[i]){
                pos=j;
                if(!stx[a]){
                    mpy[b]++;
                    sum++;
                    q.push_back(b);
                }
            }else break;
        }
        for(auto j:q)ans+=sum-mpy[j];
    }
    sort(all(v),cmp);
    pos=-1;
    for(int i=1;i<=m;i++){
        map<int,int>mpx;
        vector<int>q;
        int sum=0;
        for(int j=pos+1;j<v.size();j++){
            auto [a,b]=v[j];
            if(b<=y[i]){
                pos=j;
                if(!sty[b]){
                    mpx[a]++;
                    sum++;
                    q.push_back(a);
                }
            }else break;
        }
        for(auto j:q)ans+=sum-mpx[j];
    }
    cout<<ans/2<<endl;
}

标签:Educational,Rated,int,Codeforces,pos,113,区间
From: https://www.cnblogs.com/ycllz/p/16864688.html

相关文章

  • Codeforces Round #732 (Div. 1) B
    B.AquaMoonandChess简单计数观察样例我们发现如果是00111100这样是11是随便可以放置在任何地方但是要是011100这样的就会有个单独的1出来我们显然可以这样011......
  • Codeforces Round #832 (Div. 2) D (预处理+二分)
    D.YetAnotherProblem观察题干发现一定要是odd考虑发掘性质发现之后还会将[l,r]长度为奇数的区间全部赋值成这个区间的异或和我们设长度为lenlen-1个偶数个异或为......
  • Codeforces-1753B Factorial Divisibility题解
    Codeforces-1753BFactorialDivisibility参考:https://blog.csdn.net/qq_38236082/article/details/127500190题意:问$a_1!+a_2!+a_3!+...+a_n!$能否被$x!$整除。......
  • CodeForces 1747E List Generation
    CF传送门洛谷传送门考虑将问题抽象成:左上角为\((0,0)\)、右下角为\((n,m)\)的网格图,求所有满足至少有一条只向下或向右走的路径经过点集内所有点的的不同的点集大......
  • Educational Codeforces Round 138 E,F
    E一道比较基础的题。首先就是纵向,走无障碍的格子,无法四联通和横向,走有障碍的格子,八联通是等价的。也就是,如果我们要让其不存在非法路径,那么应该存在一个从第一列出发,一......
  • Educational Codeforces Round 118 D
    D.MEXSequences对于一个数x要是前面出现过0,1,2...x-1我们显然可以将他放在后面要是前面出现过012...x-1x我们也可以将他放在后面但是观察样例还有一种情况......
  • Codeforces Round #826 (Div. 3) D. Masha and a Beautiful Tree(树+dfs)
    D.MashaandaBeautifulTree题目大意:给定一颗满二叉树的叶子节点,让我们更换子树位置,从而让叶子节点排序为升序求最小操作数,如果不能移动成那样的话,直接输出-1.in......
  • Codeforces 杂题记录
    CF1753A2(调整、贪心)考虑钦定\([1,n]\)分成一段,调整就是把贡献取相反数。CF1753B每次把\((i+1)\)和\(i!\)合并成一个\((i+1)!\),看能不能合并到\(x!\)。CF1753C(......
  • Codeforces Round #832 (Div. 2) C. Swap Game (博弈论)
    https://codeforces.com/contest/1747/problem/CC.SwapGame题目大意:给定一个长度为n的数组a,每次只要当我想动但是发现a[1]==0的时候我就输了要么就是我每次把a[1]......
  • 「题解」Codeforces 1612F Armor and Weapons
    首先可以不管套件,假定\(n<m\),那么答案不超过\(\mathcal{O}(\logn+\frac{m}{n})\),也就是先倍增把\(n\)造出来,然后一步步造\(m\).答案这么小,那么常见的套路就是把答案......