指数级枚举:1到n任意选取的所有方案数:

#include<bits/stdc++.h>
using namespace std;
int n,a[1100],vis[1100],cnt,m;
inline void dfs(int x)
{
if(x==n)
{
for(int i=1;i<=n;i++) if(vis[i]) cout<<a[i]<<' ';
cout<<endl;
return;
}
vis[x+1]=1;
dfs(x+1);
vis[x+1]=0;
dfs(x+1);
}
int main()
{
freopen("1.in","r",stdin);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
dfs(0);
}

组合型枚举:1到n中选m个的所有方案数:

#include<bits/stdc++.h>
using namespace std;
int n,a[1100],vis[1100],cnt,m,o;
inline void dfs(int x)
{
if(o>m||(o+n-x)<m) return;
if(x==n)
{
for(int i=1;i<=n;i++) if(vis[i]) cout<<a[i]<<' ';
cout<<endl;
cnt++;
return;
}
vis[x+1]=1;o++;
dfs(x+1);
vis[x+1]=0;o--;
dfs(x+1);
}
int main()
{
//freopen("1.in","r",stdin);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
dfs(0);
cout<<cnt<<endl;
}

排列性枚举:1到n的全排列:

#include<bits/stdc++.h>
using namespace std;
int n,a[1100],vis[1100],cnt,m,ans[1100];
inline void dfs(int x)
{
if(x==n)
{
for(int i=1;i<=n;i++) cout<<a[ans[i]]<<' ';
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i]=1;
ans[x+1]=i;
dfs(x+1);
vis[i]=0;
ans[x+1]=0;
}
}
}
int main()
{
freopen("1.in","r",stdin);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
dfs(0);
}

Fractal Streets:

分形的街道
时间限制:1000ms内存限制:65536K
总提交数:2090接受数:596
描述

随着我们越来越大的城市对现代化的日益渴望,对新的街道设计的需求也随之而来。克里斯是负责这些设计的不幸的城市规划者之一。每年的需求都在增加,今年他甚至被要求设计一个全新的城市。
克里斯现在不需要更多的工作,因为他和其他优秀的官僚一样,非常懒惰。考虑到这是他与大多数计算机科学家共同的性格特点,他最亲密的朋友之一保罗实际上是一名计算机科学家也就不足为奇了。正是保罗提出了一个让克里斯成为同龄人英雄的绝妙想法:分形街道!通过使用希尔伯特曲线,他可以很容易地填充任意大小的矩形图,而只需很少的工作。
1阶希尔伯特曲线由一个“杯”组成。在2阶希尔伯特曲线中,那个杯子被四个更小但相同的杯子和三条相连的路所取代。在希尔伯特曲线的3阶中,这四个杯子依次被四个相同但更小的杯子和三条相连的路所取代。在杯子的每个角落,都有一条车道(带有邮箱),用来给房子编号,编号顺序很简单。左上角的房子是1号,相邻两间房子的距离是10m。
这种情况如图2所示。正如你所看到的,分形街道的概念成功地消除了无聊的街道网格的需要,而仍然需要从我们的官僚非常少的努力。

为了表达他们的感激之情,几位市长向克里斯提供了一所房子,这所房子位于许多用他自己的新方案建造的新社区之一。克里斯现在想知道,这些房子中哪些能让他买到离当地城市规划办公室最近的房子(当然,每个新社区都有一个)。幸运的是,他不用沿着街道开车,因为他的新公司“car”就是那些新型飞行汽车之一。这辆高科技汽车可以让他从车道直行到新办公室的车道。你能编写一个程序来确定每架飞机的飞行距离(不包括起飞和降落时的垂直距离)吗?
输入

在输入的第一行是一个正整数,测试用例的数量。然后对于每个测试用例:
一条包含三个正整数的直线,n < 16和h, o < 231,指定希尔伯特曲线的顺序,以及提供的房屋和当地城市规划办公室的门牌号码。
输出

对于每个测试用例:
其中一条线包含了Chris飞到他的作品的距离,单位是米,四舍五入到最近的整数。

/*
这个题真的很毒瘤...
好吧,起码让我对分治或递归有更深刻的理解了
首先getz求的是对当前城市的坐标
然后得到上一级的坐标后,怎样转换便是要思考的问题,这里迷一下午的点便是左下角的坐标转化,现在才明白他们的进出口方向不同
所以要先逆时针再水平翻转...因为你是按大小得到的坐标转化时应当考虑它再这一级城市中大小又是怎么分布的
还有的毒瘤就是竟然卡精度
好吧,无话可说 起码又让我知道了double的精度比较小吧.
最后,又学会了函数传结构体,意外的惊喜..
*/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
pair<ll,ll>a,b;
ll T,n,z1,z2;
inline pair<ll,ll> getz(ll p1,ll p2)//getz表示在当前等级下的坐标.
{
if(p1==0) return make_pair(0,0);
ll cnt=1ll<<(2*p1-2),len=1ll<<(p1-1);
pair<ll,ll> pos=getz(p1-1,p2%cnt);
ll x=pos.first,y=pos.second;
ll z=p2/cnt;
if(z==0) return make_pair(y,x);
if(z==1) return make_pair(x,y+len);
if(z==2) return make_pair(x+len,y+len);
if(z==3) return make_pair(2*len-y-1,len-x-1);
}
inline double distance()
{
ll x1=a.first,yy1=a.second;
ll x2=b.first,y2=b.second;
double ans=sqrt((x1-x2)*(x1-x2)+(yy1-y2)*(yy1-y2))*10;
return ans;
}
int main()
{
cin>>T;
while(T--)
{
cin>>n>>z1>>z2;
a=getz(n,z1-1);
b=getz(n,z2-1);
printf("%.0lf\n",distance());
}
return 0;
}

