首页 > 其他分享 >CF1999G2 Ruler (hard version)

CF1999G2 Ruler (hard version)

时间:2024-08-25 21:37:14浏览次数:12  
标签:return int Ruler sum hard CF1999G2 version mid2 mid1

Easy version

区别就在于 \(Easy\) 可以询问 \(10\) 次 ,因为 \(log_2(1000)\) 略大于 \(10\),而且这个标尺很明显具有单调性,所以可以二分,每次询问可以直接询问 \(1\) 和 \(mid\) 即可

Hard version

因为只有 \(7\) 次,所以采用三分,分类讨论

  1. \(mid1 \times mid2 = cnt\) 则 \(x\) 大于 \(mid2\) 将 \(l:=mid2+1\)
  2. \(mid1 \times (mid2 + 1) = cnt\) 则 \(x\) 处于 \(mid1, mid2\) 之间,将 \(l:=mid1+1,r:=mid2\)
  3. 否则 \(x\) 比 \(mid1\) 还要小,\(r:=mid1\) 即可

代码

#include<bits/stdc++.h>
using namespace std;
int check(int sum,int x,int y)
{
    if(x*y==sum) return 1;
    if(x*(y+1)==sum) return 2;
    if((x+1)*(y+1)==sum) return 3;
    return 0;
}
void solve()
{
    int l=2,r=1000;
    while(l<r)
    {
        int mid1=l+(r-l)/3,mid2=r-(r-l)/3;
        cout<<"? "<<mid1<<" "<<mid2<<endl;
        int x;
        cin>>x;
        int k=check(x,mid1,mid2);
        if(k==1) l=mid2+1;
        else if(k==3) r=mid1;
        else if(k==2) l=mid1+1,r=mid2;
        
    }
    cout<<"! "<<l<<endl;
    return;
}
int main()
{
    int _;
    cin>>_;
    while(_--)
    {
        solve();
    }
}

标签:return,int,Ruler,sum,hard,CF1999G2,version,mid2,mid1
From: https://www.cnblogs.com/Oistream/p/18379593

相关文章

  • 十五张图带你快速入门 shardingsphere-proxy
    ApacheShardingSphere是一款分布式的数据库生态系统,它包含两大产品:ShardingSphere-ProxyShardingSphere-JDBC很多同学对于ShardingSphere-JDBC已经能非常熟悉的使用了,但关于网上关于ShardingSphere-Proxy5.5的使用教程却非常少。所以这篇文章,笔者尝试带大家快速入门......
  • CF1326F2 Wise Men (Hard Version) 题解
    题目链接点击打开链接题目解法挺难的。可能一步一步推下来也没那么复杂(?基本copytzc_wk的题解/bx肯定不能像\(F1\)用普通的状压求,一个技巧是容斥考虑令\(f_S\)表示\(S\)中为\(1\)的位置\(p_i\)和\(p_{i+1}\)必须认识,为\(0\)的位置随便\(f\)数组相当于答案......
  • Solution - Codeforces 1970G3 Min-Fund Prison (Hard)
    时间\(\mathcal{O}(\frac{n\sqrt{n}\logn}{\omega})\)空间\(\mathcal{O}(\frac{n\logn}{w})\)的爆标做法。首先无解当且仅当图联通且无割边。首先考虑加边的贡献。一个比较直观的感受就是只会尽可能少的加边,即加边到整个图连通。证明考虑删掉的边。如果加多了边导致删......
  • 微分方程(Blanchard Differential Equations 4th)中文版Section3.3
    具有实特征值的线性系统的相图在前面的部分,我们看到直线解在求解某些线性微分方程系统的通解中起着主导作用。为了求解这样的系统,我们首先使用代数方法计算系数矩阵的特征值和特征向量。当我们找到一个实特征值和一个相关的特征向量时,就可以写出对应的直线解。此外,在特定情......
  • shardingsphere5分表demo
    分表配置demodatabaseName:mydb#逻辑数据库名称dataSources:ds_0:url:jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=falseusername:rootpassword:rootconnectionTimeoutMilliseconds:30000idleTimeoutMil......
  • CF1209E2 Rotate Columns (hard version) 题解
    CF1209E2给定\(n\timesm\)的矩阵,可以对每一列进行若干次循环移位,求操作完成后每一行的最大值之和的最大值。\(1\leqn\leq12,1\leqm\leq2000\)这里\(m\)很大,但有一个很重要的性质这\(m\)列中只有最大的前\(n\)个会对答案产生贡献因此我们直接就把......
  • ShardingSphere之ShardingProxy实战操作、分布式事务
    文章目录简介基础使用部署ShardingProxy配置分库分表策略分布式事务机制介绍XA事务Demo使用另外两种XA事务管理器简介ShardingSphere的两个核心产品分别为ShardingJDBC和ShardingProxy。前文已经详细介绍了ShardingJDBC的具体使用,接下来介绍服务端的分库分表Shar......
  • ShardingSphere之ShardingProxy集群部署
    文章目录介绍使用Zookeeper进行集群部署统一ShardingJDBC和ShardingProxy配置通过Zookeeper注册中心同步配置直接使用ShardingProxy提供的JDBC驱动读取配置文件介绍开发者手册在conf/server.yaml配置文件中有下面这一段配置,就是关于集群部署的mode:#type:stan......
  • 打靶记录5——靶机hard_socnet2
    靶机:https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova目标:取得root权限涉及攻击方法主机发现端口扫描SQL注入文件上传蚁剑上线XMLRPC命令执行逆向工程动态调试漏洞利用代码编写方法CVE-2021-3493缓冲器溢出漏洞学习目标希望通过今天学习......
  • ShardingSphere实战(3)- 快速实现分库分表
    上篇博客,我们讲了ShardingSphere实战(2)-水平分表,这篇博客,我们继续实现分库以及解决前面遗留的问题。一、绑定表基于上篇博客配置的前提下(上篇博客的最后放上了完整的配置,需要的可以去看看,这里就不重复写上去了),加上绑定表的配置:#绑定表关系spring.shardingsphere.shar......