当前位置:网站首页>2020/7/13 每日一题(构造)
2020/7/13 每日一题(构造)
2022-07-16 14:56:00 【钟钟终】
每日一题是希望自己能认真的解析一道有价值的题,而非像之前一样写几句思路、放代码,希望能通过一道题能理解一类题的思路
F. Equate Multisets
难度:1700
题意:给定两个元素可重复的集合,集合B可通过将集合中元素乘以2或除以2(向下取整)来得到和集合A一样的集合。操作次数不限,输出YES或NO。
思路:初步判定是一个构造题,要用到数论知识,再开始思考。
首先看出无法排序,因为A、B两个集合中元素对应是没有规律的,因此转而去考虑数字的性质。
1.A中数字无法修改,A中奇数无法通过B中数字*2得到,只能通过/2得到;
2.A中偶数可有*2或者/2得到,致使B中数字选择和操作的不确定
3.A中偶数都可通过除以2来得到一个奇数,若B中数字可通过/2构造出与变型后都是奇数的A相同的集合,则满足题意。
此题关键:将A中数字都通过除以2构造成都为奇数的集合。
AC代码:转换了代码思路,用map,因为键可达1e9次方,用unordered_map()
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
unordered_map<int,int>mp;
int n,a[N],b[N];
bool flag;
int main()
{
int t;cin>>t;
while(t--)
{
mp.clear();
flag=0;
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])
a[i]/=2;
mp[a[i]]+=1;
}
for(int i=1;i<=n;i++)
{
while(b[i])
{
if(b[i]%2&&mp[b[i]])
{
mp[b[i]]--;
break;
}
else
b[i]/=2;
}
}
for(int i=1;i<=n;i++)
if(mp[a[i]])
{
flag=1;break;
}
if(flag)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
}
代码:(这份代码有点问题,思路一样,实现方式不同,找了好久,没找出来,在第7261组样例出了问题,看不了出错样例)
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,a[N],b[N],c[N];
bool vis[N],flag;
int main()
{
int t;cin>>t;
while(t--)
{
memset(vis,0,sizeof vis);
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++)
{
if(a[i]%2)
c[i]=a[i];
else
{
c[i]=a[i];
while(c[i]%2==0&&c[i]) c[i]/=2;
}
}
sort(c+1,c+n+1);
flag=0;
for(int i=1;i<=n;i++)
{
while(b[i])
{
if(b[i]%2)
{
int k=lower_bound(c+1,c+n+1,b[i])-c;
while(vis[k]) k++;
if(!vis[k]&&b[i]==c[k])
{
vis[k]=1;
break;
}
}
b[i]/=2;
}
if(b[i]==0)
{
flag=1;break;
}
}
if(flag)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
}
边栏推荐
- LeetCode高频题:图像交并比IoU计算方法和手撕代码
- Detailed summary of dynamic memory management (C language)
- Idea installation, configuration, testing
- mysql ibd文件反删除恢复之后异常处理----惜分飞
- 认识JVM
- 特征值和特征向量的求法
- Anaconda 的认识以及和它相关的一些编辑器的简单介绍
- Flask response
- Three kinds of "squeeze dry" enterprise equipment clothing ERP budget
- 软件测试面试题:软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么?他们的编号和全称是什么?
猜你喜欢

环形队列的原理以及实现

【Ucos-III源码分析】——软件定时器

Preparing transaction:done Verifying transaction:failed RemoveError:‘requests‘ is a dependency of **

文件的使用详解

(note) seven rainbow 30 series graphics card - "one key overclocking" button

How to build a digital system of dual prevention mechanism for hazardous chemical enterprises?

mysql ibd文件反删除恢复之后异常处理----惜分飞

fastjson反序列化漏洞区分版本号的方法总结

电流镜自动布局 布局对称性: 量化和应用以消除非线性过程梯度

Exception handling after MySQL IBD file undelete recovery ---- Xi Fenfei
随机推荐
An article explains unsupervised learning in images in detail
[LeetCode解题报告] 423. 从英文中重建数字
844. Compare strings with backspace
集合(Properties)
ERROR: Could not install packages due to an OSError: [ Errno 2] No such file or directory: ***
【luogu P6891】ビルの飾り付け 4(DP)(结论)
golang中的读写锁原理
耐克,体育运动龙头在消费复苏趋势中的“红与黑”
论文翻译解读:learning logic rules for reasoning on knowledge graphs【RNNLogic】
Seventh note: machine level code representation of programs
【黄啊码】MySQL入门—1、SQL 的执行流程
危化品企业双重预防机制数字化系统怎样建?
MySQL 触发器
go tool objdump 反汇编使用说明
Summary of the method of distinguishing version number for fastjson deserialization vulnerability
ospf路由管理
JWT学习
[BCG control] cbcgpgriditem response end editing event error, unable to respond to the problem
环形队列的原理以及实现
mysql的连接查询