首页 > 其他分享 >ABC296D题解

ABC296D题解

时间:2023-08-25 21:26:37浏览次数:34  
标签:题解 ll sqrt ABC296D long ans

简单题。

考虑 -1 的情况,即为 \(n^2<m\)。

剩下暴力枚举 \(a\) 即可。上限为 \(\sqrt{m}+1\)。注意要 \(+1\),因为上取整(本人赛时被这个罚了很多次)。

可以由 \(m\) 和 \(a\) 确定 \(b\) 的最小值,即 \(b=\lceil\frac{m}{a}\rceil\)。

注意卡 long long 以及 \(a,b\) 的最大值不能超过 \(n\)。

时间复杂度 \(O(\sqrt{m})\)。(原来手误打错,感谢管理员指出qwq)

#include<cstdio>
#include<cmath>
#define ll unsigned long long
ll n,m;
ll ans=1ll<<64-1;
ll min(ll a,ll b)
{
    return a<b?a:b;
}
ll a,b;
int main()
{
    scanf("%llu%llu",&n,&m);
    if(n*n<m) printf("-1");
    else if(n*n==m) printf("%llu",n*n);
    else if(m<=n) printf("%llu",m);
    else
    {
        for(a=1;a<=sqrtl(m)+1&&a<=n;a++)
        {
            b=m/a;
            if(a*b<m) b++;
            if(b<=n&&a*b==m)
            {
                ans=m;
                break;
            }
            if(b<=n&&a*b>m) ans=min(ans,a*b);
        }
        printf("%llu",ans);
    }
    return 0;
}

标签:题解,ll,sqrt,ABC296D,long,ans
From: https://www.cnblogs.com/osfly/p/17657971.html

相关文章

  • AT_donuts_2015_3 题解
    根据题意,发现我们要维护一个身高递减的序列。因此,我们可以直接使用单调栈维护第\(i\)个人能看到的人数即可。答案就是当前栈内的元素数量。注意应先输出答案再将当前高度入栈。#include<cstdio>intn;inth[100010];intst[100010];inttop;intmain(){ scanf("%d",&......
  • ABC020C题解
    本题二分+搜索。我们可以先二分出\(x\)可能的值,再用搜索检验这个答案是否满足要求。若满足,左端点右移,否则右端点左移。至于搜索可以用记搜加速。注意输出要换行,否则会WA。#include<cstdio>#include<cstring>intn,m,t;charmap[20][20];intsx,sy;intex,ey;longl......
  • CF498A题解
    简单解析几何。做这道题之前,你需要知道:根据两点求直线一般式。根据两条直线求交点坐标。这里直接丢公式了,百度上也有证明过程,自己推导难度也不大。若两点坐标为\((x_1,y_1),(x_2,y_2)\),则直线方程为:\(Ax+By+C=0\),其中\(A=y_2-y_1,B=x_1-x_2,C=x_2y_1-x_1y_2\)。......
  • UVA10192题解
    为了尽可能满足父母亲的要求,我们应该取两个字符串的最长公共子序列。洛谷模板题设\(dp_{i,j}\)为\(a\)串匹配到第\(i\)位,\(b\)串匹配到第\(j\)位时的最长公共子序列长度。则易知\(dp_{i,j}\)可以由\(dp_{i-1,j}\)和\(dp_{i,j-1}\)转移过来。如果\(a_{i}=b_{j}......
  • CF1673A的题解
    好久没做CF的水题了由于每一个人都以最佳策略进行游戏且Alice先手。设字符串长度为\(|s|\)。我们可以考虑:\(|s|\)为偶数,此时Alice可以直接全部取走,不给Bob任何机会(人心险恶啊)。\(|s|\)为奇数,此时Alice最多取\(|s|-1\)个字符,也就剩下头和尾。对比头和尾,哪一个大就......
  • CF1674C的题解
    有意思的题目。还是比较好想的。先考虑-1的情况,可以想到,如果\(t\)的长度不为\(1\),并且\(t\)里面还有a的话,那么这个新的a又能被下一个\(t\)替换,无限套娃。剩下的,还是有两种情况:如果\(t\)只有一个字符a,那么\(s\)无论怎么被替换都是一样的(全部都是a),所以,这......
  • CF1674B的题解
    很简单的题可以先初始化一下,把所有单词放进一个map里,最后输入时用map映射即可。一个坑点,注意每一个单词的两个字母不相同。#include<cstdio>#include<map>#include<string>#include<iostream>usingnamespacestd;map<string,int>mp;voidinit(){ intindex=0;......
  • CF1311F的题解
    前置芝士:二维偏序。二维偏序的板子题。怎么看出是二维偏序的呢?考虑点对\((i,j)\),令\(x_i<x_j\)。若\(v_i>v_j\),则两点会越来越近,易知最短距离为\(0\),所以我们不需要考虑这种情况。所以问题转化成:\(x_i<x_j\)且\(v_i\lev_j\)的点对的距离和。很明显,二维偏序,套板子就......
  • CF1701B的题解
    简单构造题。很明显的,当\(d=2\)的时候代价最大。证明:\(\becausep_i\cdotd=p_{i+1}\)当\(d\)减小时,\(p_i\cdotd\)也在减小,\(p_{i+1}\)也在减小,那么\(p_{i+1}\)减小时,\(p_{i+1}\)可供选择的数就越多,代价也随即越大,那么\(d\)在取最小值时,代价最大,因为\(p\)是......
  • CF131D的题解
    注意到\(n\)实在是小到不行,我们可以直接采用比较暴力的做法。(嗯,可能算比较暴力吧很简单,找环,然后把环里的所有点全部压进dijkstra的优先队列就行了。找环最坏\(n\)遍跑满的dfs,最短路是\(O(n\logn)\)的,最坏时间复杂度为\(O(n^2)\),稳过。什么?怎么找环?都2202年了不会还......