多校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水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数 ...
随机推荐
- JavaWeb关于session生命周期的几种设置方法
一般session的生命周期都是建立在用户登录系统后对用户信息进行一个记录,session类似于你有一张银行卡,而卡里的钱就是属于session存储的信息,卡掉了就不能取出里面的钱. 以前sessio ...
- 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝
[BZOJ4325]NOIP2015 斗地主 Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗 ...
- SharePoint服务器端对象模型 之 对象模型概述(Part 2)
(三)Url 作为一个B/S体系,在SharePoint的属性.方法参数和返回值中,大量的涉及到了Url,总的来说,涉及到的Url可以分为如下四类: 绝对路径:完整的Url,包含了协议头(http或h ...
- Java多线程的两种实现方式
Java总共有两种方式实现多线程 方式1:通过继承Thread类的方式 package com.day04; /** * 通过继承Thread类并复写run方法来是实现多线程 * * @author ...
- Git使fork项目与源项目保持一致方法
Github上经常干的一件事情是看到好的项目,总会fork到自己的项目列表里,但是源项目如果更新了,怎么同步到我们自己的fork项目呢? 操作如下: 先clone自己的fork项目到本地工程目录, g ...
- JavaScript数据结构与算法-列表练习
实现列表类 // 列表类 function List () { this.listSize = 0; // 列表的元素个数 this.pos = 0; // 列表的当前位置 this.dataStor ...
- 【转】IBM PowerVM虚拟化技术笔记
1. 从CPU虚拟化的角度, 分区(partition)可以分成两大类:Micro-partition和Dedicated-procesor.前者可以将物理处理器以0.01的 粒度分配给微分区,分区创 ...
- RabbitMQ_消息队列基本使用_1
什么叫消息队列 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象. 消息队列(Message Queue)是一种应用间的通信方式,消 ...
- su: warning: cannot change directory to : Permission denied ;-bash: bash_profile: Permission denied
一.查看主目录权限对不对 1:问题描述 [root@ser6-52 ~]# su - mongodb su: warning: cannot change directory to /home/mon ...
- vim之可视化
参考文档:http://blog.csdn.net/ii1245712564/article/details/46960387 先梳理关键知识,方便查阅 v(小v):进入可视化 V(大V):进入可视行 ...