1. 首页
  2. 評測佇列
  3. 公告
  1. 登入
  2. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文

2022tysc0388

UID: 8507, 註冊於 2022-6-20 17:18:46, 最後登入於 2025-8-6 14:38:32, 最後活動於 2025-7-13 17:32:56.

解決了 360 道題目,RP: 238.59 (No. 333)

♀
  • 個人簡介

    //排列组合+容斥 
    #include<iostream>
    #include<vector>
    #define int long long
    using namespace std;
    int n,m,a,b,ans,s,d[5005];
    signed main(){
    	int i;
    	cin>>n>>m;
    	if(m==0||m==n*(n-1)/2){
    		cout<<n*(n-1)*(n-2)/6;
    		return 0;
    	}
    	for(i=1;i<=m;i++){
    		cin>>a>>b;
    		d[a]++;
    		d[b]++;
    	}
    	ans=n*(n-1)*(n-2)/6;
    	//完全图能构成的三角形即 C(n,3),在 n 个点中选 3 个的方案数 
    	for(i=1;i<=n;i++){
    		s+=d[i]*(n-d[i]-1);
    		//选一条蓝边,一条红边,构成一个异色三角形
    		//由排列组合知选择的方案为蓝边*红边
    		//每个异色三角形会枚举到两次,结果除以 2 
    	}
    	cout<<ans-s/2;//总的三角形-异色三角形=同色三角形 
    }
    

    __int128

    #include<cstdio>
    inline __int128 read(){
    	__int128 s=0,w=1;
    	char ch=getchar();
    	while(ch<'0'||ch>'9'){
    		if(ch=='-')w=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9'){
    		s=s*10+ch-'0';
    		ch=getchar();
    	}
    	return s*w;
    }
    inline void write(__int128 x){
    	if(x<0){
    		putchar('-');
    		x=-x;
    	}
    	if(x>9)write(x/10);
    	putchar(x%10+'0');
    }
    

    快速幂模板

    int pows(int a,int b){
    	int s=1,p=a;
      	while(b){
      		if(b&1)s=s*p;
        	p*=p;
    		b>>=1;
     	}
      	return s;
    }
    

    lucas模板

    int lucas(int x,int y,int p){
        if(!y)return 1;
        return C(x%p,y%p,p)*lucas(x/p,y/p,p)%p;
    }
    

    排列组合公式法模板

    void init(){
    	int i;
    	fac[0]=1;
    	for(i=1;i<=100000;i++)fac[i]=fac[i-1]*i%mod;
    	inv[100000]=pows(fac[100000],mod-2);
    	for(i=100000;i>=1;i--)inv[i-1]=inv[i]*i%mod;
    }
    int C(int n,int m){
    	if(m>n||m<0)return 0;
    	return fac[n]*inv[n-m]%mod*inv[m]%mod;
    }
    

    st表(gcd,min,max)

    int query(int l,int r){
    	int lglr=lg2[r-l+1];
    	return gcd(f[l][lglr],f[r-(1<<lglr)+1][lglr]);
    }
    for(j=1;j<=logx[n];j++){
    	for(i=1;i+(1<<j)-1<=n;i++){
    		f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
    	}
    }
    for(i=2;i<=n;i++)lg2[i]=lg2[i>>1]+1;
    

    组合数的各种算法

    高精度加减乘除模板

    线段树详解

    ∀ai,i∈[l,r],ai+=d:\forall a_i, i∈[l,r],a_i+=d:∀ai​,i∈[l,r],ai​+=d:使用权值线段树

    ∀ai,i∈[l,r],ai=d:\forall a_i, i∈[l,r],a_i=d:∀ai​,i∈[l,r],ai​=d:使用珂朵莉树

    ∀ai,i∈[l,r],ai=max(ai,d):\forall a_i, i∈[l,r],a_i=max(a_i,d):∀ai​,i∈[l,r],ai​=max(ai​,d):使用吉司机线段树

  • 最近活動

    • 【oiClass公益赛】2024CSP-J模拟赛#20 OI
    • 【oiClass公益赛】2024CSP-J模拟赛#03 OI
    • 2023年秋季营lesson10作业2-队 作业
    • 【oiClass公益赛】2023CSPJ模拟赛#10 OI
    • 夏令营模拟测试-04 OI
    • 夏令营模拟测试-03 OI
    • 开学DP测试 IOI
    • 越白冬令营测试1 OI
    • 预备班寒假集训结营赛 OI
    • 越白D班期末小测 OI
    • 越秀三周要做的题目 IOI
    • 越白D班国庆越来越白测试 OI
    • 越白暑期选拔第二场上午 IOI
    • 越白暑期选拔第一场上午 IOI
    • 越白第二周测试 IOI
    • 越铁第一周比赛作业 作业
    • 作业11 一维数组2——标记 作业
    • 第10课 一维数组 作业
    • 第9课 多重循环 作业
    • 第8课 while语句2 作业
    • 第7课 while语句1 作业
    • 第6节 for语句3——多数据处理 作业
    • 第5节 for语句2——枚举+筛选 作业
    • 第4节 学习C++ for循环语句 作业
    • 第3课 if语句 作业
    • 第2课 认识 C++ 表达式 作业
    • 第1课 认识C++程序结构 作业
  • Stat

  • Rating

371
已遞交
360
已通過
0
題解被贊

狀態

  • 評測佇列
  • 服務狀態

開發

  • 開源
  • API

支援

  • 幫助
  • QQ 群
  1. 關於
  2. 聯絡我們
  3. 隱私
  4. 服务条款
  5. 版权申诉
  6. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  7. 兼容模式
  8. 主题
    1. 亮色
    2. 暗色
  1. 粤ICP备2024335011号
  2. Worker 0, 47ms
  3. Powered by Hydro v4.19.1 Community
關閉

登入

使用您的 oiClass 通用賬戶

忘記密碼或者使用者名?