首页 > 其他分享 >Educational Codeforces Round 144 (Rated for Div. 2) C. Maximum Set

Educational Codeforces Round 144 (Rated for Div. 2) C. Maximum Set

时间:2024-11-11 15:47:34浏览次数:1  
标签:lfloor 144 Rated int Educational times le right using

我们要选出最长的子序列,使得每一个数都是前一个数的倍数。因此自然我们可以想到选择最小值然后每次乘\(2\)。所以有 \(l\times 2^k \le r\),即\(k = \left\lfloor \log_2 \frac{r}{l}\right\rfloor\)。所以最大的集合大小就是\(k + 1\)。

然后考虑最大的集合中最小值可能不同,我假设符合条件的最小值是\(l_1\),则有\(l_1\times 2^k \le r\),所以\(l_1 = \left\lfloor \frac {r}{2^k}\right\rfloor\)。

其实序列中每一个数也不一定都是前一个数的\(2\)倍。但也不可能是大于\(3\)倍,因为\(4\)倍可以拆成两个\(2\)倍,\(5\)倍可以拆成一个\(2\)倍,一个\(3\)倍。

再考虑,\(3\)倍至多只有\(1\)个。考虑存在两个\(3\)倍的情况\(\{x,3x,9x\}\),如果符合条件,则一定存在更优的情况\(\{x,2x,4x,8x\}\)。

我们考虑只有一个\(3\)倍的情况,应该是\(l_2 \times 3 \times 2^{k-1} \le r\),也即\(l_2 =\left\lfloor \frac{r}{3\times 2^{k-1}} \right\rfloor\)。然后考虑有\(k\) 个数是前一个数的倍数,可以任选一个替换为\(3\)倍。

因此最终答案就是\((l_1 - l + 1) + (l_2 - l + 1) \times k\)。

#include <bits/stdc++.h>

using namespace std;

using i32 = int32_t;
using i64 = long long;

//#define int i64

using vi = vector<int>;
using pii = pair<int, int>;

const i32 inf = INT_MAX / 2;

const int mod = 998244353;

void solve() {
    int l, r;
    cin >> l >> r;
    int k = log2((double)r / l);
    cout << k + 1 << " ";
    int l1 = r / (1 << k);
    int l2 = r / ((1 << (k - 1)) * 3);
    cout << (max(0, l1 - l + 1) % mod + max(0, l2 - l + 1) * k % mod) % mod << "\n";
    return;
}

i32 main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);

    int T;
    cin >> T;
    while (T--)
        solve();
    return 0;
}

标签:lfloor,144,Rated,int,Educational,times,le,right,using
From: https://www.cnblogs.com/PHarr/p/18539818

相关文章

  • PEF22554HTV3.1 英特尔intel 电信 IC 调帧器,线路接口单元(LIU) P-TQFP-144 在售20000PCS
    PEF22554HTV3.1是一款由英特尔(Intel)生产的电信IC调帧器,它可以与线路接口单元(LIU)一起使用。该调帧器的封装类型是P-TQFP-144。该调帧器适用于电信领域的应用,可以用于实现数据调制和解调功能,常见于传输和接收语音、数据和视频信号的通信设备中。型号:PEF22554HTV3.1类别:集成电路......
  • 第二届教育发展与社会科学国际学术会议 (EDSS 2025) The 2nd International Conferen
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz三、大会介绍第二届教育发展与社会科学国际学术会议(EDSS2025)定于2025年1月17-19日在中国上海举行。会议旨在为从事“教育”与“社会科学......
  • Educational Codeforces Round 159 (Rated for Div. 2) - VP记录
    Preface重点策略:\[\large\textbf{\underline{先写简单好写的算法,再逐步修改优化}}\]十分有效,百试百灵,屡试不爽。A.BinaryImbalance当有相邻两字符不相等时,就可以不断向中间插入0。所以输出NO当且字符串全为1。点击查看代码#include<cstdio>usingnamespacestd;......
  • EB配置S32K144 MCAL的Icu
    作者:幸运的双鱼免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。Icu介绍   Icu模块是输入捕捉功能,可以获取频率、占空比、高低电平等状态,在电机控制中,一般使用在硬件故障的触发脚,用于硬件的过压、过流等故障通知......
  • Educational Codeforces Round 161 (Rated for Div. 2) - VP记录
    Preface先被A题硬控\(20\)分钟,有点不爽。又看到E题AC的人比D题多而去嗑E题去了,结果D题反而是我更能做的。将问题排序:根据你所需付出的努力,将能够最快解决的问题排在前面。(答题的次序为:以前做过的,容易的,不熟悉的,难的)——李博杰《骗分导论》\(\rmP_{114}\)所以......
  • Educational Codeforces Round 171 (Rated for Div. 2) 题解
    A.PerpendicularSegments显然构造一个\(k\timesk\)的左下角是原点的正方形即可。voidslv(){ intx,y,k;Read(x,y,k); intmn=min(x,y); if(mn*mn*2>=k*k) Write(0,'',0,'',mn,'',mn,'\n'), Write(0,......
  • Educational CF Round 171
    游记理所当然VP了秒速过A,打B犯了一天的傻逼看错条件理所当然的只过了一道愉快开启改题生活当然改题也挺那啥的题解A挺简单的找\(X,Y\)的最小值,即找到长方形可框住的最大的正方形直接输出此正方形的顶点坐标即可证明考虑超出此正方形的点在旋转平移以后都会超出长方形范......
  • CF2026 (Educational round 171) vp记录
    EducationalCodeforcesRound171vp记录A.PerpendicularSegments4min+0唐题。一眼限制紧的边必然连对角线,因为最小长度的限制是相同的所以另一条边也连对角线即可。B.BlackCells9min+0唐题。显然最优策略是相邻的点匹配,$n$为奇数的情况有一个孤立点随便连,为......
  • Educational Codeforces Round 20 E. Roma and Poker
    差分约束我们记W表示\(1\),L表示\(-1\),D表示\(0\),然后记前\(i\)位的前缀和是\(dis[i]\)。则我们可以根据题面得到如下约束。当前位是W,则有\[\left\{\begin{matrix}dis[i]-dis[i-1]\le1\\dis[i-1]-dis[i]\le-1\end{matrix}\right.\]当前位是L,则有\[\left\{\begin{m......
  • MMME4056 Integrated System sAnalysis Simulink
    ESSENTIALINFORMATIONMODULECODEMODULETITLESSESSMENTTYPEMMME4056IntegratedSystemsAnalysisSimulinkandReportCOURSEWORKTITLEWEIGHT(INDICATIVEEFFORT)MMME4056,ISA2024,COURSEWORK30%(Approx.10-15hrs)FEEDBACKDETAILSFeedbackwillbeprovi......