POJ2318 TOYS

嘟嘟嘟

题面:先告诉你一个矩形抽屉的坐标,然后\(n\)个隔板将抽屉分成了\(n + 1\)格(格子从\(0\)\(n - 1\)标号),接下来随机输入\(m\)个玩具的坐标。问最后每一个格子里有多少个玩具。

仔细想想就是一道计算几何入门题。
对于一个玩具\((x_0, y_0)\),我们只要找到在他的左面且离他最近的隔板\(i\),则这个玩具就在第\(i\)格里。
怎么判断隔板\(AB\)(规定\(A\)点是隔板的上端,\(B\)点是隔板下端)是否在玩具的左边?用叉积即可:只要\(\overrightarrow{OA} \times \overrightarrow{OB} > 0\),就说明在左边。
然后因为有人说从左到右枚举会超时,所以我就把枚举改成倍增了。
然鹅枚举\(O(n ^2)\)能过呀,于是我就枚举交了一发,也过了……(???)
代码里注释掉的是枚举的

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<vector>
#include<stack>
#include<queue>
using namespace std;
#define enter puts("") 
#define space putchar(' ')
#define Mem(a, x) memset(a, x, sizeof(a))
#define rg register
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const db eps = 1e-8;
const int maxn = 5e3 + 5;
inline ll read()
{ll ans = 0;char ch = getchar(), last = ' ';while(!isdigit(ch)) {last = ch; ch = getchar();}while(isdigit(ch)) {ans = (ans << 1) + (ans << 3) + ch - '0'; ch = getchar();}if(last == '-') ans = -ans;return ans;
}
inline void write(ll x)
{if(x < 0) x = -x, putchar('-');if(x >= 10) write(x / 10);putchar(x % 10 + '0');
}int n, m, xl, yl, xr, yr; 
int ans[maxn];struct Vec
{int x, y;int operator * (const Vec& oth)const{return x * oth.y - oth.x * y;}
};
struct Point
{int x, y;Vec operator - (const Point& oth)const{return (Vec){x - oth.x, y - oth.y};}
}ad[maxn], au[maxn], P;const int N = 13;
void solve()
{int L = 0;for(int i = N, t; i >= 0; --i) if((t = L + (1 << i)) <= n){if((au[t] - P) * (ad[t] - P) > 0) L = t;}/*int L = 0;while(L < n){if((au[L + 1] - P) * (ad[L + 1] - P) < 0) break;L++;}*/ans[L]++;
}int main()
{while(scanf("%d", &n) && n){Mem(ans, 0);m = read();xl = read(); yl = read(); xr = read(); yr = read();au[0].y = yl;for(int i = 1; i <= n; ++i) {au[i].x = read(); au[i].y = yl;ad[i].x = read(); ad[i].y = yr;}for(int i = 1; i <= m; ++i){P.x = read(); P.y = read();solve();}for(int i = 0; i <= n; ++i) write(i), putchar(':'), space, write(ans[i]), enter;enter;}return 0;
}

转载于:https://www.cnblogs.com/mrclr/p/9975469.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现

灰色系统理论由我国著名学者邓聚龙教授于1982提出。灰色关联分析是灰色系统理论的一个分支&#xff0c;应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法。一、灰色关联分析法的建模过程灰色关联分析法的基本思想是根据各比…

C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

参考&#xff1a;C语言五大排序&#xff08;桶排序&#xff0c;冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;快速排序&#xff09;动态演示 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-09-09 20:18:43 网址&#xff1a;https://blog.csdn.net/we…

FIFO分枝_限界算法

问题&#xff1a; 检索4-皇后问题的状态空间树如下图的基本过程。&#xff08;4-皇后问题解空间的树结构&#xff0c;结点按深度优先检索编号&#xff09; 如果按序扩展这些结点&#xff0c;则下一个E-结点就是结点2。扩展结点2后生成结点3&#xff0c;8和13。利用限界函数(同行…

