首页 > 其他分享 >题解:GZOI2024 D2T2 乒乓球

题解:GZOI2024 D2T2 乒乓球

时间:2024-10-17 17:58:54浏览次数:1  
标签:lfloor le frac 题解 rfloor textcircled GZOI2024 small D2T2

考场上切了,但是比较神奇的题,应该是蓝/紫

Discription

乒乓球 \(\text{ }\)时间限制:\(\bold{3}\) 秒

众所周知,一场乒乓球比赛共有两个玩家 \(A\) 和 \(B\) 参与,其中一场比赛由多局比赛组成,而每局比赛中又由多盘比赛组成。

每盘比赛 \(A\) 或 \(B\) 只有一名选手获胜。当其中一名选手在一局比赛中达到 \(X\) 盘比赛胜利时,该局比赛结束,并且该名选手被宣布为这局比赛的获胜者。

类似的,当其中一名选手在 \(Y\) 局比赛中获得胜利时,该名选手被称为该场游戏的获胜者。

你刚刚看了一场比赛,其中 \(A\) 获得了 \(P\) 盘比赛的胜利,B 获得了 \(Q\) 盘比赛的胜利,并且你知道 \(A\) 是该场比赛的获胜者,但你忘记了 \(X\) 和 \(Y\) 的具体数值。

你想知道有多少对可能的 \((X,Y)\),使得至少存在一组合法的获胜情况满足要求。

数据范围:\(0 \le P,Q \le 10^{14}\)。

Analysis

这个神奇的数据范围,加上计数,不难想到正解为整除分块,往这个方面想。

设 \(B\) 赢了 \(k\) 场,不难列出不等式组:

\[\begin{cases} k \lt y & \textcircled{\small{1}}\\ xy \le p \le xy+k(x-1) & \textcircled{\small{2}}\\ kx \le q \le kx+y(x-1) & \textcircled{\small{3}} \end{cases}\]

由 \(\textcircled{\small{1}}\) 和 \(\textcircled{\small{3}}\) 中 \(q\) 的下界知:

\[k \le \min(y-1,\lfloor\frac{q}{x}\rfloor)\text{ }\textcircled{\small{4}} \]

这时候需要一点感性理解:

  1. 当 \(\textcircled{\small{4}}\) 时,\(\textcircled{\small{1}}\) 和 \(\textcircled{\small{3}}\) 中 \(q\) 的下界一定成立;
  2. 对于越大的 \(k\),\(\textcircled{\small{2}}\) 的下界不变,上界增大;
  3. \(\textcircled{\small{3}}\) 中区间长度与 \(k\) 无关,所以下界在 \(\le q\) 的前提下越大越好。

综上,\(k\) 越大越好,于是钦定:

\[k = \min(y-1,\lfloor\frac{q}{x}\rfloor) \]

注意到此时可以调和级数 \(O(p\log p)\) 的枚举 \(x\) 和 \(y\) 同时 \(O(1)\) 检验,期望得分 \(50\) 分。


再想优化,就需要分类讨论:

$\bold{I.} $ 当 \(\lfloor\frac{q}{x}\rfloor \le y-1\) 时,

此时 \(k=\lfloor\frac{q}{x}\rfloor\)。

分析前面的不等式组:

  1. \(\textcircled{\small{1}}\) 和 \(\textcircled{\small{3}}\) 中 \(q\) 的下界一定成立;
  2. 对于 \(\textcircled{\small{3}}\) 中 \(q\) 的上界 \(kx+y(x-1)\),代入 \(k\) 得:

\[q \le \lfloor\frac{q}{x}\rfloor\cdot x+y(x-1) \]

注意到 \(\lfloor\frac{q}{x}\rfloor\cdot x \gt q-x\),而 \(y \ge 1\) 即 \(y(x-1) \ge x-1\),于是 \(\textcircled{\small{3}}\) 恒成立。

综上,只需考虑 \(\textcircled{\small{2}}\) 和 \(\lfloor\frac{q}{x}\rfloor \le y-1\) 即 \(k\le y-1\) 的大前提即可。

\[\begin{cases} k \le y-1\\ xy \le p \le xy+k(x-1) & \textcircled{\small{2}}\\ \end{cases}\]

考虑卡出 \(y\) 的范围,易得:

\[\max(k+1,\lceil\frac{p+k}{x}\rceil-k)\le y\le \lfloor\frac{p}{x}\rfloor \]