典型的递归思想。

先以其中一个街道为基准,每次都向下查找,查找到的值处理就行...

0x03的更多相关文章

  1. linux 串口0x03,0x13的问题【转】

    linux 串口0x03,0x13的问题 本人最近在调linux串口的时候,发现其他数据接收正常,但是0x13怎么也接收不到,后面发现了这篇文章,两天的bug终于解决了,原来是linux底层uart配 ...

  2. BugPhobia开发篇章:Scurm Meeting-更新至0x03

    0x01 :目录与摘要 If you weeped for the missing sunset, you would miss all the shining stars 索引 提纲 整理与更新记录 ...

  3. xss挑战赛小记 0x03(xssgame)

    0x00 继续做xss吧 这次是xssgame 地址 http://www.xssgame.com/ 一共八关 学到了很多东西 0x01 啥也没有 <svg/onload="alert ...

  4. 【学员管理系统】0x03 老师信息管理功能

    [学员管理系统]0x03 老师信息管理功能 老师信息管理相比于学生信息管理又多了一点,因为我们的数据结构中老师表和班级表是通过teacher2class表进行多对多关联的. 写在前面 项目详细需求参见 ...

  5. 协同合约HACKATHON 0X03;

    协同合约HACKATHON 0X03; 使用Fetch.AI技术开发一个共享行程协同合约.超过100,000个FET代币奖励. 介 绍 拼车是对你的钱包和环境都非常有益的,因此UberPool™等共享 ...

  6. 0x03伪指令

    等号伪指令 = 相当于指定常量,由等号定义的符号常量不占用存储空间. count = 1234 可以重复定义多次,EQU则不容许 EQU伪指令 1.常量名 EQU 表达式 NUMBER EQU 10* ...

  7. 0x03 MySQl 库操作

    一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...

  8. 0x03 递归

    这个东西好像在搞矩乘的时候用过?忘了 #include<cstdio> #include<iostream> #include<cstring> #include& ...

  9. 0x03 前缀和与差分

    前缀和 [例题]BZOJ1218 激光炸弹 计算二位前缀和,再利用容斥原理计算出答案即可. #include <iostream> #include <cstdio> #inc ...

  10. 0x03 Python logging模块之Formatter格式

    目录 logging模块之Formatter格式 Formater对象 日志输出格式化字符串 LogRecoder对象 时间格式化字符串 logging模块之Formatter格式 在记录日志是,日志 ...

随机推荐

  1. CentOS8部署tftp

    tftp:简单文本传输协议,而ftp:文本传输协议.可以把tftp看成是ftp的精简版.tftp用于免登录传输小文件,tftp服务端监听在udp协议的69端口tftp简单的工作原理: tftp服务端与 ...

  2. PHP的OpenSSL加密扩展学习(二):非对称加密

    上篇文章,我们了解了关于对称和非对称加密的一些相关的理论知识,也学习了使用 OpenSSL 来进行对称加密的操作.今天,我们就更进一步,学习 OpenSSL 中的非对称加密是如何实现的. 生成私钥 通 ...

  3. mysql 选取操作日志(mysql-bin.0000恢复数据)

    my.ini 配置log-bin=mysql-bin 启用日志 用  mysql-bin.0000 mysqlbinlog -d keyboard ../data/mysql-bin.000024 – ...

  4. Jenkins操作手册 - 巨详细,一篇足矣!

    一.继续集成相关概念 1.1.什么是持续集成? 随着软件开发复杂度的不断提高,团队开发成员间如何更好的协同工作以确保软件开发的质量已经成为开发过程中不可回避的问题.尤其是近年来敏捷开发在软件领域越来越 ...

  5. javascript traverse object attributes 遍历对象属性

    * for in for (var prop in o) { if (o.hasOwnProperty(prop)) { console.log(o[prop]); } } * Object keys ...

  6. javascript 比较版本号大小 字符串

    * 不用系统比较大小的函数 // 不考虑字母 function s2i(s) { return s.split('').reduce(function(a, c) { var code = c.cha ...

  7. php laravel v5.1 消息队列

    * install https://laravel.com/docs/5.1#installationcomposer create-project laravel/laravel msgq &quo ...

  8. SAP Shared Object 01 (共享对象)

    介绍 共享对象是在共享内存中的一个对象.共享内存是应用服务器中的一个内存区域,可以被应用服务器中的所有程序访问. 在共享对象出现之前,ABAP使用EXPORT 和 IMPORT语句实现内存区域中内容的 ...

  9. 鸿蒙内核源码分析(并发并行篇) | 听过无数遍的两个概念 | 百篇博客分析OpenHarmony源码 | v25.01

    百篇博客系列篇.本篇为: v25.xx 鸿蒙内核源码分析(并发并行篇) | 听过无数遍的两个概念 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度 ...

  10. Javascript设计模式之原型模式、发布订阅模式

    原型模式 原型模式用于在创建对象时,通过共享某个对象原型的属性和方法,从而达到提高性能.降低内存占用.代码复用的效果. 示例一 function Person(name) { this.name = ...