UVA 12627 – Erratic Expansion

UVA 12627 – Erratic Expansion

大家好,又见面了,我是全栈君。

一个红球能够分裂为3个红球和一个蓝球。
一个蓝球能够分裂为4个蓝球。

分裂过程下图所看到的:
这里写图片描写叙述

设当前状态为k1。下一状态为k2

k1的第x行红球个数 * 2 ⇒ k2第2*x行的红球个数。
k1的第x行红球个数 ⇒ k2第2*x+1行的红球个数。

特殊处理一下上下边界。递归求解就能够搞定了。

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
#include <ctype.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <assert.h>
#include <time.h>
#include <sstream>

typedef long long LL;
const int INF = 500000001;
const double EPS = 1e-9;
const double PI = acos(-1.0);
using namespace std;
long long gao(int k, int a, int b)
{
    if(a > b) return 0;
    if(k == 0)
    {
        return 1;
    }
    int left = 0, right = 0;
    if(a % 2 == 0)
    {
        left = a;
        a++;
    }
    if(b % 2 == 1)
    {
        right = b;
        b--;
    }
    long long ans = gao(k-1, (a + 1) / 2, b / 2) * 2 + gao(k - 1, (a + 1) / 2, b / 2);
    if(left) ans += gao(k-1, left / 2,  left / 2);
    if(right) ans += gao(k-1, (right + 1) / 2,  (right + 1) / 2) * 2;
    return ans;
}
int main()
{
    #ifdef _Te3st
        freopen("test0.in", "r", stdin);
        freopen("test0.out", "w", stdout);
        srand(time(NULL));
    #endif
    int T, k, a, b;
    scanf("%d", &T);
    for(int i = 1; i <= T; i++)
    {
        scanf("%d %d %d", &k, &a, &b);
        printf("Case %d: %lld\n", i, gao(k, a, b));
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115461.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端

    阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端

  • Hadoop 简介

    Hadoop 简介Hadoop是什么Hadoop是一个提供分布式存储和计算的开源软件框架,它具有无共享、高可用(HA)、弹性可扩展的特点,非常适合处理海量数量。Hadoop是一个开源软件框架Hadoop适

  • C++ sort排序函数用法

    C++ sort排序函数用法最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数用法1、sort函数可以三个参数也可以两个参数,必须的头文件#include和usingnamespacestd;2、它使用的排序方法是类似于快排的方法,时间复

  • 什么是跨域?什么情况下会发生跨域请求?

    什么是跨域?什么情况下会发生跨域请求?跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。同源策略:所谓同源是指:协议,域名,端口均相同。即便两个不同的域名指向同一个ip地址,也非同源。http://www.123.com/index.html调用http://www.123.com/server.php(非跨域)http://www.123.com/index.html调用http://www.456.com/server.php(主域名不同:123/456,跨域)http:/

  • 此工作站和主域直接信任失败_主域间的信任关系失败

    此工作站和主域直接信任失败_主域间的信任关系失败故障现象:win7输入账户登录后,提示错误”此工作站和主域间的信任关系失败”,所有域用户无法登录,如图:解决方式:1.微软官方,退域重新加入域https://support.microsoft.com/en-us/kb/27710402.其他建议,“重置计算机账户”https://redmondmag.com/articles/201…

    2022年10月18日
  • nio和零拷贝_零拷贝

    nio和零拷贝_零拷贝传统IO传统IO的数据拷贝流程如下图:数据需要从磁盘拷贝到内核空间,再从内核空间拷到用户空间(JVM)。程序可能进行数据修改等操作再将数据拷贝到内核空间,内核空间再拷贝到网卡内存,通过网络发送出去(或拷贝到磁盘)。即数据的读写(这里用户空间发到网络也算作写),都至少需要两次拷贝。当然磁盘到内核空间属于DMA拷贝(DMA即直接内存存取,原理是外部设备不通过CPU而直接与系统内存交换……

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号