洛谷 P1715 [USACO16DEC]Lots of Triangles好多三角形 解题报告
P1715 [USACO16DEC]Lots of Triangles好多三角形
题目描述
农民约翰希望通过卖出他拥有的一部分土地来增加收入。他在这片土地上种了\(N\)棵树(\(3\le N\le 300\)),每棵树都可以用一个二维网格图上的一个坐标来表示,没有三棵树是共线的。约翰想以3棵树做顶点围成三角形来分割地,以确定地的大小和形状,基于约翰所有树可能组成的三树组合,当然有\(L=\binom{N}{3}\)种可能考虑分割贩卖的土地切块。
一块分出的三角形土地有价值\(v\),\(v\)的大小决定于土地上树的数量,树的数量=土地价值=\(v\)(顶点上的树不算,网格图边界不种树)。当\(v=0,1...N-3\)时,请帮约翰求出有多少三角形地\(L\)拥有价值\(v\)。
输入输出格式
输入格式:
输入的第一行为树的棵数\(N\)。
接下来的\(N\)行分别为不同树在二维网格图上的坐标;它们都是介于0和1000000之间的的整数;行和列数间用空格隔开。
输出格式:
输出\(N-2\)行,其中第\(i\)行是价值\(v\)等于\(i-1\)的土地块数量。
听说这个题普及组做的会比NOI的选手快
发现\(C_n^3\)可枚举,考虑枚举每一个三元组然后\(O(1)\)查询。
我们可以预处理出每条线段下端的点的个数,然后查询的时候容斥原理就行了
注意细节。
Code:
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=302;
pair <double,double > dx[N];
int n,ans[N],cnt[N][N],f[N];
bool check(int i,int j,int id)
{
if((dx[id].second-dx[i].second)*(dx[j].first-dx[id].first)<(dx[j].second-dx[id].second)*(dx[id].first-dx[i].first))
return true;
return false;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf%lf",&dx[i].first,&dx[i].second);
sort(dx+1,dx+1+n);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
for(int l=i+1;l<=n;l++)
if(dx[l].first>dx[i].first&&dx[l].first<dx[j].first&&check(i,j,l))
cnt[i][j]++;
}
for(int i=1;i<=n;i++)
if(dx[i].first==dx[i-1].first)
f[i]=f[i-1]+(dx[i].second==dx[i-1].second?0:1);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int l=j+1;l<=n;l++)
{
if(check(i,l,j))//在下面
{
if(dx[i].first==dx[j].first||dx[l].first==dx[j].first)
ans[cnt[i][l]-cnt[i][j]-cnt[j][l]]++;
else
ans[cnt[i][l]-cnt[i][j]-cnt[j][l]-1-f[j]]++;
}
else
{
if(dx[i].first==dx[j].first||dx[l].first==dx[j].first)
ans[cnt[i][j]+cnt[j][l]-cnt[i][l]]++;
else
ans[cnt[i][j]+f[j]+cnt[j][l]-cnt[i][l]]++;
}
}
for(int i=0;i<=n-3;i++)
printf("%d\n",ans[i]);
return 0;
}
2018.7.19
洛谷 P1715 [USACO16DEC]Lots of Triangles好多三角形 解题报告的更多相关文章
- 洛谷 P1291 [SHOI2002]百事世界杯之旅 解题报告
P1291 [SHOI2002]百事世界杯之旅 题目描述 "--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽 ...
- 洛谷 P4714 「数学」约数个数和 解题报告
P4714 「数学」约数个数和 题意(假):每个数向自己的约数连边,给出\(n,k(\le 10^{18})\),询问\(n\)的约数形成的图中以\(n\)为起点长为\(k\)的链有多少条(注意每个点 ...
- 洛谷 P4345 [SHOI2015]超能粒子炮·改 解题报告
P4345 [SHOI2015]超能粒子炮·改 题意 求\(\sum_{i=0}^k\binom{n}{i}\),\(T\)组数据 范围 \(T\le 10^5,n,j\le 10^{18}\) 设\ ...
- 洛谷 P1691 有重复元素的排列问题 解题报告
P1691 有重复元素的排列问题 题目描述 设\(R={r_1,r_2,--,r_n}\)是要进行排列的\(n\)个元素.其中元素\(r_1,r_2,--,r_n\)可能相同.使设计一个算法,列出\( ...
- 洛谷 P2746 [USACO5.3]校园网Network of Schools 解题报告
P2746 [USACO5.3]校园网Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校&q ...
- 洛谷 P1121 环状最大两段子段和 解题报告
P1121 环状最大两段子段和 题目描述 给出一段环状序列,即认为\(A_1\)和\(A_N\)是相邻的,选出其中连续不重叠且非空的两段使得这两段和最大. 输入输出格式 输入格式: 第一行是一个正整数 ...
- 洛谷 P1120 小木棍 [数据加强版]解题报告
P1120 小木棍 [数据加强版] 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它 ...
- 洛谷 P2336 [SCOI2012]喵星球上的点名 解题报告
P2336 [SCOI2012]喵星球上的点名 题目描述 a180285 幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣. 假设课堂上有 \(N\) 个喵星人,每个喵星人的 ...
- 洛谷 P2862 [USACO06JAN]把牛Corral the Cows 解题报告
P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...
随机推荐
- stl源码分析之priority queue
前面两篇介绍了gcc4.8的vector和list的源码实现,这是stl最常用了两种序列式容器.除了容器之外,stl还提供了一种借助容器实现特殊操作的组件,谓之适配器,比如stack,queue,pr ...
- QT在子窗口外单击关闭子窗口
网上查到了好多种方法,1.添加过滤器(eventFilter),2.重写鼠标单击事件,这两种方法都要判断鼠标单击位置是不是在子窗口上.而且在可编辑控件上如(下拉框.文本编辑框等),父窗口会直接传递到可 ...
- mongodb复制集部署文档
一.安装SNMP(新版mongodb需要此依赖安装) 安装snmp服务需要的rpm包: perl-Data-Dumper-2.145-3.el7.x86_64.rpm net-snmp-5.7.2-2 ...
- 简单在kubernetes中安装cadvisor
cadvisor用于分析docker资源占用情况及性能的工具 安装命令: docker run --volume=/:/rootfs:ro --volume=/: --detach=true --na ...
- AirSim的搭建和使用
由于自己使用设备拍摄的数据质量太差,所以决定使用AirSim这个框架来生成数据.之所以使用这个框架,是因为之前同事用其生成了一些有效数据. 当然,我是不可能把我搭建的步骤一一写出来的,一来是因为太麻烦 ...
- 阿里IPO法律咨询费达1580万美元 为Facebook六倍
据路透社报道,阿里巴巴集团周五在 IPO (首次公开招股)更新文件中披露,将向美国盛信律师事务所(Simpson Thacher)以及其他为 IPO 提供咨询服务的律师事务所支付 1580 万美元的法 ...
- Immutable 常用API简介
本文主要整理了Immutable.js常用API的使用. Immutable 是什么? 关于Immutable的定义,官方文档是这样说的: Immutable data encourages pure ...
- netty初认识
Netty是什么? 本质:JBoss做的一个Jar包 目的:快速开发高性能.高可靠性的网络服务器和客户端程序 优点:提供异步的.事件驱动的网络应用程序框架和工具 通俗的说:一个好使的处理Socket的 ...
- 软件工程团队项目第一个Sprint评论
(1)跑男:话说我没怎么听懂这个游戏是怎么玩的,可能是由于这是第一组,所以我没有反应过来把,界面设计的还可以,但是像设置,选关,帮助真心没看懂.有一种感觉就是,这个游戏是由一堆的漂亮的图片拼起来的,还 ...
- 团队Alpha冲刺(五)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...