首页 > 其他分享 >CF 1872 D

CF 1872 D

时间:2023-09-08 12:55:44浏览次数:40  
标签:cdot ll 位置 numx CF numy 1872 倍数

D. Plus Minus Permutation

这道题要使\((p_{1 \cdot x} + p_{2 \cdot x} + \ldots + p_{\lfloor \frac{n}{x} \rfloor \cdot x}) - (p_{1 \cdot y} + p_{2 \cdot y} + \ldots + p_{\lfloor \frac{n}{y} \rfloor \cdot y})\)最大,只需要让位置为\(x\)倍数的位置尽可能大,让位置为\(y\)倍数的位置尽可能小。其中位置为\(lcm(x, y)\)倍数的位置会同时加减一次,所以只要计算出位置为\(x\)倍数且不是\(lcm(x, y)\)倍数的个数以及位置为\(y\)倍数且不是\(lcm(x, y)\)倍数的个数,则\(numx=n/x-n / (x * y / gcd(x, y))\),\(numy=n/y-n / (x * y / gcd(x, y))\),最终答案即

\[Ans=(n + n - numx + 1) * numx / 2 - (1 + numy) * numy / 2 \]

代码

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef pair<ll, ll> PII;

const ll N = 1e7 + 10;
ll t;
ll n, x, y;

signed main()
{
    std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> t;
    while(t--)
    {
        cin >> n >> x >> y;
        ll numx = n / x, numy = n / y, numg = n / (x * y / gcd(x, y));
        numx -= numg;
        numy -= numg;
        ll tot = (n + n - numx + 1) * numx / 2 - (1 + numy) * numy / 2;
        cout << tot << endl;
    }
    return 0;
}

标签:cdot,ll,位置,numx,CF,numy,1872,倍数
From: https://www.cnblogs.com/tongluosao/p/17687290.html

相关文章

  • CF 1872 C
    C.Non-coprimeSplit这道题可以先进行分类讨论。当\(r<=3\)时皆无解,先排除。当\(l≤x≤r\)中存在\(x\)为偶数时,就能直接找到答案\(a=b=x/2\)当\(l=r\)且\(l\)为奇数时,可以使用朴素求因数的方法判断是否存在\(j\)(\(2≤j≤\sqrt[2]{l}\))使\((a-j)\modj=0\),若存在,则找到答案\(......
  • 样本分析 99eddc2794077f97a5cfe3098f431c4cfc4fd6353957ee715b2eccbff066ce1d 由于.
     https://s.threatbook.com/report/file/99eddc2794077f97a5cfe3098f431c4cfc4fd6353957ee715b2eccbff066ce1d09:30:16:088, 99eddc2794077f97a5cfe3098f431c4cfc4fd6353957ee715b2eccbff066ce1d.exe, 1908:0, 1908, EXEC_create, C:\Users\bonelee\Desktop\99eddc2794077......
  • CF402D 题解
    2023-09-0418:42:46solution不难想到我们要先记录一下每一位的前缀\(\gcd\),我们发现我们选择一位的前缀\(\gcd\)除掉以后,前缀\(\gcd\)会变为\(1\)并且会导致这位之后的\(\gcd\)全部为\(1\)。所以每一位只能选择一次,并且我们从后往前扫肯定比从前往后扫要更优。我们......
  • CF1103C 题解
    2023-09-0514:52:07solution找路径很好找,我们随便跑个dfs树找个深度\(\ge\frac{n}{k}\)的路径输出即可。可是怎么找\(k\)个长度不是\(3\)的倍数的环呢?既然我们跑了dfs树,那么就没有横叉边,对于叶子节点非树边只有返祖边,然后一看这个很奇怪的条件——保证每个点度数大......
  • CF1851 部分题解
    2023-07-3019:35:02前言因为我实在是太菜了,没时间也不会做最后两题,所以这里只有前\(5\)道签到题的题解。之后我有时间看了后两题的题解再来更新吧~A先不用看那么多七七八八的,搞清楚下面几点即可:高度不能相同。高度差得被整除。高度差不能太大。好了,然后就可以\(AC\)......
  • CF232B Table
    2023-08-0716:29:49题意有一个\(n\timesm\)的矩阵,求使得每个\(n\timesn\)的矩阵中都有正好\(k\)个点的方案数,方案数对\(1e9+7\)取模。\(1\len\le100,n\lem\le10^{18},0\lek\len^2\)。思路通过观察样例并且自己手玩了一些数据后,我们发现,假设第\(i\)列放了\(k\)......
  • CF1833F Ira and Flamenco
    题目链接题解知识点:组合数学,枚举,双指针。注意到,长度为\(m\)且数字各不相同的子序列,那么最大值与最小值的差至少为\(m-1\)。因此,对于任意子序列,它是合法的,当且仅当,将其从小到大排序后是以\(1\)为等差的数列。因此,我们可以直接从原数组处理出所有不同数字的个数,并对数字从......
  • CF1829H Don't Blame Me
    比赛链接题解知识点:线性dp,位运算。考虑设\(f_{i,j}\)表示考虑了前\(i\)个数字,与和为\(j\)的方案数。转移方程显然。注意初值为\(f_{0,63}=1\)表示空集,此时注意\(k=6\)时要减去空集这一个方案。当然也可以选择不加入空集,但dp过程需要特别处理只选自己的方案。......
  • CF 842 vp记录
    A诈骗题,看起来有点高大上,其实只要将\(k\)减\(1\)即可。B此时序列中的递增子序列是不需要移动的,所以此时本题就满足一个贪心,设不在这个递增子序列中的数的个数是\(x\),则答案为\(\lfloor\frac{x}{k}\rfloor\)C这破比赛怎么这么喜欢排列。此时这个排列满足三个性质。每个......
  • 配置你的sublime来打cf
    第一步安装FastOlympic插件和FiraCode字体安装FastOlympic插件和FiraCode字体第二步配置competitive-companion和另一个插件来爬取测试数据U173674注意是在C盘下,然后就能愉快地用sublime打洛谷cf啦rp++......