C语言中__attribute__ ((at())绝对定位的应用

__attribute__( at(绝对地址) )的作用分两个&#xff0c;一个是绝对定位到Flash&#xff0c;另个一是绝对定位到RAM。 1、定位到flash中&#xff0c;一般用于固化的信息&#xff0c;如出厂设置的参数&#xff0c;上位机配置的参数&#xff0c;ID卡的ID号&#xff0c;flash标记等…

php重写地址,php url地址重写

地址重写:urlRewrite: 就是: 1. 将php的地址index.php不写只写Action模块和function方法, 或者 2. php地址转变成html地址, 就是一种假的html,所以叫伪静态.(除了伪静态外, 还有真的静态化, 就是真的将原来php的页面静态为html, 然后客户请求的就是这个html)伪静态: 就是只是…

智能家居APP使用指南

参考&#xff1a;智能家居APP使用指南 作者&#xff1a;图触靓 发布时间&#xff1a; 2021-04-14 14:11:40 网址&#xff1a;https://blog.csdn.net/bhbhhyg/article/details/115694774 目录一、如何修改IP&#xff0c;端口号&#xff0c;以及发送的指令二、如何增加或者删除一…

python zlib字符串压缩

2019独角兽企业重金招聘Python工程师标准>>> 在做网络程序时,可以对字符串进行压缩来节省带宽 项目中用到 {"compress": <压缩标记>, "result":[[设备类型.设备ID, 设备名称, 单位ID, 设备功能], ...]} 只做了简单的压缩解压缩,也没crc3…

Laravel的初始化安装

Laravel的初始化安装 composer 安装 composer中国镜像laravel文档 curl -sS https://getcomposer.org/installer | php # 修改 composer 的全局配置文件,修改为中国源 composer config -g repo.packagist composer https://packagist.phpcomposer.com 安装 Laravel Laravel 利用…

cstring和string的区别

<cstring>是包含一些C字符串的操作函数&#xff0c;包含一些常用的C字符串处理函数&#xff0c;比如strcmp、strlen、strcpy之类的函数与原来的<string.h>对应。但头文件的内容在名字空间std 中。 <string>包含的是C的string类。 下面是C头文件的现状&#x…

linux做一个客户端与WemosD1作为服务器的无线通信(局域网通信)

参考&#xff1a;linux做一个客户端与WemosD1作为服务器的无线通信&#xff08;局域网通信&#xff09; 作者&#xff1a;枕上 发布时间&#xff1a;2021-07-19 23:33:44 网址&#xff1a;https://blog.csdn.net/jinchi_boke/article/details/118916896?utm_sourceapp&app…

C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

下载地址&#xff1a;点我 C语言仍然是计算机领域的通用语言之一&#xff0c;但现在的C语言已经和当初的时候大不相同了。本书主要的一个目的就是通过一种“现代方法”来介绍C语言&#xff0c;书中强调标准C&#xff0c;强调软件工程&#xff0c;不再强调“手工优化”。这一版中…

matlab入门之旅,MATLAB 入门之旅学习笔记

MATLAB 入门之旅学习笔记https://matlabacademy.mathworks.com/R2019a/cn/portal.html?coursegettingstarted1.概述2.1输入命令1. 您可以通过在命令行窗口中MATLAB 提示符 (>>) 后输入命令&#xff0c;然后按Enter 键来执行命令。2. 除非另有指定&#xff0c;否则 MATLA…

wemosD1_WIFI模块 与 arduino

参考&#xff1a;wemosD1_WIFI模块 与 arduino 作者&#xff1a;枕上 发布时间&#xff1a;2021-07-19 21:49:55 网址&#xff1a;https://blog.csdn.net/jinchi_boke/article/details/118915142 目录作为设备接入wifi&#xff08;STA模式&#xff09;架设Wemos为ftp服务器ardu…

本机在合成图片经常提示内存不足

转载于:https://www.cnblogs.com/niyl/p/9988614.html

tp5 php7 报500,记一次TP单元测试报500错误的问题

记一次TP单元测试报500错误的问题一直听说好的单元测试能提高代码质量&#xff0c;昨天终于在下定决心弄懂单元测试&#xff0c;但第一步就把我干趴下了&#xff0c;我的问题在下面开始都没有什么问题&#xff0c;tp5单元测试的手册就那一点&#xff0c;通过看云上一位仁兄写的…

# 和 ## 的区别

参考&#xff1a;# 和 ## 的区别 作者&#xff1a;枕上 发布时间&#xff1a;2021-07-25 08:23:40 网址&#xff1a;https://blog.csdn.net/jinchi_boke/article/details/119076280?utm_sourceapp&app_version4.11.0&codeapp_1562916241&uLinkIdusr1mkqgl919blen …

H3C配置

H3C交换机配置 1.查看设备版本,确定是否需要升级 <H3C>dis version 2.vlan及接口配置 注&#xff1a;正式配置前可以查看下现有的VLAN。命令如下 <H3C>dis vlan <H3C>sys                          //进入系统视图模式 [H3C]vlan …

创建自己的共用js库

直至昨晚为止&#xff0c;学习了一个多月的MVC与jQuery&#xff0c;从所做的练习中&#xff0c;发觉jQuery的代码也有跟C#语言一样可以重构&#xff0c;多页面有相同使用的方法函数&#xff0c;均可以放置于一个单独立的js文件或是自定义的js库中。在使用时&#xff0c;引用此库…

php封装公共方法,TP框架下封装公共函数详解

本篇文章讲述了如何在TP框架下封装公共函数&#xff0c;大家对TP框架下封装公共函数不了解的话或者对TP框架下封装公共函数感兴趣的话那么我们就一起来看看本篇文章吧&#xff0c; 好了废话少说进入正题吧当我们需要在控制层调用相同的封装函数时&#xff0c;写多次相同的函数&…

多级指针和静动态内存的跨函数访问

参考&#xff1a;多级指针&#xff08;静动态内存的跨函数访问&#xff09; 作者&#xff1a;枕上 发布时间&#xff1a;2021-07-15 00:27:17 网址&#xff1a;https://blog.csdn.net/jinchi_boke/article/details/118724993?spm1001.2014.3001.5501 目录多指针初认识&#xf…