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

合并同一个位置上的点,然后统计个数,利用公式先求出至少包含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. js 判断字符串长度

    转载来处:https://www.cnblogs.com/hello321/p/7821400.html 第一种使用方法: var aa="1,2,3,4,5"; var bb=a ...

  2. CF891C Envy 最小生成树/虚树

    正解:最小生成树/虚树 解题报告: 传送门! sd如我就只想到了最暴力的想法,一点儿优化都麻油想到,,,真的菜到爆炸了QAQ 然后就分别港下两个正解QAQ 法一,最小生成树 这个主要是要想到关于最小生 ...

  3. TZOJ 3198: 区间和

    描述 给定n个数据,有两个操作,加减其中的一个数据,当然还可查询在某段数据的和. 输入 输入数据有多组,每组数据的第一行输入n,1=<n<=500000,代表数据的个数.第二行输入具体数据 ...

  4. finecms设置伪静态后分享到微信不能访问怎么处理

    finecms设置伪静态后分享到微信不能访问,分享的链接自动增加了一串参数,类似这样的***.html?from=singlemessage&isappinstalled=0,刚开始ytkah ...

  5. 数据库——MongoDB

    what's the MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式 ...

  6. MySQL大表DROP删除小技巧(转)

    在日常工作中,经常会遇到历史大表从主库上迁移到备份机,以便腾出主库空间,那么如果你直接drop table 后,可能会引起数据库抖动,连接数升高等问题,从而影响业务. 那么用一个小技巧,即可轻松平滑的 ...

  7. git的介绍

    1.Git工作区域 2.向仓库中添加文件流程 三.Git初始化及仓库创建和操作 1.Git安装之后需要进行一些基本信息设置 a.设置用户名:git  config -- global  user.na ...

  8. echarts给数据视图添加表格样式

    1,准备好样式 <style>.myTable {margin: 0 auto;/* height: 300px; */width: 700px;} .myTitle {backgroun ...

  9. poi api工具

    ------------官网api地址 http://poi.apache.org/apidocs/index.html ------------官方下载地址 http://poi.apache.or ...

  10. Font Awesome 最简单应用例子

    简介: Font Awesome为您提供可缩放的矢量图标,您可以使用CSS所提供的所有特性对它们进行更改,包括:大小.颜色.阴影或者其它任何支持的效果. 使用方法: 引入<link rel=&q ...