Codeforces Round #524 (Div. 2) D(思维,构造)
#include<bits/stdc++.h>
using namespace std;
long long dp[107];
int main(){
    int cnt=1;
    dp[1]=1;
    for(int i=2;i<=1e9;i*=2){
        dp[++cnt]=dp[cnt-1]*4+1;//记录长度为2^cnt的正方形最多能被切割的次数
    }
    //for(int i=1;dp[i]!=0;i++)
        //printf("%lld\n",dp[i]);//此处是为什么n>=32就可以稳切割的原因,超出了题目的极限数据
    int t;
    scanf("%d",&t);
    for(int i=1;i<=t;i++){
        int a;
        long long b;
        scanf("%d%lld",&a,&b);
        int tmp=a;
        if(a>=32){
            printf("YES %d\n",a-1);//切一次剩下切右下角就行,不会对路径产生影响
            continue;
        }
        long long next=1;
        long long sum=0;
        long long extra=0;
        while(a){
            sum+=next;//记录已经切割的次数
            next=next*2+1;//计算即将切割的次数
            a--;//每切一次就--
            extra+=dp[a]*(next-2);//根据画图得到的路径之外的切割次数
            if(b<sum+next)//此时切这次就搞定,不用继续缩小a了
                break;
        }
        if(b<=extra+sum)//如果b太大说明这个次数是切不出来的
            printf("YES %d\n",a);
        else
            printf("NO\n");
    }
    return 0;
}
Codeforces Round #524 (Div. 2) D(思维,构造)的更多相关文章
- Codeforces Round #524 (Div. 2)(前三题题解)
		
这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...
 - Codeforces Round #524 (Div. 2) C. Masha and two friends(思维+计算几何?)
		
传送门 https://www.cnblogs.com/violet-acmer/p/10146350.html 题意: 有一块 n*m 的棋盘,初始,黑白块相间排列,且左下角为白块. 给出两个区间[ ...
 - Codeforces Round #143 (Div. 2) (ABCD 思维场)
		
题目连链接:http://codeforces.com/contest/231 A. Team time limit per test:2 seconds memory limit per test: ...
 - Codeforces Round #542(Div. 2) CDE 思维场
		
C https://codeforces.com/contest/1130/problem/C 题意 给你一个\(n*m\)(n,m<=50)的矩阵,每个格子代表海或者陆地,给出在陆地上的起点终 ...
 - Codeforces Round #339 (Div. 1) C. Necklace 构造题
		
C. Necklace 题目连接: http://www.codeforces.com/contest/613/problem/C Description Ivan wants to make a n ...
 - 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】
		
https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...
 - Codeforces Round #181 (Div. 2) A. Array 构造
		
A. Array 题目连接: http://www.codeforces.com/contest/300/problem/A Description Vitaly has an array of n ...
 - Codeforces Round #306 (Div. 2)  ABCDE(构造)
		
A. Two Substrings 题意:给一个字符串,求是否含有不重叠的子串"AB"和"BA",长度1e5. 题解:看起来很简单,但是一直错,各种考虑不周全, ...
 - Codeforces Round #395 (Div. 2)(A.思维,B,水)
		
A. Taymyr is calling you time limit per test:1 second memory limit per test:256 megabytes input:stan ...
 
随机推荐
- a note of R software write Function
			
Functionals “To become significantly more reliable, code must become more transparent. In particular ...
 - CommonJS、AMD与CMD
			
自从有了模块,我们可以更方便地使用别人的代码,想要什么功能,就加载什么模块.但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套! 于是下面三个模块 ...
 - meta 标签代码解决IE兼容问题,IE6,IE7,IE8,IE9,IE10(包括360的兼容模式)
			
最近做了一个项目,客户反映,在360下布局错位,远程调试了一下,发现客户使用的是360的兼容模式,然而我在自己的电脑上测试的时候是正常的(兼容模式也正常):简单研究了一下360的兼容模式,在360的兼 ...
 - Delphi中那些容易混淆的基础
			
@.^.Addr.Pointer Delphi(Pascal)中有几个特殊的符号,如@.^等,弄清楚这些符号的运行,首先要明白Delphi指针的一些基础知识:指针,是一个无符号整数(unsigned ...
 - GridView内容详解(转载)
			
GridView内容详解(转载) GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现.(车延禄)GridView的主要新特性 ...
 - Linux基本语法
			
Shell编程 摘要: Shell历史 Shell的作用是解释用户的命令,用户输入一条命令,Shell就解释执行一条,这条方式称为交互式(interactive),Shell还有一种执行命令的方式称为 ...
 - 数据库连接池(connection pool)
			
1.JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: – 在主程序(如servlet.beans)中建立数据库连接. – 进行sql ...
 - 用Rem来无脑还原Web移动端自适应的页面
			
(function (win,doc){ if (!win.addEventListener) return; var html=document.documentElement; function ...
 - EXPLAIN 命令
			
MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提 ...
 - redis安装及启动及设置
			
1. 安装 1.1 下载解压包,直接解压到任意路径下即可 windows下载地址:ttps://github.com/MSOpenTech/redis/releases 2.启动 2.1 启动要先开启 ...