多校hdu5738 寻找
这道题前面给了两个公式,其实仔细分析一下,就会发现其实是给了你一堆点的坐标,然后让你求这些点有多少种组合可以形成共线的情况当两个点在一个坐标上时这两个点可以看做是不同的两个点,也就是说如果两个点在一个坐标上,这两个点也算共线我的这道题的解题思路就是先把每一个点的横坐标按从小到大排好序,然后从第一个点开始遍历,当遍历到一个点的时候,以这个点为起点,再向下遍历,记录这个起点和以后每个点的向量,把这个向量化简到最小,用一个map保存起来,最后通过总共有多少个向量数来计算有多少种共线。
我们便利在当前点坐标要记住有多上重复的(用cnt),然后在遍历与这一点共线(线的数量sum)的每个点(除重复点的外),然后计算重复点能组成best对+与之共线的点(n)与使点构成的组合数=(2^cnt-n-1)+sum*((2^n-1)*(2^cnt-1)).
注意要用 1long long,2要在结果上mod;
以下是代码:
#include<map>
#include<stdio.h>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long
#define N 1010
const int mod =1e9+;
map<pair<int ,int >, int> M;
map<pair<int,int>,int>::iterator it;//迭代器
LL n,cnt;
struct T
{
LL x,y;
} point[N];
LL gcd(LL a,LL b) //最大公约数
{
return b==?a:gcd(b,a%b);
}
bool cmp(T a,T b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
LL sm(LL a, LL b) //快速幂
{
LL ans = ;
a = a%mod;
while (b > )
{
if (b % == )
ans = (ans*a) % mod;
b = b / ;
a = (a*a) % mod;
}
return ans;
}
int main()
{
LL t,i,j;
LL ans;
cin>>t;
while(t--)
{
ans=;
scanf("%lld",&n);
for(i=; i<n; i++)
{
scanf("%lld%lld",&point[i].x,&point[i].y);
}
sort(point,point+n,cmp);
for(i=; i<n-; i++)
{
M.clear();
cnt=;
for(j=i+; j<n; j++)
{
LL x1=point[j].x-point[i].x;
LL y1=point[j].y-point[i].y;
if(!x1&&!y1)
{
cnt++;
continue;
}
LL s=gcd(x1,y1);
M[make_pair(x1/s,y1/s)]++;
}
if(cnt>)
{
ans%=mod;
ans+=sm(,cnt)--cnt;
}
LL ans1=sm(,cnt)-;
for(it=M.begin(); it!=M.end(); it++)
{
int h=it->second;
ans+=(ans1*(sm(,h)-))%mod;
}
i+=cnt-;
}
printf("%I64d\n",ans%mod);
}
return ;
}
多校hdu5738 寻找的更多相关文章
- 第四届西安邮电大学acm-icpc校赛 流浪西邮之寻找火石碎片 多体积条件背包
题目描述 众所周知,由于木星引力的影响,世界各地的推进发动机都需要进行重启.现在你接到紧急任务,要去收集火石碎片,重启西邮发动机.现在火石碎片已成为了稀缺资源,获得火石碎片需要钱或者需要一定的积分.火 ...
- 三校联训 【NOIP模拟】寻找
题面 “我有个愿望,我希望穿越一切找到你.” 这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三种(假设当前我在(x,y ...
- HZNU第十二届校赛赛后补题
愉快的校赛翻皮水! 题解 A 温暖的签到,注意用gets #include <map> #include <set> #include <ctime> #inclu ...
- 2017.12.10《“剑锋OI”普及组多校联盟系列赛(14)#Sooke#Kornal 的课余时间 》分析报告
报告内容如下 - - [导语] ------ 太晚了,时间也紧,一切尽量从简吧 PS:本文题目来自剑锋OI 所以废话也不多说,进入正题吧,代码直接跟在题目后边儿,主要分析在代码前,次要的就写在代码后面 ...
- Contest2073 - 湖南多校对抗赛(2015.04.06)
Contest2073 - 湖南多校对抗赛(2015.04.06) Problem A: (More) Multiplication Time Limit: 1 Sec Memory Limit: ...
- Contest2071 - 湖南多校对抗赛(2015.03.28)
Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...
- Scrapy爬虫框架之爬取校花网图片
Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...
- KNY团队与“易校”小程序介绍
一.团队介绍 “KNY”团队是软件工程专业中的一支充满了斗志,充满了自信的队伍,由三人组成,每个队员都在为我们共同一致的目标而努力:我们三个人的小程序的知识都相对薄弱,但我们不甘落后,一直在努力的学习 ...
- 2014哈商大ICPC/ACM校赛解题报告
被debug邀请去參加校赛,哎,被虐..我对不起工大.. 由于本人不搞ACM,算法处于HelloWorld水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数 ...
随机推荐
- 47、ListView setSelection() 和 setSelectionFromTop()
http://blog.csdn.net/manoel/article/details/39183025 http://blog.csdn.net/a859522265/article/details ...
- 【BZOJ2762】[JLOI2011]不等式组 树状数组
[BZOJ2762][JLOI2011]不等式组 Description 旺汪与旺喵最近在做一些不等式的练习.这些不等式都是形如ax+b>c 的一元不等式.当然,解这些不等式对旺汪来说太简单了, ...
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
原创文章,欢迎转载.转载请注明:关东升的博客 可选类型: 我们先看看如下代码: n1 = nil //编译错误 let str: String = nil //编译错误 Int和String类型不能接 ...
- 防sql注入之参数绑定 SQL Injection Attacks and Defense
http://php.net/manual/zh/pdo.prepared-statements.php 预处理语句与存储过程 很多更成熟的数据库都支持预处理语句的概念.什么是预处理语句?可以把它看作 ...
- spring多数据源事务配置
项目中遇到多数据源问题, 对于每个数据源需要单独完成事务控制, 这里记录下具体实现方法 在spring配置文件中 定义两个数据源 <!-- 数据源定义(spring-jndi) --> ...
- python函数回顾:abs()
函数:abs() 官方英文文档解释 abs(x) Return the absolute value of a number. The argument may be a plain or long ...
- python多进程编程(一)
multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.Pyt ...
- tomcat 的 Pipeline 机制
一.server.xml 在每个容器对象里面都有一个pipeline,Pipeline就像是每个容器的逻辑总线. <Host name="localhost" appBase ...
- (2)linux未使用eth0,未使用IPV4导致无法连接
首先ifconfig查看网络IP 看,我这里默认启用了2个网卡,一个是eth0,另一个是lo(基于loopback方式) 1.如果有eth0则做:界面修改 (1)输入命令setup,选择network ...
- github的代码上传成功但是不显示绿格子(一直拖....心痛的教训.....)
损失了我特么的很多格子啊啊啊啊,必死强迫症啊!!!! 究其原因就是客户端绑定邮箱错误 本地 :git config user.email 显示邮箱是否和github中设定的一样? git config ...