hihoCoder hiho一下 第五十一周 欧拉路·三

2024-06-15 19:08

本文主要是介绍hihoCoder hiho一下 第五十一周 欧拉路·三,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目1 : 欧拉路·三

时间限制: 10000ms
单点时限: 1000ms
内存限制: 256MB
描述

小Hi和小Ho破解了一道又一道难题,终于来到了最后一关。只要打开眼前的宝箱就可以通关这个游戏了。

宝箱被一种奇怪的机关锁住:

这个机关是一个圆环,一共有2^N个区域,每个区域都可以改变颜色,在黑白两种颜色之间切换。

小Ho控制主角在周围探索了一下,果然又发现了一个纸片:

机关黑色的部分表示为1,白色的部分表示为0,逆时针连续N个区域表示一个二进制数。打开机关的条件是合理调整圆环黑白两种颜色的分布,使得机关能够表示0~2^N-1所有的数字。
我尝试了很多次,终究没有办法打开,只得在此写下机关破解之法。——By 无名的冒险者

小Ho:这什么意思啊?

小Hi:我给你举个例子,假如N=3,我们通过顺时针转动,可以使得正下方的3个区域表示为:

因为黑色表示为1,白色表示为0。则上面三个状态分别对应了二进制(001),(010),(101)

每转动一个区域,可以得到一个新的数字。一共可以转动2^N次,也就是2^N个数字。我们要调整黑白区域的位置,使得这2^N个数字恰好是0~2^N-1

小Ho:我懂了。若N=2,则将环上的黑白色块调整为"黑黑白白",对应了"1100"。依次是"11","10","00","01"四个数字,正好是0~3。那么这个"黑黑白白"就可以打开机关了咯?

小Hi:我想应该是的。

小Ho:好像不是很难的样子,我来试试!

提示:有向图欧拉回路

输入

第1行:1个正整数,N。1≤N≤15

输出

第1行:1个长度为2^N的01串,表示一种符合要求的分布方案

样例输入
3
样例输出
00010111

#include <cstdio>  
#include <iostream>  
#include <cstring>  
#include <cmath>  
#include <algorithm>  
#include <string.h>  
#include <string>  #define eps 1e-8  
#define op operator  
#define MOD  10009  
#define MAXN  100100  
#define INF 0x7fffffff  
#define MEM(a,x)    memset(a,x,sizeof a)  
#define ll __int64  const int M=(int)(1<<15);  //注意这里是15using namespace std;  int list[M];  
int ans[M];  
int cnt;  
int m;  void dfs(int v)  
{  int x=(v<<1)&m;  if(!list[x])  {  list[x]=1;  dfs(x);  ans[cnt++]=0;  }  if(!list[x+1])  {  list[x+1]=1;  dfs(x+1);  ans[cnt++]=1;  }  
}  int main()  
{  
//freopen("ceshi.txt","r",stdin);  int n;  while(scanf("%d",&n)!=EOF)  {  MEM(list,0);  cnt=0;  m=(1<<n)-1;  dfs(0);  for(int i=1;i<n;i++)  printf("0");  
//        cout<<"cnt "<<cnt<<endl;  for(int i=cnt-1;i>n-2;i--)  printf("%d",ans[i]);  puts("");  }  return 0;  
}  




这篇关于hihoCoder hiho一下 第五十一周 欧拉路·三的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064323

相关文章

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

【详细介绍一下GEE】

GEE(Google Earth Engine)是一个强大的云计算平台,它允许用户处理和分析大规模的地球科学数据集,如卫星图像、气候模型输出等。以下是对GEE用法的详细介绍: 一、平台访问与账户设置 访问GEE平台: 用户可以通过访问Google Earth Engine的官方网站来开始使用GEE。 创建账户: 用户需要注册并登录Google账户,然后申请访问GEE平台。申请过程可能需要提

欧拉系统 kernel 升级、降级

系统版本  cat  /etc/os-release  NAME="openEuler"VERSION="22.03 (LTS-SP1)"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler 22.03 (LTS-SP1)"ANSI_COLOR="0;31" 系统初始 kernel 版本 5.10.0-136.12.0.

nyoj99(并查集+欧拉路+dfs)

单词拼接 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 5 描述 给你一些单词,请你判断能否把它们首尾串起来串成一串。 前一个单词的结尾应该与下一个单词的道字母相同。 如 aloha dog arachnid gopher tiger rat   可以拼接成:aloha.arachnid.dog.gopher.rat.tiger 输入 第一行是一个整

nyoj42(并查集解决欧拉回路)

一笔画问题 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入 第一行只有一个正整数N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<

UVa 10820 Send a Table (Farey数列欧拉函数求和)

这里先说一下欧拉函数的求法 先说一下筛选素数的方法 void Get_Prime(){ /*筛选素数法*/for(int i = 0; i < N; i++) vis[i] = 1;vis[0] = vis[1] = 0;for(int i = 2; i * i < N; i++)if(vis[i]){for(int j = i * i; j < N; j += i)vis[j] =

做技术的大家可以看一下这些网站,

1   csdn  http://www.csdn.net/ 2. 开源中国  http://www.oschina.net/ 3. 深度开源(有些经验之谈) http://www.open-open.com/ 上面很多东西大家可以学很多。。。。。。 android须知的网址 Android开发者网站可以很好的帮助你,很多的文档也可以通过SDK工具下载。这些文档不仅仅是Javadoc A

JD 1027:欧拉回路

OJ题目:click here~~ 题目分析: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径。若该路径是一个圈,则称为欧拉(Euler)回路。 具有欧拉路径的图称为欧拉图(简称E图)。 无向图存在欧拉回路的充要条件: 一个无向图存在欧拉回路,当且仅当该图拥有奇数度数的顶点的个数为0且该图是连通图。 有向图存在欧拉回路的充要条件: 一

大数据开发体系,进来了解一下?

“5G失败、物联网已死、鼓吹大数据无用论”打开手机又是承接今日份的“丧”, 这种丧味十足的帖子我们已经被投喂得太多了 ,还是原来的配方,还是熟悉的味道,说这些话的人,多少显得无聊而耸人听闻。 有这样一句话叫数据重构商业,流量改变未来。不管怎么唱衰,大数据时代已经向我们滚滚而来,早已成为现代社会不可缺少的一部分。 “不参与大数据建设,10年后一定后悔”。 早在几年前,马云就在某次

193篇文章暴揍Flink,这个合集你需要关注一下

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多惊喜 前一段时间我写了一篇:《我们在学习Flink的时候,到底在学习什么?》。 基本上把大多数情况下Flink需要学习的点都照顾到了。 然后重点来了,我整理了一个合集放在了CSDN论坛,根据Flink版本发布过程和知识点,收录了网络上写的比较好的文章,基本覆盖了近100%的Flink的知识点。点击文末的【阅读原文】可以跳转,你有必要收藏一