【题目链接】:http://codeforces.com/problemset/problem/229/C

【题意】



给你一张完全图;

然后1个人从中选择m条边;

然后另外一个人从中选择剩余的n*(n-1)/2-m条边;

在这两个人分别选出的两张图中;

问你构成的长度为3的环的个数;

【题解】



先考虑完全图;

完全图中长度为3的环的个数为

C(n,3)

然后再考虑“分割”的这一过程毁掉了多少个环;

考虑A图中的某个点x;

假设它的度数为du[x];

则B图中对应的点x

它的度数应该为n-1-du[x];

(完全图中,每个点的度数都为n-1)

这样;

我们就能找到;

以x为一个点的,长度为3的环;被破坏的个数;

->du[x]*(n-1-du[x]);

即在x这个位置发出两条边(两张不同的图上);

假设出度分别为y和z

则肯定有边能够把y和z连在一起的;(完全图);

然后因为这两条边在不同的图上;

所以肯定是被破坏掉的一个环;

把所有的点被破坏的环的个数累加起来就好;

这里还需要注意一点吧.

就是上面说到的y和z;

必然有一个点我们会重复枚举到;

(但枚举的时候其实还是对应的这个x-y-z,也即重复了);

所以需要除2处理;

因为x,y,z不可能全部都在同一个图上(不然就不是被破坏的环了);

(对应{x},{y,z}或者是{x,y}{z},{x,z}{y},但无论如何都会重复枚举到这个已经算过的环,且只会多算一次);

所以只需要除2就好;

(不用scanf会超。)



【Number Of WA】



1



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0),cin.tie(0) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e6+100; int n,m,x,y;
LL du[N],temp,ans; int main(){
//Open();
//Close();//scanf,puts,printf not use
//init??????
scanf("%d%d",&n,&m);
rep1(i,1,m){
scanf("%d%d",&x,&y);
du[x]++,du[y]++;
}
rep1(i,1,n){
temp = temp + du[i]*(n-1-du[i]);
}
ans = 1LL*n*(n-1)*(n-2)/6 - temp/2;
printf("%I64d\n",ans);
return 0;
}

【codeforces 229C】Triangles的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【25.33%】【codeforces 552D】Vanya and Triangles

    time limit per test4 seconds memory limit per test512 megabytes inputstandard input outputstandard o ...

  3. 【codeforces 553C】Love Triangles

    [题目链接]:http://codeforces.com/problemset/problem/553/C [题意] 给你n个点,m条边; 每种边有2两种类型; 让你补充剩下的边,构造一个完全图; 使 ...

  4. 【41.43%】【codeforces 560C】Gerald's Hexagon

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  5. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  6. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  7. 【codeforces 709D】Recover the String

    [题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...

  8. 【codeforces 709B】Checkpoints

    [题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...

  9. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

随机推荐

  1. 【hdu 6444】Neko's loop

    [链接] 我是链接,点我呀:) [题意] 给你一个序列. 你可以选择起点i. 然后每次往右跳k次. 得到下一个值a[i+k];. 问你跳m次能得到的最大值ma是多少. 如果>=s输出0 否则输出 ...

  2. selenium+java实现浏览器前进、后退和刷新

  3. BJFU fudq的等式

    /* BJFU fudq的等式 http://101.200.220.237/contest/19/problem/118/ 数论 勒让德定理 二分答案 */ #include <cstdio& ...

  4. servlet3.0理解

    1.servlet是用Java编写的服务器端程序,服务器端程序,服务器端程序. 2.Servlet运行于支持Java的应用服务器中.spring mvc有自己的实现servlet 从原理上讲,Serv ...

  5. spring4和hibernate4.0.0的整合

    1.在myeclipse以下创建一个javaproject或者webproject,我创建的时webproject,用的myeclipse2013 2.导入spring的依赖包 3.导入hiberna ...

  6. 【Android】Eclipse自己主动编译NDK/JNI的三种方法

    [Android]Eclipse自己主动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 一.Eclipse关联cy ...

  7. mysql改动用户password

    登录root用户 用root用户登录控制台. use mysql use mysql,mysql是mysql数据库自己主动创建的一个数据库. 改动user表的数据 update user set pa ...

  8. VC 对话框程序加入工具栏button图标及其buttontooltip

    注意:本人使用VC++2010开发环境进行測试. 在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,非常多资源都须要自己手动加入.近期在开发一个程序时.想尝试在对话框程序里面加入 工具 ...

  9. Boost库编译后命名方式

    Boost官网的<Geting Started On Windows>(http://www.boost.org/doc/libs/1_38_0/more/getting_started/ ...

  10. 使用dbms_metadata.get_ddl遇到ORA-31603

    建了一个外部表,想看看这个表的信息,一查就报错了: SQL> select dbms_metadata.get_ddl('TABLE','ext_case1') from dual; ERROR ...