hdu5072-Coprime(容斥原理)
题意:给N个互不相同的数,选择出两两互质或者两两不互质的三个数,有多少种选法。
题解:一共有C(N,3)中选择方式,减去不符合要求的,剩下的就是答案。
详见 http://blog.csdn.net/csuhoward/article/details/44978087
看到有的题解说是同色三角形,感觉和CCPC长春那个六个人三个人必有互相认识或者互相不认识好像= =
开始求出了所有质数的组合,然后一直T,后来看题解发现只要对现有的数做预处理就可以=。=
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath> using namespace std;
typedef long long ll; const int N = ;
int a[N], n;
int fac[N][], sz[N];
int ret[N];
int vis[N]; int prime[N], p;
bool is_prime[N]; int sieve()
{
for (int i = ; i < N; ++i) is_prime[i] = true;
is_prime[] = is_prime[] = false;
for (int i = ; i < N; ++i) {
if (is_prime[i]) {
prime[p++] = i;
for (int j = * i; j <= n; j += i)
is_prime[j] = false;
}
}
return p;
} void init() {
int cnt, x, limit;
for (int i = ; i <= ; ++i) {
x = i, limit = sqrt(x), cnt = ;
for (int k = ; prime[k] <= limit; ++k) {
if (x % prime[k] == ) fac[i][cnt++] = prime[k];
while (x % prime[k] == ) x /= prime[k];
}
if (x > ) fac[i][cnt++] = x;
sz[i] = cnt;
}
} ll solve() {
memset(ret, , sizeof ret);
for (int i = ; i < N; ++i) {
for (int j = i; j < N; j += i) {
if (vis[j]) ret[i]++;
}
} ll ans = ;
for (int i = ; i < n; ++i) {
int cnt = sz[a[i]];
int st = <<cnt;
ll tmp = ;
for (int k = ; k < st; ++k) {
int val = ;
int w = ;
for (int j = ; j < cnt; ++j) {
if (k & (<<j)) {
val *= fac[a[i]][j];
w ^= ;
}
}
if (w) tmp += ret[val]-;
else tmp -= ret[val]-;
}
ans += tmp * (n-tmp-);
}
return ans;
} int main()
{
int T;
scanf("%d", &T);
sieve();
init();
while (T--) {
scanf("%d", &n);
memset(vis, , sizeof vis); // everyone has unique id
for (int i = ; i < n; ++i) scanf("%d", &a[i]), vis[a[i]] = ;
ll ans = solve();
ll tot = (ll)n * (n-) * (n-) / ;
printf("%lld\n", tot - ans/);
}
return ;
}
hdu5072-Coprime(容斥原理)的更多相关文章
- HDU 4135 Co-prime(容斥原理)
Co-prime 第一发容斥,感觉挺有意思的 →_→ [题目链接]Co-prime [题目类型]容斥 &题意: 求(a,b)区间内,与n互质的数的个数. \(a,b\leq 10^{15}\) ...
- hdu4135 Co-prime 容斥原理
Given a number N, you are asked to count the number of integers between A and B inclusive which are ...
- hdu5072 Coprime (2014鞍山区域赛C题)(数论)
http://acm.hdu.edu.cn/showproblem.php?pid=5072 题意:给出N个数,求有多少个三元组,满足三个数全部两两互质或全部两两不互质. 题解: http://dty ...
- hdu 5072 Coprime 容斥原理
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...
- HDU5072 容斥原理
G - Coprime Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit ...
- 2014鞍山现场赛C题HDU5072(素筛+容斥原理)
Coprime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total ...
- [容斥原理] hdu 4135 Co-prime
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4135 Co-prime Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 3388 Coprime(容斥原理+二分)
Coprime Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- HDU 5072 Coprime (单色三角形+容斥原理)
题目链接:Coprime pid=5072"> 题面: Coprime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- HDU4135 Co-prime(容斥原理)
题目求[A,B]区间内与N互质数的个数. 可以通过求出区间内与N互质数的个数的前缀和,即[1,X],来得出[A,B]. 那么现在问题是求出[1,X]区间内与N互质数的个数,考虑这个问题的逆问题:[1, ...
随机推荐
- [LintCode]perfect-squares(DP)
题目链接:http://www.lintcode.com/zh-cn/problem/perfect-squares/ 就是求最小价值的完全背包,初始化dp[i]=i,假设全是1的时候是最多的,之后就 ...
- Toad
1. Toad 规矩: toad 不会违反, 限制, 扩大 你当前用户的权限, toad 不会影响你定义的关于instance的内容. 2. toad 可以执行大部分在 sql*plus 中执行的命令 ...
- 如何将SD卡或者TF卡的debian系统刷入nand
1. 在windows端下载辅助文件: a) http://dl.cubieforums.com/loz/boot_partition/bootloader/cubie_nand_uboot_part ...
- SVG 动画实现弹性的页面元素效果
Codrops 分享了一些给SVG元素加上弹性动画的灵感.实现的思路是把一个SVG元素整合成一个组件,然后从一个路径弹性动画到另一个.这种效果可以应用到像菜单,按钮或其它元素,使得交互更有趣,看起更原 ...
- 51nod1274 最长递增路径
将边排序后dp一下就可以了. #include<cstdio> #include<cstring> #include<cctype> #include<alg ...
- UVa 1225 Digit Counting
题意:给出n,将前n个整数顺次写在一起,统计各个数字出现的次数. 用的最笨的办法--直接统计-- 后来发现网上的题解有先打表来做的 #include<iostream> #include& ...
- centos 升级php、mysql(webtatic)
1)定义使用webtatic源 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm (ps: ...
- Spring3.1中使用profile配置开发测试线上环境
如果在开发时进行一些数据库测试,希望链接到一个测试的数据库,以避免对开发数据库的影响. 开发时的某些配置比如log4j日志的级别,和生产环境又有所区别. 各种此类的需求,让我希望有一个简单的切换开发环 ...
- HDU1026 Ignatius and the Princess I
解题思路:打印路径是关键,细节处理见代码. #include<cstdio> #include<cstring> #include<algorithm> using ...
- bash 的漏洞,你们中招了吗?
http://threatpost.com/major-bash-vulnerability-affects-linux-unix-mac-os-x 检测: $ env x='(){:;}; echo ...