JZOJ 1714. 小x的三角形(triangles.pas/cpp)
1714. 【9.29NOIP普及模拟】小x的三角形(triangles.pas/cpp)
(File IO): input:triangles.in output:triangles.out
时间限制: 1000 ms 空间限制: 128000 KB 具体限制
Goto ProblemSet
Idea from lyx & zyf ;
借助几天前的一题来解释吧,我们可以把小x的边看做图中的实边,小o的边看做图中的虚边
他们两人所有的三角形就是同为虚边或者同为实边的种数之和, 具体求法如上:
P.S. 其实是CATALAN。。。。
1 { 2 by @bobble ! 3 2017-1-19 4 } 5 program triangles; 6 const 7 inf='triangles.in'; 8 outf='triangles.out'; 9 var 10 s,e,i,n,m:longint; 11 ans,c,aaa:int64; 12 yes:array[0..20000] of longint; 13 begin 14 assign(input,inf); 15 assign(output,outf); 16 reset(input); rewrite(output); 17 18 readln(n,m); 19 for i:= 1 to m do 20 begin 21 readln(s,e); 22 inc(yes[s]); 23 inc(yes[e]); 24 end; 25 for i:= 1 to n do 26 c:=c+yes[i]*(n-yes[i]-1); 27 c:=c div 2; 28 aaa:=n*(n-1)*(n-2) div 6; 29 ans:=aaa-c; 30 writeln(ans); 31 32 close(input); 33 close(output); 34 end.