首页 > 其他分享 >333

333

时间:2024-01-27 16:44:21浏览次数:20  
标签:return int res 333 other true

视频链接:

 

#include <algorithm>
#include <cstdio>
using namespace std;

#define lowb(x) x&-x
const int N=1e5+10, K=2e5+10;
int n,k,m,t;
int res[N],s[K];

struct E{
  int a,b,c,cnt,res;
  bool operator!=(E other){
    if(a!=other.a) return true;
    if(b!=other.b) return true;
    if(c!=other.c) return true;
    return false;
  }
}e[N],ue[N];

void change(int x,int k){ //向后修
  while(x<=K) s[x]+=k, x+=lowb(x);
}
int query(int x){ //向前查
  int t=0;
  while(x) t+=s[x], x-=lowb(x);
  return t;
}
bool cmp1(E x,E y){
  if(x.a!=y.a) return x.a<y.a;
  if(x.b!=y.b) return x.b<y.b;
  return x.c<y.c;
}
bool cmp2(E x,E y){
  if(x.b!=y.b) return x.b<y.b;
  return x.c<y.c;
}
void CDQ(int l,int r){
  if(l==r) return;
  int mid=(l+r)/2;
  CDQ(l,mid);
  CDQ(mid+1,r);
  sort(ue+l,ue+mid+1,cmp2);
  sort(ue+mid+1,ue+r+1,cmp2);
  
  int i=l,j=mid+1;
  while(j<=r){
    while(i<=mid && ue[i].b<=ue[j].b){
      change(ue[i].c,ue[i].cnt);
      i++;
    }
    ue[j].res+=query(ue[j].c);
    j++;
  }
  for(int k=l;k<i;k++) 
    change(ue[k].c,-ue[k].cnt);
}
int main(){
  scanf("%d%d",&n,&k);
  for(int i=1;i<=n;i++) 
    scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].c);
  sort(e+1,e+n+1,cmp1);
  for(int i=1;i<=n;i++){
    t++;
    if(e[i]!=e[i+1]){
      m++;
      ue[m].a=e[i].a;
      ue[m].b=e[i].b;
      ue[m].c=e[i].c;
      ue[m].cnt=t;
      t=0;
    }
  }
  CDQ(1,m);
  for(int i=1;i<=m;i++) 
    res[ue[i].res+ue[i].cnt-1]+=ue[i].cnt;
  for(int i=0;i<n;i++) printf("%d\n",res[i]);
}

 

标签:return,int,res,333,other,true
From: https://www.cnblogs.com/dx123/p/17991633

相关文章

  • ABC333G
    题面给定一个小于\(1\)的正实数\(r\)和一个正整数\(n\)。要求在满足\(0≤p≤q≤n\)和\(\gcd(p,q)=1\)的前提下,找到使\(|r-\frac{q}{p}|\)最小的二元组\((p,q)\)。如果存在多个这样的二元组\((p,q)\),输出\(\frac{q}{p}\)值最小的那个。数据范围:\(1\len\le1......
  • P5333 [JSOI2019] 神经网络
    题面传送门本来以为\(m\)这么小是\(m\sumk_i\logk\)的NTT的,写完发现一点不用(首先我们发现,这样的图上面的一个哈密顿回路可以表示成原森林若干条链,每个点都在其中一条链上,且相邻两条链不在同一棵树上。先跑一个DP把\(f_{i,j}\)表示用\(j\)条链覆盖\(i\)的方案数......
  • Atcoder ABC 333 F - Bomb Game 2
    题目大意(采用0#语言):有n个人,每个人每次要么被“炸掉”,要么就被移到最后面去,概率都是1/2,求最后只剩下初始时排名为第i的人的概率。 这道题跟人数有关,而且跟位置有关。我们定义dp[i]表示一共有i个人,第i个为最后一位留下来时的概率。(不想写公式)定义j从0到i-1,表示从前面i-1......
  • AtCoder Beginner Contest 333
    title:categories:算法题解description:tags:-atcoder-DFS-思维-贪心-差分-概率DP-连分数cover:/img/chino/vec/chino56.jpgkatex:truedate:2023-12-2114:47:38A-ThreeThrees(abc333A)题目大意给定一个\(0-9\)的数\(n\),输出这......
  • AtCoder_abc333
    AtCoder_abc333比赛链接A-ThreeThrees题目描述输入一个\(N\)输出\(N\)个\(N\)。解题思路(这个题但凡学过都能写出来吧)Code//Problem:A-ThreeThrees//Contest:AtCoder-ToyotaProgrammingContest2023#8(AtCoderBeginnerContest333)//URL:https://a......
  • AtCoder 333 A-D
    AThreeThrees(打表importjava.util.*;classMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();if(n==1)System.out.println(1);if(n==2)System.out.println......
  • AtCoder Beginner Contest 333
    B-Pentagon难度:⭐题目大意给定一个正五边形,其顶点为ABCDE;给定端点a,b,c,d;问a,b之间的距离和c,d之间的距离是否相等;解题思路两个端点之间的距离就看两个端点之间隔了几条边就行;并且因为是五边形,隔x条边和隔5-x条边是等价的;神秘代码#include<bits......
  • Atcoder ABC 333 题解(A - F)
    ABC不讲D待更E待更F设$f(i,j)$为有$i$个人时,第$j$个人活到最后的概率,显然:\[f(i,j)=\begin{cases}1,&i=1,j=1\\\frac{1}{2}f(i,i),&i\neq1,j=1\\\frac{1}{2}f(i,j-1)+\frac{1}{2}f(i-1,j-1),&i\neq1,2\lej......
  • CF333D 另一种做法
    前言duel的时候做的题,做出来的时候感觉很神,看了题解做法感觉自己是个傻逼。本做法时间复杂度是\(O(n^{\tfrac{5}{2}})\),可以作为补充了解。题解一个矩阵四个角的最大值有点烦,我们把它们排序,从小到大依次插入,则问题变为:在\(n\timesm\)的平面中,每次插入一个点,求在什么时候......
  • Toyota Programming Contest 2023#8(AtCoder Beginner Contest 333)
    ToyotaProgrammingContest2023#8(AtCoderBeginnerContest333)A-ThreeThrees代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e6+10;typedefpair<ll,ll>pii;#definefifirst#definesesecondvoid......