题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1621

题意:

  约翰的N(1≤N≤1,000,000,000)只奶牛要出发去探索牧场四周的土地。

  她们将沿着一条路走,一直走到三岔路口(可以认为所有的路口都是这样的)。

  这时候,这一群奶牛可能会分成两群,分别沿着接下来的两条路继续走。

  如果她们再次走到三岔路口,那么仍有可能继续分裂成两群继续走。

  奶牛的分裂方式十分古怪:如果这一群奶牛可以精确地分成两部分,这两部分的牛数恰好相差K(1≤K≤1000),那么在三岔路口牛群就会分裂。否则,牛群不会分裂,她们都将在这里待下去,平静地吃草。

  请计算,最终将会有多少群奶牛在平静地吃草。

题解:

  递归分治。

  

  答案为cal(n)。

  对于cal(a),有三种情况:

    (1)a <= k:

      当前牛群不可能再分裂,return 1。

    (2)a和k的奇偶性不同:

      奇数分成两部分,两部分之差一定为奇数。

      偶数分成两部分,两部分之差一定为偶数。

      所以若a和k的奇偶性不同,则不可能再分裂,return 1。

    (3)不属于上两种情况,可以继续分裂,return cal((a-k)/2)+cal((a-k)/2+k)。

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h> using namespace std; int n,k; int cal(int a)
{
if(a<=k) return ;
if((k&)!=(a&)) return ;
return cal((a-k)/)+cal((a-k)/+k);
} int main()
{
cin>>n>>k;
cout<<cal(n)<<endl;
}

BZOJ 1621 [Usaco2008 Open]Roads Around The Farm分岔路口:分治 递归的更多相关文章

  1. BZOJ 1621: [Usaco2008 Open]Roads Around The Farm分岔路口

    题目 1621: [Usaco2008 Open]Roads Around The Farm分岔路口 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 56 ...

  2. bzoj 1621: [Usaco2008 Open]Roads Around The Farm分岔路口【dfs】

    模拟就行--讲道理这个时间复杂度为啥是对的??? #include<iostream> #include<cstdio> using namespace std; int k, ...

  3. 【BZOJ】1621: [Usaco2008 Open]Roads Around The Farm分岔路口(dfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1621 这题用笔推一下就懂了的.... 当2|(n-k)时,才能分,否则不能分. 那么dfs即可.. ...

  4. BZOJ1621: [Usaco2008 Open]Roads Around The Farm分岔路口

    1621: [Usaco2008 Open]Roads Around The Farm分岔路口 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 521  S ...

  5. [Usaco2008 Open]Roads Around The Farm分岔路口

    题目描述 约翰的N(1≤N≤1,000,000,000)只奶牛要出发去探索牧场四周的土地.她们将沿着一条路走,一直走到三岔路口(可以认为所有的路口都是这样的).这时候,这一群奶牛可能会分成两群,分别沿 ...

  6. [Usaco2008 Open]Roads Around The Farm分岔路口[水题]

    Description     约翰的N(1≤N≤1,000,000,000)只奶牛要出发去探索牧场四周的土地.她们将沿着一条路走,一直走到三岔路口(可以认为所有的路口都是这样的).这时候,这一群奶牛 ...

  7. BZOJ 1605 [Usaco2008 Open]Crisis on the Farm 牧场危机:dp【找转移路径】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1605 题意: 平面直角坐标系中,有n个点,m个标记(坐标范围1~1000). 你可以发出口 ...

  8. BZOJ 1605 [Usaco2008 Open]Crisis on the Farm 牧场危机 DP

    题意:链接 方法: DP 解析: 第一眼搜索题,复杂度不同意dfs,并且牛的数量太多不能bfs,迭代更不可能,A*不会估价.可能记忆化? 等等记忆化我还搜个毛线- 直接改成DP就好了. 状态非常好想非 ...

  9. bzoj千题计划309:bzoj4332: JSOI2012 分零食(分治+FFT)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4332 因为如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果. 所以设g[i][j] ...

随机推荐

  1. Java 获取当前时间及实现时间倒计时功能

    引言 在一些项目中或是一些特殊的业务场景中,需要用到显示系统的当前时间,以及一些固定的时间倒计时,时间到后做一些什么事情的业务 .接下来咱们就具体看看代码是怎么实现的: <%@ page lan ...

  2. ApplicationContext介绍

    如果说BeanFactory是Spring的心脏,那么ApplicationContext就是完整的身躯了.ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用 ...

  3. spring-boot实战【01】:Hello World项目搭建

    原文:http://www.cnblogs.com/yucongblog/p/7355519.html 简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用S ...

  4. 获取path的几种方式:NSFileManager NSHomeDirectory NSBundle

    //---------------------------------------------------------------------------------NSFileManager *fi ...

  5. iOS -- 字符串(NSString *)转uint8_t的两种方法

    // 第一种 NSString *connID = ((Collector *)weakSelf.globalMutableArray[i]).orignalConnID; ] intValue]; ...

  6. JavaScript技巧手冊

    js小技巧 每一项都是js中的小技巧,但十分的有用! 1.document.write(""); 输出语句  2.JS中的凝视为//  3.传统的HTML文档顺序是:documen ...

  7. 重新认识一遍JavaScript - 2

    1.JavaScript没有Java和C中的int.double,怎么识别这些类型的呢?或者说不支持 问:你认为呢? 答:var 支持所有数据类型(int.double.string),取决于你输入的 ...

  8. 【LeetCode】Word Break 解题报告

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  9. MySQL的timeout那点事

    http://www.mysqlops.com/2011/11/24/mysql_timeout.html

  10. Thunderbolt雷电接口

    官网:https://thunderbolttechnology.net/tech/certification