改写一下向上取整:

\[\max(k+1,\lfloor\frac{p+k-1}{x}\rfloor+1-k)\le y\le \lfloor\frac{p}{x}\rfloor \]

接着考虑怎么整除分块,比较好写的做法是:循环中先以 \(\lfloor\frac{p}{x}\rfloor\) 进行分块,算出 \(k\) 和 \(\lfloor\frac{p+k-1}{x}\rfloor\) 在对右端点 \(r\) 进行更新即可。

先放一下实现:

for(ll l=1,r;l<=p;l=r+1){
    r=p/(p/l);
    ll k=q/l,tmp=p+k-1;
    if(k) r=min(r,q/k);
    if(l<=tmp) r=min(r,tmp/(tmp/l));
    ans+=(r-l+1)*max(p/l-max(k+1,tmp/l+1-k)+1,0ll);
}

$\bold{II.} $ 当 \(\lfloor\frac{q}{x}\rfloor \gt y-1\) 时,

此时 \(k=y-1\)。

类似的,分析原不等式组:

  1. \(\textcircled{\small{1}}\) 和 \(\textcircled{\small{3}}\) 中 \(q\) 的下界一定成立;
  2. 对于 \(\textcircled{\small{2}}\) 中 \(p\) 的下界 \(xy\),

\[\because \lfloor\frac{q}{x}\rfloor \gt y-1 \]

\[\therefore \lfloor\frac{q}{x}\rfloor \ge y \]

\[\therefore \lfloor\frac{q}{x}\rfloor\cdot x \ge xy \]

\[\therefore xy \le q \]

于是 \(\textcircled{\small{2}}\) 中 \(p\) 的下界的限制必成立;

  1. 对于 \(\textcircled{\small{3}}\) 中 \(q\) 的下界 \(kx\),

\[\because y-1 \lt \lfloor\frac{q}{x}\rfloor\text{ }且\text{ }k=y-1 \]

\[\therefore k \lt \lfloor\frac{q}{x}\rfloor \]

\[\therefore kx \lt \lfloor\frac{q}{x}\rfloor\cdot x \]

\[\therefore kx \lt q \]

\[\therefore kx \le q \]

于是 \(\textcircled{\small{3}}\) 中 \(q\) 的下界的限制必成立;

综上,只需考虑 \(\textcircled{\small{2}}\) 和 \(\textcircled{\small{3}}\) 中的上界。

\(p.s.\) 大前提 \(\lfloor\frac{q}{x}\rfloor \gt y-1\) 在 2. 和 3. 中考虑过了,无需再考虑。

\[\begin{cases} p \le xy+k(x-1) & \textcircled{\small{2}} & (上界)\\ q \le kx+y(x-1) & \textcircled{\small{3}} & (上界) \end{cases}\]

将 \(k=y-1\) 代入得:

\[\begin{cases} p \le 2xy-x-y+1 & \textcircled{\small{2}} & (上界)\\ q \le 2xy-x-y & \textcircled{\small{3}} & (上界) \end{cases}\]

考虑卡出 \(2xy-x-y\) 的范围,易得:

\[2xy-x-y\ge \max(p-1,q) \]

类似的,卡出 \(y\) 的范围,易得:

\[(2x-1)y\ge\max(p-1,q)+x \]

\[\implies y \ge\lfloor\frac{x+\max(p-1,q)}{2x-1}\rfloor \]

这个就好写很多,直接整除分块即可。

给出实现:

for(ll l=1,r;l<=min(p,q);l=r+1){
    r=min(p,q)/(min(p,q)/l);
    ll tmp=(max(p-1,q)+l-1)/(2*l-1));
    if(tmp) r=min(r,(max(p-1,q)+tmp-1)/(2*tmp-1));
    ans+=(r-l+1)*max(min(p,q)/l-tmp,0ll);
}

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll p,q,ans;
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); 
    cin>>p>>q;
    for(ll l=1,r;l<=p;l=r+1){
        r=p/(p/l);
        ll k=q/l,tmp=p+k-1;
        if(k) r=min(r,q/k);
        if(l<=tmp) r=min(r,tmp/(tmp/l));
        ans+=(r-l+1)*max(p/l-max(k+1,tmp/l+1-k)+1,0ll);
    }
    for(ll l=1,r;l<=min(p,q);l=r+1){
        r=min(p,q)/(min(p,q)/l);
        ll tmp=(max(p-1,q)+l-1)/(2*l-1);
        if(tmp) r=min(r,(max(p-1,q)+tmp-1)/(2*tmp-1));
        ans+=(r-l+1)*max(min(p,q)/l-tmp,0ll);
    }
    cout<<ans<<endl;
    return 0;
}

