题目大意:见刘汝佳《算法竞赛入门经典——训练指南》P173。

解题思路:

  如果要直接求所有单色三角形的个数似乎不简单,正难则反,先求出所有非单色三角形 cnt,answer = C(n,3)- cnt。

  首先,对于每一个非单色三角形,一定有2个点对应一对异色边,那么我们只需要统计每一个点连接的红边或者蓝边数 t,则这个点连接的异色三角形个数为:t*(n - 1 - t),把各边的异色三角形个数加起来。按照这种方式,对于每一个非单色三角形我们都会从它的2个连接着一对异色边的点计算各一次,所以我们要将得到的异色三角形总数除以二就可以得到正确的 cnt。

AC代码:

 #include <cstdio>
#include <cstring>
#include <iostream> using namespace std;
typedef long long ll;
const int maxn=;
bool color[maxn][maxn];
int main()
{
int T,tmp;
int N;
scanf("%d",&T);
while(T--){
ll t1=;
scanf("%d",&N);
for(int i=;i<N;i+=){
for(int j=i+;j<=N;j+=){
scanf("%d",&tmp);
if(tmp) color[i][j]=color[j][i]=true;
else color[i][j]=color[j][i]=false;
}
}
for(int i=;i<=N;i++){
ll on=;
for(int j=;j<=N;j++){
if(i==j) continue;
if(color[i][j]) on++;
}
t1+=(on*(N--on));
}
ll ans=(ll)N*(N-)*(N-)/-t1/;
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. 2、ASP.NET MVC入门到精通——Entity Framework入门
  2. history.back新页面跳转
  3. CSS的重要性
  4. 智普教育Python培训之Python开发视频教程网络爬虫实战项目
  5. iOS开发 弹簧效果
  6. php获取网页内容方法总结
  7. ubuntu下安装Matlab
  8. [转载]Python模块学习 ---- subprocess 创建子进程
  9. java正则表达式Pattern和Matcher
  10. Kaggle Competition Past Solutions
  11. 访问权限系列一(public/private/protected/default):成员变量
  12. c++内存泄漏处理(积累)
  13. leetcode[164] Maximum Gap
  14. java.util.HashMap和java.util.HashTable (JDK1.8)
  15. 【java虚拟机系列】java虚拟机系列之JVM总述
  16. Arduino IDE for ESP8266 项目云盒子(2)一键自配置+网页服务器
  17. doubleclick protobuf file load to project
  18. JAVA框架:hibernate
  19. Authentication and Authorization in ASP.NET Web API
  20. 源码分析三(Vector与ArrayList的区别)

热门文章

  1. 自动驾驶汽车数据不再封闭,Uber 开源新的数据可视化系统
  2. Vue tools开发工具报错Cannot read property '__VUE_DEVTOOLS_UID__' of undefined
  3. mac OS 配置 svn服务器端
  4. LinearLayout控件
  5. Extmail邮件过滤和杀毒
  6. Recursion and System Stack
  7. TCP 3-Way Handshake
  8. Vim Operations
  9. 数据库SQL语言从入门到精通--Part 1--SQL语言概述
  10. 图论--DFS总结