当前位置:网站首页>F. Equate Multisets(贪心)
F. Equate Multisets(贪心)
2022-07-19 01:50:00 【to cling】
Codeforces Round #805 (Div. 3)
Problem
给出两个长度都为n的数组a和b。每次可以对b中任意一个数进行两个操作中的一个:(1)乘二(2)向下取整除二。
操作顺序不限制,次数不限制,问:经过一些操作后,b能否与a相同。
Solution
- 首先可以先把a中的数进行除二,直到变成奇数。
理由:如果b数组可以变成a数组,那么,同样可以变成改变后的数组。如果不能变成改变后数组,就表示无解。 - 此时a数组中都是奇数,那么操作一就无效了。只剩下操作二。
- 由于b中的数现在只能变小,所以,应该从b中最大数开始不断进行操作二。
如果最后变成0都无法与a中某个数相同,那么无解。
Code
const int N = 2e5 + 5, M = 1e6 + 7;
int a[N], b[N];
map<int, int> mp;
int main()
{
IOS;
int T; cin >> T;
while (T--)
{
mp.clear();
int n; cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> b[i];
for (int i = 1; i <= n; i++)
{
while (a[i] % 2 == 0) a[i] /= 2;
mp[a[i]]++;
}
sort(b + 1, b + n + 1, greater<int>());
int f = 1;
for (int i = 1; i <= n; i++)
{
while (b[i] && mp[b[i]] == 0)
b[i] /= 2;
if (b[i] == 0) f = 0;
else mp[b[i]]--;
}
if (f) cout << "YES\n";
else cout << "NO\n";
}
return 0;
}
边栏推荐
猜你喜欢
详解的wc find xargs zip gzip bzip2 xz tar sftp命令或者协议
【文件操作的重难点详解】
高度警惕!战场上智能手机位置数据的武器化
DeFi 2.0的LaaS协议Elephant,重振DeFi赛道发展的关键
Certification training | streamnational certification training phase 2
Live broadcast today | Apache pulsar meetup: vivo, Tencent cloud, bigo, Yunxing technology practice sharing
视频24 ALexNet
U++ subsystem
二分查找 33. 搜索旋转排序数组
专访铃盛(RingCentral)何必苍:以不断创新的MVP赋能未来混合办公
随机推荐
fuser和lsof的用法
C语言基础Day4-函数笔记
文章设置置顶
B树 B+树
【C语言刷LeetCode】1604. 警告一小时内使用相同员工卡大于等于三次的人(M)
Time flies.
亲测五种高效实用的脱单方法,赶紧收藏帮你快速找到优质对象!
win11右键改为win10方式
基于yarn1.x的monorepo实践分享
[leetcode daily question] - 109 Ordered linked list transformation binary search tree
微信小程序-获取用户位置(经纬度+所在城市)
Is the mobile account opening process of CITIC Securities safe? How to open a VIP account
今日直播|Apache Pulsar Meetup:vivo、腾讯云、BIGO、云兴科技实践分享
视频24 ALexNet
el-select和el-tree树形结构下拉单选和多选
今日直播|Apache Pulsar Meetup:vivo、腾讯云、BIGO、云兴科技实践分享
云笔记有什么功能作用,浏览器如何添加云笔记插件
重磅!中国开源地图正式启动,诚挚邀请所有开源社区加入共创~
PIPNet:面向自然场景的人脸关键点检测《Pixel-in-Pixel Net: Towards Efficient Facial Landmark Detection in the Wild》
BigDecimal使用