Wannafly挑战赛29-A御坂美琴 (dfs+map)
链接:https://ac.nowcoder.com/acm/contest/271/A
来源:牛客网
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
misaka现在有 n 个呱太玩偶放在一堆,每一次操作,misaka会选择当前个数 > 1 的一堆呱太玩偶。并将这一堆呱太玩偶分成 和 两堆,x 是当前这一堆玩偶的个数。现在 misaka 想将玩偶分成 m 堆,其中第 i 堆呱太玩偶的个数是 a i ,你需要告诉 misaka 是否能通过若干次操作将玩偶分成指定的这 m 堆。如果可以输出 ,否则输出 。
输入描述:
第一行两个数 n, m 。接下来一行 m 个数 a
i
。
输出描述:
输出共一个字符串
,表示 misaka 能否将玩偶分成指定的 m 堆。
输入
复制
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)相关推荐
- 牛客Wannafly挑战赛29 A 御坂美琴 思维题
链接:https://ac.nowcoder.com/acm/contest/271/A 来源:牛客网 题目描述 misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半 ...
- Wannafly挑战赛29 A御坂美琴(思维题+dfs)
题意: 一开始有n个糖果,每一次操作,你可以选择一堆x将其分成两堆,x//2,x-x//2 直到一堆的糖果数量=1就不能进行操作了. 然后现在给你m堆糖果a[1..m],问你能不从n个通过任意操作变成 ...
- Wannafly挑战赛29 御坂美琴(递归,模拟)
链接:https://ac.nowcoder.com/acm/contest/271/A 来源:牛客网 御坂美琴 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...
- 解读御坂美琴みさか的菱形打印程序——谈如何学习算法
百度C语言吧主御坂美琴みさか的<C语言循环的小艺术>很久以前我就复制下来收藏了,不过一直没有研究.昨天Uval的AOAPC I: Beginning Algorithm Contests ...
- SCU-4396 麦野沉利与御坂美琴的战斗
4396: 麦野沉利与御坂美琴的战斗 Submit your solution Discuss this problem Best solutions 描述 麦姐辛苦建立的实验室被入侵 ...
- 御坂美琴(入门bfs+STL)
御坂美琴 misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半,万世不竭". misaka现在有 n 个呱太玩偶放在一堆,每一次操作,misaka会选择当前 ...
- Wannafly挑战赛29A御坂美琴
传送门 这套题很有意思2333 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些数,用map记录一下,判断是否所有数都能被分出来就是了 //m ...
- 牛客21477 御坂美琴
链接 点击跳转 题解 这个题是个思维题 首先如果所要求的数字之和不等于n,就直接判为无解.这一点很重要,可以保证后面算法的复杂度. 然后不停的把最大的分成两半,随时把符合条件的堆删掉,如果要求的堆的最 ...
- 牛客NC21477 御坂美琴
题目描述: misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半,万世不竭". misaka现在有 n 个呱太玩偶放在一堆,每一次操作,misaka会选择当 ...
最新文章
- oracle 游标 内联,oracle – EXEC_SQL,EXECUTE IMMEDIATE,DBMS_SQL和内联SQL之间的区别
- Cisco路由器操作命令汇总,看完全学会
- 理科僧文科婶,高考前终于撕起来了!
- 测试Live Writer 发表博客
- 互联网红利消退,下一个机会在哪?
- 兼顾pc和移动端的textarea字数监控的实现方法
- 【算法】剑指 Offer 53 - I. 在排序数组中查找数字 I
- 与基础事务管理器的通信失败 存货申请_干货必读!细说分布式事务两阶段提交...
- 商业WiFi“风来了”
- 计算机主机内部防尘装置,一种计算机主机用防尘装置制造方法及图纸
- Android Effect 解析
- 小波变换matlab程序,图像小波变换原理_图像小波变换的matlab实现详解
- 贪心科技NLP实习面试
- APM::Rover下GCS_MAVLink的逻辑梳理
- windows2008+IIS7部署智遥工作流
- Auto.js Pro安卓免ROOT引流脚本开发系列教程26网易公开课(4)-关注用户
- 汇编——从一道题目浅谈分支结构
- 神马 | 封杀这个公式,AI智商将为零
- Python爬虫学习笔记 (9) [初级] 小练习 爬取慕课网课程清单
- HZNUOJ 1019 取火柴