1142 巡逻的士兵

时间限制:1000MS  内存限制:65536K
提交次数:217 通过次数:58

题型: 编程题   语言: G++;GCC

Description

有N个士兵站成一队列, 现在需要选择几个士兵派去侦察。
为了选择合适的士兵, 多次进行如下操作: 如果队列超过三个士兵, 那么去除掉所有站立位置为奇数的士兵,
或者是去除掉所有站立位置为偶数的士兵。直到不超过三个战士,他们将被送去侦察。现要求统计按这样的方法,
总共可能有多少种不同的正好三个士兵去侦察的士兵组合方案。 注: 按上法得到少于三士兵的情况不统计。 1 <= N <= 2的32次方-1

输入格式

有多行,每行一个数字N,最后一行是0

输出格式

对每一行的数字N,输出针对N的方案数

直到没有数字

输入样例

10
4
0

输出样例

2
0






*****************************************************************************************************************

1.题意:将士兵分开,一直分到能游3个人一组的时候结束。

2.解题方法:本题为用分治的方法,将一个很大的数分成很小的数。当一个数为偶数的时候,可以将它分解成两个相等不部分,即一边是奇数一边是偶数。但是当那个数是个奇数的时候可以分成n/2和n-n/2(注:在int型变量省略小数,所以n/2==(n-1)/2)。

****************************************************************************************************************

具体例子分析:

20

|      |

10      10

|   |   |   |

5   5   5   5

| |  | |  | | | |

2 3 2 3  2 3 2 3

所以需要记录每一次分解左右的数,加起来就知道方案数

20(2+2)

|       |

10(1+1)     10(1+1)

|    |      |    |

5(1+0)  5(1+0)   5(1+0)  5(1+0)

| |   | |     | |   | |

2  3  2 3    2 3   2 3

*************************************************************************************************

要用上述的方法需要使用到函数的嵌套;

#include <stdio.h>
int select(unsigned n);
int main()
{
unsigned n;<span style="font-family: Arial, Helvetica, sans-serif;">//n<2^32-1;用unsigned 可以防止溢出</span> while(scanf("%u",&n)!=EOF&&n)
{
printf("%d\n",select(n));
}
return 0;
}
int select(unsigned n)
{
int left=0,right=0,sum=0;
if(n==3)
return 1;
else if(n<3)
return 0;
else
{
if(n%2==0)//判断奇偶数
{
right=select(n/2);//右边的方案个数
left=right;//偶数时,左右的方案个数相等
}
else
{
right=select(n/2);
left=select(n-n/2);
}
sum=left+right;//计算总和
}
return sum;
}
虽然不是最快的方法,但是好理解一些

scau 1142 巡逻的士兵(分治)的更多相关文章

  1. SCAU巡逻的士兵

    1142 巡逻的士兵 Description 有N个士兵站成一队列, 现在需要选择几个士兵派去侦察. 为了选择合适的士兵, 多次进行如下操作: 如果队列超过三个士兵, 那么去除掉所有站立位置为奇数的士 ...

  2. FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别

    游戏人工智能AI中最常听见的就是这三个词拉: FSM 这个不用说拉,百度一大堆解释, 简单将就是将游戏AI行为分为一个一个的状态,状态与状态之间的过渡通过事件的触发来形成. 比如士兵的行为有“巡逻”, ...

  3. Smith Numbers POJ - 1142 (暴力+分治)

    题意:给定一个N,求一个大于N的最小的Smith Numbers,Smith Numbers是一个合数,且分解质因数之后上质因子每一位上的数字之和 等于 其本身每一位数字之和(别的博客偷的题意) 思路 ...

  4. 算法准备-分治算法解决第k位数的线性查找

    由作业士兵排队问题引出的 在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点由整数最表(x,y)表示.士兵可以沿着网格边上.下.左.右移动一步,但在同一时刻一个网格上只能有一名士兵.按照军官 ...

  5. [SinGuLaRiTy] 分治题目复习

    [SInGuLaRiTy-1025] Copyrights (c) SinGuLaRiTy 2017. All Rights Reserved. [POJ 1905] 棍的膨胀 (Expanding ...

  6. Big Data(一)分治思想

    按照课程安排,接下来半年,我将会去上一个为期半年的大数据课程.第一课是马士兵老师机构的周老师所讲,这里单纯记录讲课的内容. 问题1: 我有一万个元素(比如数字或单词)需要存储? 如果查找某一个元素,最 ...

  7. [bzoj2152][聪聪和可可] (点分治+概率)

    Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好 ...

  8. POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22286 ...

  9. [poj1741][tree] (树/点分治)

    Description Give a tree with n vertices,each edge has a length(positive integer less than 1001). Def ...

随机推荐

  1. 【minicap】基于图像识别的手机端UI自动化测试的截图方式更新

    minicap属于STF框架的一个工具,可以高速截图.同步手机屏幕至浏览器等   为什么用minicap截图: 经过试验,截同一个屏幕的一张图,adb shell screencap速度为2.9秒,而 ...

  2. bzoj-2525 Dynamite

    Byteotian Cave的结构是一棵N个节点的树,其中某些点上面已经安置了烟火,现在需要点燃M个点上的引线引爆所有的烟火.某个点上的引线被点燃后的1单位时间内,在树上和它相邻的点的引线会被点燃.如 ...

  3. docker搭建一个渗透测试环境 bwapp为例

    bwapp是一个渗透测试靶场,他其中中含有100多个Web漏洞  基本涵盖了所有主要的已知Web漏洞,包括OWASP Top 10的各种 首先要去搜索一下  看一下有哪些镜像可以下载    docke ...

  4. [Python3] 014 集合的内置方法

    目录 1. Python3 中如何查看 set() 的内置方法 2. 少废话,上例子 (1) add() (2) 又见清理大师 clear() (3) 又见拷贝君 copy() (4) 找茬君 dif ...

  5. bash shell for循环

    1 同c一样用四个空格进行缩进 2 每行一条语句,不用分号 3 不用大括号标识代码块,但是要用do/done来标识代码块 4 用双小括号,类似于c的for进行编码 for ((i=1; i<=1 ...

  6. Nginx负载均衡的max_fails和fail_timeout的默认配置问题

    今天发现一个奇怪的现象,前端请求后端服务多次后会超时一次,经过多次验证确定是大概10s左右就会超时一次,检查后端服务,发现其中一个节点已经夯死. 但是我们的nginx负载均衡策略是轮询机制,按照配置来 ...

  7. docker添加加速器

    通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像.该镜像托管于中国大陆,本地用户现在将会享受到更快的下载速度和更强的稳定性,从而能够更敏捷地开发和交付 Docker ...

  8. ex3 多分类和神经网络

    介绍 在本练习中,您将实现一对多逻辑回归和神经识别手写数字的网络.在开始编程之前练习,我们强烈建议观看视频讲座并完成相关主题的复习问题.要开始练习,您需要下载起始代码并将其内容解压缩到要完成练习的目录 ...

  9. http请求中的Content-Length作用机制与分块chunked

    httpclient-4.5.9.jar org.apache.http: auth     身份 client    端 conn     连接 cookie  本地 impl:    实现 exe ...

  10. jquery点击按钮弹出图片

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...