-
個人簡介
//排列组合+容斥 #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;
使用权值线段树
使用珂朵莉树
使用吉司机线段树
-
最近活動
- 【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