御坂美琴

misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半,万世不竭"。

misaka现在有 n 个呱太玩偶放在一堆,每一次操作,misaka会选择当前个数 > 1 的一堆呱太玩偶。并将这一堆呱太玩偶分成 两堆,x 是当前这一堆玩偶的个数。现在 misaka 想将玩偶分成 m 堆,其中第 i 堆呱太玩偶的个数是 ai ,你需要告诉 misaka 是否能通过若干次操作将玩偶分成指定的这 m 堆。如果可以输出 ,否则输出

输入描述:

第一行两个数 n, m 。
接下来一行 m 个数 ai 。

输出描述:

输出共一个字符串 ,表示 misaka 能否将玩偶分成指定的 m 堆。

输入

4 1
5

输出

ham

备注:

1 ≤ n ≤ 10^18, 1 ≤ m ≤ 10^5, 1 ≤ ai ≤ 10^18。

题意:

给定n个物品,每次可以将物品分成数量为的两堆物品,问是否可以分出一个给定长度为m的物品数量序列.

题解:

每次都能分成两堆,用队列模拟分堆,讲可能出现的情况标记一下,最后与所给序列对比,如果完全一样则输出misaka否则输出ham

最后还需要特判一下 所给序列的和不超过n (本以为这个和会爆ll,然而并没有)

这个题刚开是没想法,一直以为是找规律,主要是看到数据很大,但是没想到他可以用队列模拟每次一半,可以优化到log级别

另一个坑就是容易爆内存,刚开始的bfs想法是

先把所出现的数都先标记一下,然后与bfs模拟出来的结果相比较,如果相同就cnt++,最后看看cnt是否等于m

然而这种想法,占用内存太大,,,,

总之一句话,太菜。。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define linf 0x3f3f3f3f3f3f3f3f
ll a[100005];
map<ll,bool>vis;
ll cnt;
ll bfs(ll x)
{queue<ll>Q;Q.push(x);while(!Q.empty()){ll u=Q.front();Q.pop();if(vis[u])continue;//如果没有会爆内存vis[u]=1;Q.push(u/2);Q.push(u-u/2);}return 0;}
int main()
{ll n,m;ll sum=0;scanf("%lld%lld",&n,&m);for(int i=1; i<=m; i++){scanf("%lld",&a[i]);sum+=a[i];}if(sum!=n){printf("ham\n");return 0;}bfs(n);int flag=1;for(int i=1; i<=m; i++){if(!vis[a[i]]){flag=0;break;}}if(flag)printf("misaka\n");else printf("ham\n");return 0;
}

御坂美琴(入门bfs+STL)相关推荐

  1. 解读御坂美琴みさか的菱形打印程序——谈如何学习算法

    百度C语言吧主御坂美琴みさか的<C语言循环的小艺术>很久以前我就复制下来收藏了,不过一直没有研究.昨天Uval的AOAPC I: Beginning Algorithm Contests ...

  2. SCU-4396 麦野沉利与御坂美琴的战斗

    4396: 麦野沉利与御坂美琴的战斗 Submit your solution     Discuss this problem     Best solutions 描述 麦姐辛苦建立的实验室被入侵 ...

  3. Wannafly挑战赛29 御坂美琴(递归,模拟)

    链接:https://ac.nowcoder.com/acm/contest/271/A 来源:牛客网 御坂美琴 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  4. Wannafly挑战赛29-A御坂美琴 (dfs+map)

    链接:https://ac.nowcoder.com/acm/contest/271/A 来源:牛客网 御坂美琴 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  5. 牛客21477 御坂美琴

    链接 点击跳转 题解 这个题是个思维题 首先如果所要求的数字之和不等于n,就直接判为无解.这一点很重要,可以保证后面算法的复杂度. 然后不停的把最大的分成两半,随时把符合条件的堆删掉,如果要求的堆的最 ...

  6. 牛客NC21477 御坂美琴

    题目描述: misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半,万世不竭". misaka现在有 n 个呱太玩偶放在一堆,每一次操作,misaka会选择当 ...

  7. 11.22A 御坂美琴-优先队列模拟

    链接:https://ac.nowcoder.com/acm/contest/271/A 来源:牛客网 题目描述 misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半 ...

  8. 牛客Wannafly挑战赛29 A 御坂美琴 思维题

    链接:https://ac.nowcoder.com/acm/contest/271/A 来源:牛客网 题目描述 misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半 ...

  9. Wannafly挑战赛29A御坂美琴

    传送门 这套题很有意思2333 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些数,用map记录一下,判断是否所有数都能被分出来就是了 //m ...

最新文章

  1. linux编程技术进程代码,Linux进程通信—信号量 代码实现
  2. iPhone13下周三发布,提前看剧透:刘海缩小、120Hz高刷屏、Mini又续一年…
  3. Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针...
  4. linux运维新手参观机房后的心得体会
  5. Java内存模型与happens-before原则
  6. 云计算具有什么平台_究竟什么是云计算?
  7. redis生产环境持久化_在SageMaker上安装持久性Julia环境
  8. 微处理器 微型计算机系统,作业答案11微处理器微型计算机和微型计算机系统三者之间.DOC...
  9. 几大主流国产浏览器统一屏蔽996.ICU!
  10. python需要配置环境变量吗_w10版本python怎样设置环境变量
  11. 【论文写作】城市酒店入住信息管理系统中客房各项功能如何写
  12. BZOJ4360 : achievement
  13. 用Python采集微博视频,随时随地发现新鲜事~
  14. Oracle查询上周日期sql,Oracle 获取上周一到周末日期的查询sql语句
  15. OneNET麒麟座应用开发之十:空气质量数据监测站项目总结
  16. 201809CCF真题
  17. 安卓:No static method decodeBase64,commen-code包里报错的信息
  18. 联想微型计算机重装,联想一体机电脑重装系统教程 一体机电脑重装系统
  19. C语言学生管理系统(期末作业,超详细哟,拿走不谢!!!)
  20. C++判断点是否在圆上

热门文章

  1. 映像劫持(IFEO)的原理及实现
  2. windows平台React-Native启动时Watchman was not found
  3. Java计算素数算法优化以及拓展
  4. OCR文字识别—文本检测的算法
  5. Shell实现(四) 执行命令的实现(包含管道的实现)
  6. thymeleaf.TemplateEngineException processing template “main“: An error happened during template pars
  7. ORACLE分页查询SQL语句(最有效的分页)
  8. 搜狐收购Go2Map GIS发展有新前途?
  9. RGB-D(深度图像) 图像深度
  10. 骚操作,如何使用 sed 命令从文本文件中删除特定行?