链接:https://ac.nowcoder.com/acm/contest/271/A
来源:牛客网

御坂美琴
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

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

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

输入描述:

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

i

输出描述:

输出共一个字符串 

,表示 misaka 能否将玩偶分成指定的 m 堆。
示例1

输入

复制

4 1
5

输出

复制

ham

备注:

1 ≤ n ≤ 10

18

, 1 ≤ m ≤ 10

5

, 1 ≤ a

i

 ≤ 10

18

。

思路:用dfs找出所有能分出堆玩偶数目的情况,并用map标记为1,然后每输入一个数进行判断是否可以map是否为1,如果不为1,表示无法分出该结果。再判断一下m堆玩偶的总数是否n,可否分为m堆即可。注意需要剪枝一下,否则会超时。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const ll mod=1e9+7;
ll n,m,a[100005];
map<ll,int> mp;
void init(ll x)
{if(mp[x]==1)  //说明x已经标记过了,不用再递归下去了,不能去除,否则超时。return;mp[x]=1;if(x==1)return;ll u=x/2,v=x-x/2;init(u);init(v);return;
}int main()
{ios_base::sync_with_stdio(false); cin.tie(0);cin>>n>>m;init(n);ll sum=0,flag=0;for(int i=1;i<=m;i++){cin>>a[i];if(sum<=n)sum+=a[i];if(sum>n)flag=1;if(mp[a[i]]==0)flag=1;}if(flag||m>n||sum!=n){cout<<"ham"<<endl;return 0;}else cout<<"misaka"<<endl;return 0;
}

转载于:https://www.cnblogs.com/zjl192628928/p/10013596.html

Wannafly挑战赛29-A御坂美琴 (dfs+map)相关推荐

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

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

  2. Wannafly挑战赛29 A御坂美琴(思维题+dfs)

    题意: 一开始有n个糖果,每一次操作,你可以选择一堆x将其分成两堆,x//2,x-x//2 直到一堆的糖果数量=1就不能进行操作了. 然后现在给你m堆糖果a[1..m],问你能不从n个通过任意操作变成 ...

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

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

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

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

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

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

  6. 御坂美琴(入门bfs+STL)

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

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

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

  8. 牛客21477 御坂美琴

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

  9. 牛客NC21477 御坂美琴

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

最新文章

  1. oracle 游标 内联,oracle – EXEC_SQL,EXECUTE IMMEDIATE,DBMS_SQL和内联SQL之间的区别
  2. Cisco路由器操作命令汇总,看完全学会
  3. 理科僧文科婶,高考前终于撕起来了!
  4. 测试Live Writer 发表博客
  5. 互联网红利消退,下一个机会在哪?
  6. 兼顾pc和移动端的textarea字数监控的实现方法
  7. 【算法】剑指 Offer 53 - I. 在排序数组中查找数字 I
  8. 与基础事务管理器的通信失败 存货申请_干货必读!细说分布式事务两阶段提交...
  9. 商业WiFi“风来了”
  10. 计算机主机内部防尘装置,一种计算机主机用防尘装置制造方法及图纸
  11. Android Effect 解析
  12. 小波变换matlab程序,图像小波变换原理_图像小波变换的matlab实现详解
  13. 贪心科技NLP实习面试
  14. APM::Rover下GCS_MAVLink的逻辑梳理
  15. windows2008+IIS7部署智遥工作流
  16. Auto.js Pro安卓免ROOT引流脚本开发系列教程26网易公开课(4)-关注用户
  17. 汇编——从一道题目浅谈分支结构
  18. 神马 | 封杀这个公式,AI智商将为零
  19. Python爬虫学习笔记 (9) [初级] 小练习 爬取慕课网课程清单
  20. HZNUOJ 1019 取火柴

热门文章

  1. 如何限制计算机游戏,Win7如何利用映像劫持限制电脑玩游戏?
  2. CTFshow-菜狗杯WP
  3. XSS、CSRF攻击
  4. linux ssh 密钥配置
  5. 读写EEPROM_AT24CXXX
  6. 萝卜游侠-一款搜索和修改内存地址的游戏辅助工具
  7. IntelliJ IDEA搭建SSM框架并实现页面登录功能连接数据库
  8. 配置你的 csh/tcsh
  9. flutter练习项目 漫画客户端
  10. fabric 关于追加新组织结构