标签:lfloor,le,frac,题解,rfloor,textcircled,GZOI2024,small,D2T2
From: https://www.cnblogs.com/godmoo/p/18472831

相关文章

  • [题解]P1311 [NOIP2011 提高组] 选择客栈
    P1311[NOIP2011提高组]选择客栈P6032选择客栈加强版只要\([l,r]\)区间之内存在一个\(i\)使得\(w[i]\lep\),这个区间就是符合条件的。所以我们遍历每一个元素\(i\),根据贪心的思想我们维护\([1,i]\)区间内满足\(w[i]\lep\)的最大\(i\),记为\(mp\)。对于每个元素\(i\),寻找\(......
  • 【题解】twt studio2024 萌新欢乐赛
    迟来的题解本文更新到个人主页中,后续如果有任何修正变动也只会在网页端更新~特别鸣谢小羽毛在羽猫球一题的题解:)感谢兴航学弟在T3的题解。比赛链接:https://www.luogu.com.cn/contest/196515T1签到题,所有参与选手均满分。略。T2https://www.luogu.com.cn/article/37n1idam......
  • P9731 [CEOI2023] Balance 题解
    首先考虑\(S=2\)怎么做,我们把它转化为图论问题。对于每一行的两个点的颜色连一条无向边,那我们相当于要给这些边定向。最后要求\(|in_u-out_u|\le1\)。会发现这个要求很像欧拉回路。但是欧拉回路是要求每个点的入度和出度相等,怎么办呢?我们再建一个超级源点,向每个奇数度数的点......
  • 常见ElasticSearch 面试题解析(上)
    前言ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,......
  • 2024-10-17每日一题题解
    最大子段和题目描述给出一个长度为\(n\)的序列\(a\),选出其中连续且非空的一段使得这段和最大。样例输入72-43-12-43样例输出4题解tips:无脑暴力法:枚举每一段区间,再对每一段区间求和,时间复杂度为\(O(n^3)\),会超时(n为1e5,则应该在\(O(nlogn)\)的时间范围内)......
  • 【题解】【记忆化递归】——Function
    【题解】【记忆化递归】——FunctionFunction题目描述输入格式输出格式输入输出样例输入#1输出#1提示数据规模与约定1.思路解析2.AC代码Function通往洛谷的传送门题目描述对于一个递归函数w......
  • PTA L1系列题解(C语言)(L1_073 -- L1_080)
    L1-073人与神题目内容:L1-073人与神-团体程序设计天梯赛-练习集(pintia.cn)跨界大神L.PeterDeutsch有一句名言:“Toiterateishuman,torecursedivine.”(迭代的是人,递归的是神)。本题就请你直接在屏幕上输出这句话。输入格式:本题没有输入。输出格式:在一行中输......
  • HIAST Collegiate Programming Contest 2024(非完全题解)
    C题HZY做的,等他补题解//#pragmaGCCoptimize("O3,unroll-loops")//#pragmaGCCtarget("avx2,bmi,bmi2,lzcnt,popcnt")////如果在不支持avx2的平台上将avx2换成avx或SSE之一#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecon......
  • HNCPC2024 2024湖南省赛 题解
    目录写在前面I签到C签到E二进制,枚举,子集DPK转化,分层图最短路A枚举,DP,简单计算几何J单调性,枚举,数据结构HDP,字符串,KMPD莫比乌斯反演,枚举写在最后写在前面比赛地址:https://codeforces.com/gym/105423。以下按个人难度向排序。利益相关:现场赛Au。没有和去年一样整场犯唐......
  • [题解]NOIP2018模拟赛 plutotree
    题目描述给定一棵有\(n\)个节点的树,根节点为\(1\),节点\(i\)有权值\(w[i]\)。这棵树非常奇怪,它的每个叶子结点都有一条连向根节点的权值为\(0\)的边。给定\(q\)次询问,每次给定\(u,v\),请计算出一条\(u\)到\(v\)的路径(每条边最多经过\(1\)次),最小化该路径上的点权之和,并在其基础上最......