ABC304D A Piece of Cake

这篇具有很好参考价值的文章主要介绍了ABC304D A Piece of Cake。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ABC304D A Piece of Cake

题目大意

平面上有一个蛋糕以及 n n n个草莓,这些草莓的坐标分别为 p 1 , q 1 , p 2 , q 2 , … , p n , q n p_1,q_1,p_2,q_2,\dots,p_n,q_n p1,q1,p2,q2,,pn,qn

有下面若干条直线,将蛋糕分为

  • A A A条平行于 y y y轴的直线: x = a 1 , x = a 2 , … , x = a A x=a_1,x=a_2,\dots,x=a_A x=a1,x=a2,,x=aA
  • B B B条平行于 x x x轴的直线: y = b 1 , y = b 2 , … , y = b B y=b_1,y=b_2,\dots,y=b_B y=b1,y=b2,,y=bB

这些直线将蛋糕分为 ( A + 1 ) ( B + 1 ) (A+1)(B+1) (A+1)(B+1)份。

T T T要在这 ( A + 1 ) ( B + 1 ) (A+1)(B+1) (A+1)(B+1)块中选一块。请你告诉他草莓最多的一块和草莓最少的一块。保证没有草莓在块与块的边缘。

3 ≤ w , h ≤ 1 0 9 , 1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ A , B ≤ 2 × 1 0 5 3\leq w,h\leq 10^9,1\leq n\leq 2\times 10^5,1\leq A,B\leq 2\times 10^5 3w,h109,1n2×105,1A,B2×105


题解

m a p map map来存每块蛋糕的草莓的数量,用一个结构体 t t t来存储有草莓的蛋糕的数量,再用 m a p map map来记录每块蛋糕是否加入了 t t t中。

t t t的长度不会超过 n n n,所以枚举 t t t中的蛋糕,找到草莓数量最多的。如果 t t t的长度小于 ( A + 1 ) ( B + 1 ) (A+1)(B+1) (A+1)(B+1),则总有一个蛋糕的草莓数量为 0 0 0,最小值为 0 0 0;否则枚举 t t t中的蛋糕,找到草莓数量最少的。

时间复杂度为 O ( n log ⁡ n ) O(n\log n) O(nlogn)文章来源地址https://www.toymoban.com/news/detail-475723.html

code

#include<bits/stdc++.h>
using namespace std;
int w,h,n,v1,v2,t1=0,m1,m2,x[200005],y[200005],a[200005],b[200005];
map<int,int>wt[200005],z[200005];
struct node{
	int x,y;
}t[1000005];
int main()
{
	scanf("%d%d%d",&w,&h,&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&x[i],&y[i]);
	}
	scanf("%d",&v1);
	for(int i=1;i<=v1;i++){
		scanf("%d",&a[i]);
	}
	a[++v1]=2e9;
	scanf("%d",&v2);
	for(int i=1;i<=v2;i++){
		scanf("%d",&b[i]);
	}
	b[++v2]=2e9;
	for(int i=1;i<=n;i++){
		int d1,d2;
		d1=lower_bound(a+1,a+v1+1,x[i])-a;
		d2=lower_bound(b+1,b+v2+1,y[i])-b;
		++wt[d1][d2];
		if(!z[d1][d2]){
			t[++t1]=(node){d1,d2};
			z[d1][d2]=1;
		}
	}
	m1=2e9;m2=0;
	if(t1<1ll*v1*v2) m1=0;
	for(int i=1;i<=t1;i++){
		int vt=wt[t[i].x][t[i].y];
		m1=min(m1,vt);
		m2=max(m2,vt);
	}
	printf("%d %d",m1,m2);
	return 0;
}

到了这里,关于ABC304D A Piece of Cake的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3 One Piece Study

    目录 脚手架安装vue3 使用vue-cli创建  使用vite创建  setup 介绍 示例使用 ref函数 介绍 代码示例 reactive函数 介绍 代码示例 vue create 项目名   安装完成 进入到刚才创建的项目目录中 cd vue3_test  输入npm run serve测试      npm init vite-app 项目名     观察项目结构,使用vite创建项目和

    2024年02月10日
    浏览(23)
  • mac 删除自带的ABC输入法保留一个搜狗输入法,搜狗配置一下可以减少很多的敲击键盘和鼠标点击次数

    对于开发者来说,经常被中英文切换输入法所困扰,我这边有一个方法,删除mac默认的ABC输入法 仅仅保留搜狗一个输入法,配置一下搜狗输入:哪些指定为英文输入,哪些指定为中文输入(符号也可以指定) 重启系统,按住 Command + R 进入恢复模式。 点击顶部菜单栏 实用工

    2024年02月15日
    浏览(30)
  • LintCode 650 · Find Leaves of Binary Tree (binary tree 后序遍历非常好的题目!)

    650 · Find Leaves of Binary Tree Algorithms Medium Description Given a binary tree, collect a tree’s nodes as if you were doing this: Collect and remove all leaves, repeat until the tree is empty. Example Example1 Input: {1,2,3,4,5} Output: [[4, 5, 3], [2], [1]]. Explanation: / 2 3 / 4 5 Example2 Input: {1,2,3,4} Output: [[4, 3], [2], [1]]. Explanation:

    2024年02月20日
    浏览(33)
  • 打卡一个力扣题目

    目录 一、问题 二、解题办法一 三、解题方法二 四、对比分析 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Share: 分享一篇有观点和思考的技术文章 希望通

    2024年02月15日
    浏览(27)
  • 电脑桌面上的文件不见了怎么恢复

    电脑桌面上的文件不见了怎么恢复 ?我们经常遇到这样的情况:刚完成一个重要文件的编辑,保存后就想松口气。但是几天后,当你需要再次使用这个文件时,却发现它不见了。这是一个让人非常抓狂的事。然而,好消息是,丢失的文件通常是可以恢复的。本文将教你如何恢

    2024年02月08日
    浏览(48)
  • 椭球面上两点最短距离的算法思考

    椭球面上两点最短距离的三种算法思路    我们不妨以一个具体的情境去进行代码分析 下列程序绘制椭球面及两点的程序.  问题分析 1.1.1球体上最短距离 (1)方式:计算两个点和球心所表示的向量的夹角,即球心角,然后使用弧长计算公式来求解; 若采用经纬度求解则用

    2024年01月16日
    浏览(43)
  • 题目:求一个3*3矩阵对角线元素之和

    题目:求一个3*3矩阵对角线元素之和 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quickly. 1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加

    2024年04月17日
    浏览(39)
  • 力扣数组类题目--41缺失的第一个正数

    41 缺失的第一个正数 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案 。 示例 1: 输入:nums = [1,2,0] 输出:3 示例 2: 输入:nums = [3,4,-1,1] 输出:2 示例 3: 输入:nums = [7,8,9,11,12

    2024年02月11日
    浏览(27)
  • Java——一个简单的数学题目生成和回答的程序

    这段代码是一个简单的数学题目生成和回答的程序。具体分析如下: 导入必要的类: 代码中导入了用于输入输出的  java.io  包和生成随机数的  java.util.Random  类。这些类将在后面的代码中使用到。 定义主类和主方法: 代码中定义了一个名为  例229  的类,并在其中定义了

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包