由于斜率的储存精度不够,所以使用最简分数表示记录。

合并同一个位置上的点,然后统计个数,利用公式先求出至少包含2个点的数量。

然后再是求某位之上的点与某一斜率的个数,那就是每边至少一个点的个数相乘。

#include<bits/stdc++.h>
using namespace std; const int maxn = ;
const long long mod = 1e9 + ;
long long powtwo[maxn];
map<pair<int, int>, int>mp; struct node{
int x, y, cnt;
bool operator<(const node &a)const{
if(x == a.x) return y < a.y;
else return x < a.x;
}
}a[maxn]; int main(){
powtwo[] = ;
for(int i = ; i < maxn; i ++) powtwo[i] = powtwo[i - ] * % mod; int T, n;scanf("%d",&T);while(T --){
scanf("%d",&n);
for(int i = ; i < n; i ++)
scanf("%d%d",&a[i].x, &a[i].y);
sort(a, a + n);
int i, j, cnt = ;
for(i = ; i < n;){
for(j = i + ; j < n; j ++)
if((a[i].x != a[j].x) || (a[i].y != a[j].y))
break; a[cnt].x = a[i].x;
a[cnt].y = a[i].y;
a[cnt ++].cnt = j - i;
i = j;
} long long ans = 0LL;
for(i = ; i < cnt; i ++)
ans = (ans + ((a[i].cnt > ) ? powtwo[a[i].cnt] - - a[i].cnt : )) % mod; for(i = ; i < cnt; i ++){
mp.clear();
for(j = i + ; j < cnt; j ++){
int x = a[j].x - a[i].x;
int y = a[j].y - a[i].y;
int gcd = __gcd(x, y);
if(gcd){
x /= gcd; y /= gcd;
}
mp[make_pair(x, y)] += a[j].cnt;
}
for(auto it : mp){
ans += (powtwo[a[i].cnt] - ) * (powtwo[it.second] - );
ans %= mod;
}
}
printf("%lld\n",ans);
}
return ;
}

Eureka (数学组合 + 斜率)的更多相关文章

  1. [BZOJ5305] [HAOI2018] 苹果树 数学 组合计数

    Summary 题意很清楚: 小 \(C\) 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 \(C\) 发现每一天这棵树都会生长出一个新的结点. 第一天的时候 ...

  2. UVA11538 - Chess Queen(数学组合)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. Codeforces 626D Jerry's Protest 「数学组合」「数学概率」

    题意: 一个袋子里装了n个球,每个球都有编号.甲乙二人从每次随机得从袋子里不放回的取出一个球,如果甲取出的球比乙取出的球编号大则甲胜,否则乙胜.保证球的编号xi各不相同.每轮比赛完了之后把取出的两球放 ...

  4. 数学(组合,容斥):COGS 1220. 盒子与球

    1220. 盒子与球 ★   输入文件:boxball.in   输出文件:boxball.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] 现有r个互不相同的盒子和n ...

  5. HDU 6425 Rikka with Badminton(组合问题签到)题解

    题意:问你有多少种选法使得不能满足大于等于2个拍子且大于等于1个球. 思路:数学组合问题,分类讨论一下,刚开始的时候分的很乱,写的乱七八糟的...还有注意MOD,基本上有大数相乘的地方都要先MOD一下 ...

  6. kaggle数据挖掘竞赛初步--Titanic<随机森林&特征重要性>

    完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...

  7. Spark的Straggler深入学习(2):思考Block和Partition的划分问题——以论文为参考

    一.partition的划分问题 如何划分partition对block数据的收集有很大影响.如果需要根据block来加速task的执行,partition应该满足什么条件? 参考思路1:range ...

  8. spoj 78

    数学  组合 隔板法 #include <iostream> #include <cstring> #include <cstdio> #include <s ...

  9. 可视化n次贝塞尔曲线及过程动画演示--大宝剑

    起因 研究css中提供了2次.3次bezier,但是没有对n次bezier实现.对n次的实现有很大兴趣,所以就用js的canvas搞一下,顺便把过程动画模拟了一下. 投入真实生产之中,偏少. n次be ...

随机推荐

  1. LeetCode 589 N-ary Tree Preorder Traversal 解题报告

    题目要求 Given an n-ary tree, return the preorder traversal of its nodes' values. 题目分析及思路 题目给出一棵N叉树,要求返回 ...

  2. NodeJS笔记(一)-免安装设置

    之前在官网下载的nodejs win64版本4.* 最近发现nodejs都已经更新到了7.X 稳定版都升级到了6.X ,nodejs升级的真是神速了,想要升级下, 使用官方给的方法更新失败(使用的是n ...

  3. Jenkins 忘记admin用户名以及密码

    1.进入 如果安装的war包,路劲如下: C:\Users\LENOVO\.jenkins\ 2. 1)方式一: 打开config.xml  ->将useSecurity设置为false 2)方 ...

  4. Java基础知识之集合

    Collection集合 特点:长度可变,只能存储引用类型,可以存储不同的类型的元素 list 特点:元素有序(存储和取出的顺序一致),元素可以重复.list除了可以用迭代器循环遍历之外,因为其是有序 ...

  5. SQL server 2005数据库的还原与备份

    一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2005→SQL Server Management Studio ,这里我以UMVTEST命 ...

  6. 【Python爬虫】正则表达式与re模块

    正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...

  7. commonjs模块和es6模块的区别?

    commonjs模块和es6模块最主要的区别:commonjs模块是拷贝,es6模块是引用,但理解这些,先得理解对象复制的问题,在回过头来理解这两模块的区别. 一.基本数据类型的模块 ./a1.js ...

  8. Android Studio安装配置

    1.首先我们进官网 http://www.android-studio.org/  (注意一下除了SDK外还需要JDK) 2.选择历史版本下载 3.随意选择版本这里笔者选用1.2.1版本,主要下带bu ...

  9. SSLv3存在严重设计缺陷漏洞(CVE-2014-3566)

    SSLv3存在严重设计缺陷漏洞(CVE-2014-3566) 1.引发问题的原因 SSLv3漏洞(CVE-2014-3566),该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等 ...

  10. HBase单机模式安装

    第一部分 安装前准备 1.安装hadoop 今天刚刚学了hbase的一点基础,准备安装Hbase实际操练一下.因为安装hbase的前提条件是已经成功安装了hadoop,而且hadoop的版本要和hba ...