单色三角形(hdu-5072
单色三角形模型:空间里有n个点,任意三点不共线。每两个点之间都用红色或者黑色线段链接。如果一个三角形的三条边同色,责成这个三角形是单色三角形。对于给定的红色线段列表,找出单色三角形的个数。
分析:对于一个顶点,设他连红线的点又x个,那么它脸黑线的点有(n-1-x)个,那么能组成的三角形有x*(n-1-x)个,因为每个点都会遍历,所以得到的结果会重复算,答案应除2。最终结果是C(n, 3) - sum/2。
hdu-5072
题意,给你n个数,问你有多少对a. b. c 使两两互质,或者两两不互质。
分析:由上我们可以将互质不互质看成红蓝线,那么处理方式就是一样的了。其实就是组合数学和容斥。
ll pri[maxn],pri_num;
ll mu[maxn];//莫比乌斯函数值
bool vis[maxn]; void mobius() {//筛法求莫比乌斯函数
pri_num = ;//素数个数
memset(vis, false, sizeof(vis));
vis[] = true;
mu[] = ;
for(int i = ; i <maxn; i++){
if(!vis[i]){
pri[pri_num++] = i;
mu[i] = -;
}
for(int j=; j<pri_num && i*pri[j]<maxn ; j++){
vis[i*pri[j]]=true;//标记非素数
if(i%pri[j])mu[i*pri[j]] = -mu[i];
else {
mu[i*pri[j]] = ;
break;
} }
}
}
int a[maxn];
ll num[maxn], have[maxn]; void solve() {
ll n; scanf("%lld", &n);
memset(vis, , sizeof(vis));
memset(a, , sizeof(a));
memset(have, , sizeof(have));
memset(num, , sizeof(num));
int maxx=;
for (int i=; i<n; i++) {
scanf("%d", &a[i]);
vis[a[i]]++;
maxx=max(maxx, a[i]);
}
for (int i=; i<=maxx; i++) {
for (int j=i; j<=maxx; j+=i)
num[i] += vis[j];
for (int j=i; j<=maxx; j+=i) {
have[j] += mu[i]*num[i];
}
}
ll ans=;
for (int i=; i<n; i++) {
if (a[i]!=) {
ans += have[a[i]]*(n--have[a[i]]);
}
}
ans = n*(n-)*(n-)/ - ans/;
printf("%lld\n", ans);
}
int main() {
int t=;
// freopen("in.txt", "r", stdin);
scanf("%d", &t);
mobius();
for (int T=; T<=t; T++) {
// printf("Case %d: ", T);
solve();
}
return ;
}
单色三角形(hdu-5072的更多相关文章
- HDU 5072 Coprime (单色三角形+容斥原理)
题目链接:Coprime pid=5072"> 题面: Coprime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- hdu 5072 Coprime(同色三角形+容斥)
pid=5072">http://acm.hdu.edu.cn/showproblem.php?pid=5072 单色三角形模型 现场赛和队友想了3个小时,最后发现想跑偏了.感觉好可惜 ...
- Coprime (单色三角形+莫比乌斯反演(数论容斥))
这道题,先说一下单色三角形吧,推荐一篇noip的论文<国家集训队2003论文集许智磊> 链接:https://wenku.baidu.com/view/e87725c52cc58bd631 ...
- LA 5846 霓虹灯广告牌(单色三角形问题)
https://vjudge.net/problem/UVALive-5846 题意: 圆周上有n个点,两两相连,只能涂红色或蓝色.求单色三角形的个数. 思路: 这个问题在训练指南105页有详细讲解. ...
- Hdu 5072 Coprime(容斥+同色三角形)
原题链接 题意选出三个数,要求两两互质或是两两不互质.求有多少组这样的三个数. 分析 同色三角形n个点 每两个点连一条边(可以为红色或者黑色),求形成的三条边颜色相同的三角形的个数反面考虑这个问题,只 ...
- HDU 5072 Coprime 同色三角形问题
好吧,我承认就算当时再给我五个小时我也做不出来. 首先解释同色三角形问题: 给出n(n >= 3)个点,这些点中的一些被涂上了红色,剩下的被涂上了黑色.然后将这些点两两相连.于是每三个点都会组成 ...
- HDU 4503 湫湫系列故事——植树节(单色三角形)
题目链接 #include <cstdio> using namespace std; int main() { int n,sum,a,t,i; scanf("%d" ...
- hdu 5072 Coprime
http://acm.hdu.edu.cn/showproblem.php?pid=5072 题意:给出 n 个互不相同的数,求满足以下条件的三元无序组的个数:要么两两互质要么两两不互质. 思路:根据 ...
- hdu 5072 两两(不)互质个数逆向+容斥
http://acm.hdu.edu.cn/showproblem.php?pid=5072 求n个不同的数(<=1e5)中有多少组三元组(a, b, c)两两不互质或者两两互质. 逆向求解,把 ...
随机推荐
- ubuntu16.04下docker安装和简单使用
前提条件 操作系统 docker-ce支持的ubuntu版本: Bionic 18.04 (LTS) Xenial 16.04 (LTS) Trusty 14.04 (LTS) 卸载旧版本docker ...
- 支付宝 net
- ARM920T的Cache
转载自:http://www.eefocus.com/mcu-dsp/242034 ARM920T有16K的数据Cache和16K的指令Cache,这两个Cache是基本相同的,数据Cache多了一些 ...
- solr schema.xml Field属性详解
<field name="id" type="string" indexed="true" stored="true&quo ...
- EasyUi 复杂多表头设置
columns: [ [ { field: 'Test', title: '测试', rowspan: 3, width: 100, sortable: true }, { title: '测试1', ...
- web服务器案例
HTTP 请求方式 GET 获取数据 POST 修改数据 PUT 保存数据 DELETE 删除 OPTI ...
- 26.python常用端口号
MySQL默认端口 3306 Redis默认端口 6379 MongoDB默认端口 27017 django端口 8000 flask端口 5000 pyspider服务端口 5000(由flask开 ...
- for 没有作用域的说话
for i in range(10): passprint(i) 打印的结果就是9 打印的最后一次结果
- Activity中满屏和去标题的实现方法
两种方式: 在xml文件中进行配置 在项目的清单文件AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: a ...
- node起一个简单服务,打开本地项目或文件浏览
1.安装nodejs 2.在项目文件夹目录下创建一个js文件,命名server.js(自定义名称),内容如下 var http = require('http'); var fs = require( ...