当前位置: 首页 > news >正文

HNU-青蛙与蚊子

【问题描述】

       有 n 只青蛙位于坐标轴 OX 上,对于每只青蛙,有两个已知值 xi、ti,表示第 i 只青蛙在坐标的位置(各不相同)以及它的舌头的长度。同样有 m 只蚊子一只接一只的落到坐标轴上,对于每只蚊子,有两个已知值, pj 表示第 j 只蚊子所在的位置,bj 为第 j 只蚊子的重量。青蛙和蚊子表示为坐标上的点。

       如果蚊子和青蛙在同一位置或者在右边,青蛙可以吃掉蚊子,它们之间的距离不超过青蛙舌头的长度。

       如果有几只青蛙都能在某一时刻吃到一只蚊子,最左边的青蛙就会吃掉它(最小的 xi)。吃完蚊子后,青蛙的舌头将增加蚊子重量的长度,在之后,青蛙又能够吃其他蚊子(在舌头长度增加之后)。 

       在所有蚊子落下以及青蛙吃掉所有可能的蚊子之后,对于每个青蛙,输出两个值,即吃蚊子的数量以及舌头的长度。

       每只蚊子只有在青蛙吃完之前所有可能的蚊子之后才会落到坐标上,蚊子的值是按其落到坐标轴上的顺序给出的。 

【输入形式】

       输入的第一行为两个整数(1 ≤ n,m ≤ 2*105),表示青蛙和蚊子的数量。

       接下来的 n 行,每行两个整数 xi、ti(0 ≤ xi、ti ≤ 109),表示第 i 只青蛙所在的位置以及它的舌头的初始长度,输入保证所有的 xi 互不相同。

       接下来的 m 行,每行两个整数 pj、bj(0 ≤ pj、bj ≤ 109),表示第 j 只蚊子落下的位置以及它的重量。

【输出形式】

       输出为 n 行,第 i 行包含另两个整数值 ci、li,表示被第 i 只青蛙吃掉的蚊子数量以及最终的青蛙的舌头长度。
【样例输入1】

4 6
10 2
15 0
6 1
0 1
110 10
1 1
6 0
15 10
14 100
12 2

【样例输出1】

3 114
1 10
1 1
1 2

【样例输入2】

1 2
10 2
20 2
12 1

【样例输出2】

1 3

#include<iostream>
#include<algorithm>
using namespace std;
struct frog {int pos;int len;int eat = 0;int index;
};
struct mosquito {int pos;int weight;bool live = 1;
};
bool cmp1(frog a, frog b) {												//按位置排列return a.pos < b.pos;
}
bool cmp2(frog a, frog b) {												//最后按顺序输出return a.index < b.index;
}
int main() {int n, m;cin >> n >> m;frog frogs[n];mosquito mosquitoes[m];for (int i = 0; i < n; i++) {cin >> frogs[i].pos >> frogs[i].len;frogs[i].index = i;}for (int i = 0; i < m; i++) {cin >> mosquitoes[i].pos >> mosquitoes[i].weight;}sort(frogs,frogs+n,cmp1);for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (mosquitoes[i].live && frogs[j].pos + frogs[j].len >= mosquitoes[i].pos&&frogs[j].pos<=mosquitoes[i].pos) {frogs[j].eat++;frogs[j].len += mosquitoes[i].weight;mosquitoes[i].live = 0;i=-1;break;}}}sort(frogs,frogs+n,cmp2);for(int i=0;i<n;i++){cout<<frogs[i].eat<<" "<<frogs[i].len<<endl;}return 1;
}

http://www.lryc.cn/news/250814.html

相关文章:

  • 【新论文】【模型攻击】DiffAttack 针对基于扩散的对抗性净化的逃避攻击
  • 【Redis缓存】RedisTemplate如何获取符合要求的key,批量获取key
  • springboot核心原理之@SpringbootApplication
  • 阻抗匹配电阻原理及其应用
  • IDEA2023安装教程(超详细)
  • 【MySql】悲观锁和乐观锁的介绍
  • 手写实现一个动态代理框架
  • Leetcode226. 翻转二叉树
  • 使用WalletConnect Web3Modal v3 链接钱包基础教程
  • 黄金比例设计软件Goldie App mac中文版介绍
  • el-select实现可复制一段“关键词“(多个)实现搜索 以及 回车选中搜索项
  • C++解析xml示例
  • 记录 | linux find+rm查找并直接删除
  • 24.有哪些生命周期回调方法?有哪几种实现方式?
  • C++详解
  • mybatis数据输入-实体类型的参数
  • Java-接口
  • mysql常用命令行代码
  • Python压缩、解压文件
  • 面试就是这么简单,offer拿到手软(一)—— 常见非技术问题回答思路
  • 134. 加油站(贪心算法)
  • Springboot3+vue3从0到1开发实战项目(二)
  • Spring中Bean的生命周期
  • IndexOutOfBoundsException: Index: 2048, Size: 2048] Controller接收对象集合长度超过2048错误
  • 2023年中国消费金融行业研究报告
  • 深度学习:什么是知识蒸馏(Knowledge Distillation)
  • 【Go】protobuf介绍及安装
  • c语言编程题经典100例——(41~45例)
  • 计算机毕业设计|基于SpringBoot+MyBatis框架健身房管理系统的设计与实现
  • java学习part27线程死锁