hdu_5738_Eureka(脑洞)
题目链接:hdu_5738_Eureka
题意:
这题感觉说不清楚,坑点有点坑,一不小心就会推出错误的公式,然后最重要的是你还不知道你推错了
题解:
这里贴一个官方的题解
Eureka
xjb推导一下可以知道best set一定是一些共线的点, 于是问题变成问有多少个子集共线. 首先, 把所有点按照(x,y)(x,y)双关键字排序, 然后枚举最左边的点ii, 那么其他点jj一定满足j > ij>i. 把在这个点右边的点都做下极角排序(按照\frac{1}{gcd(dx, dy)}(dx, dy)gcd(dx,dy)1(dx,dy)排序), 统计下共线的就好了. 需要注意下对重点的处理.
我没有排序,用的Hash来统计直线
#include<cstdio>
#include<cstring>
#include<algorithm>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long LL;
int t,n,mod=1e9+;
const int M=(<<)-,N=1e3+;
struct E{int a,b,cnt;E *nxt;}*g[M+],pool[N],*cur=pool;int vis[M+],T;
void init_Hash(){T++,cur=pool;}
inline void ins(int a,int b,int cnt,E *p=NULL){
int u=(a*+b)&M;
if(vis[u]<T)vis[u]=T,g[u]=NULL;
for(p=g[u];p;p=p->nxt)if(p->a==a&&p->b==b){p->cnt+=cnt;return;}
p=cur++,p->a=a,p->b=b,p->cnt=cnt,p->nxt=g[u],g[u]=p;
}
struct point{int x,y;}p[];
int pw[];
int main(){
int t;
scanf("%d",&t);
pw[]=;
F(i,,)pw[i]=(pw[i-]<<)%mod;
while(t--){
scanf("%d",&n);
F(i,,n)scanf("%d%d",&p[i].x,&p[i].y);
LL ans=;
F(i,,n-){
int ct=;
init_Hash();
F(j,i+,n){
if(p[i].x==p[j].x&&p[i].y==p[j].y)ct++;
else{
int ax=p[i].x-p[j].x,ay=p[i].y-p[j].y,gd=__gcd(abs(ax),abs(ay));
ax/=gd,ay/=gd;
if(ax<)ax=-ax,ay=-ay;
if(ax==||ay==)if(ax==)ay=;else ax=;
ins(ax,ay,);
}
}
int seg=;
F(j,,M)if(vis[j]==T)
for(E *p=g[j];p;p=p->nxt)ans=(ans+pw[p->cnt+ct]-)%mod,seg++;
ans-=(1LL*(seg-)*(pw[ct]-))%mod;
ans=(ans+mod)%mod;
}
ans=(ans+mod)%mod;
printf("%lld\n",ans);
}
return ;
}
hdu_5738_Eureka(脑洞)的更多相关文章
- PHP基础班初学心得:脑洞实验-JS变量存储函数与return的一些问题
本人刚参加PHP基础班培训第一天,由于之前毫无基础,分享的心得可能不规范,方法也许也"旁门左道",不能保证质量,只作自己总结学习,也希望能帮助到同样是初学者的朋友们,共同进步. 在 ...
- 「脑洞」图片转HTML(支持动画)
也许是受到很久以前看到的这玩意儿的原因:The Shapes of CSS 现在开脑洞写了个自动转换,顺便支持了动画……嗯,纯 CSS (:з」∠) 主要步骤就是用 Python 读图片,然后把像素全 ...
- 【BZOJ-4592】脑洞治疗仪 线段树
4592: [Shoi2015]脑洞治疗仪 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 69 Solved: 38[Submit][Status] ...
- 图论(KM算法,脑洞题):HNOI 2014 画框(frame)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABPoAAANFCAIAAABtIwXVAAAgAElEQVR4nOydeVxTV/r/n9ertaJEC4
- BCTF Web Code–考脑洞,你能过么?
BCTF Web Code–考脑洞,你能过么? 1)打开链接,是一张图片 根据URL特点推断可能是有文件包含漏洞 2) 将jpg参数修改成index.php,查看源代码,发现base64编码后的代码 ...
- UVA1103-Ancient Messages(脑洞+dfs)
Problem UVA1103-Ancient Messages Accept: 1176 Submit: 6103 Time Limit: 3000 mSec Problem Descriptio ...
- 【题解】Luogu P4344 [SHOI2015]脑洞治疗仪
原题传送门:P4344 [SHOI2015]脑洞治疗仪 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看吧 珂朵莉树好题啊 我一开始一直Re65 后来重构代码就ac了,或许是rp问题 ...
- hdu 5308 (2015多校第二场第9题)脑洞模拟题,无语
题目链接:http://acm.hdu.edu.cn/listproblem.php?vol=44 题意:给你n个n,如果能在n-1次运算之后(加减乘除)结果为24的输出n-1次运算的过程,如果不能输 ...
- 【BZOJ4592】[Shoi2015]脑洞治疗仪 线段树
[BZOJ4592][Shoi2015]脑洞治疗仪 Description 曾经发明了自动刷题机的发明家SHTSC又公开了他的新发明:脑洞治疗仪--一种可以治疗他因为发明而日益增大的脑洞的神秘装置. ...
随机推荐
- c# 操作word demo
/// <summary> /// 新创建word /// </summary> /// <param name="fileSaveDirectory" ...
- tomcat安装完设定用户名和密码
vi conf/tomcat-user.xml<tomcat-users> <role rolename="manager"/> <role role ...
- iOS 时间戳的问题
- (NSString *)timeWithTimeIntervalString:(NSString *)timeString { // 格式化时间 NSDateFormatter* formatte ...
- 《JavaScript高级程序设计》读书笔记 ---操作符一
一元操作符只能操作一个值的操作符叫做一元操作符.一元操作符是ECMAScript 中最简单的操作符. 1. 递增和递减操作符递增和递减操作符直接借鉴自C,而且各有两个版本:前置型和后置型.顾名思义,前 ...
- 学习笔记——责任链模式ChainOfResponsibility
责任链模式,主要是通过自己记录一个后继者来判断当前的处理情况.Handler中,再增加一个方法用于设置后继对象,如SetHandler(Handler obj). 然后Handler类以其子类的处理方 ...
- 【第三篇】学习 android 事件总线androidEventbus之发布事件,子线程中接收
发送和接收消息的方式类似其他的发送和接收消息的事件总线一样,不同的点或者应该注意的地方: 1,比如在子线程构造方法里面进行实现总线的注册操作: 2,要想子线程中接收消息的功能执行,必须启动线程. 3, ...
- ZUFE OJ 2288 God Wang I
Description God Wang 是ZUFE的神犇,有一天他想到一种神奇的变换,并且将它命名为GodW变换 对于一个数字n,该变换后的值GodW(n)为,先令X=n 第一步,如果X为个位数,G ...
- ios实现文字的自适应
如果你是用xib搭的cell界面 那么cell上面的UIlabel就不能设置宽高 要选择上下左右自适应 并且label的行数设置为0 然后在tableView的代理方法 (UITable ...
- nefu 115 斐波那契的整除
Description 已知斐波那契数列有如下递归定义,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前几项可以表示为1, 1,2 ,3 ,5 ,8,13, ...
- Python之路:常用算法与设计模式
选择排序 时间复杂度 二.计算方法 1.一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花 ...