首页 > 其他分享 >Codeforces Round 904 (Div. 2)

Codeforces Round 904 (Div. 2)

时间:2023-11-21 12:33:50浏览次数:37  
标签:codeforces le gcd 904 int Codeforces submission Div dp

\(A. Simple Design\)

https://codeforces.com/contest/1884/submission/233628914

\(B. Haunted House\)

https://codeforces.com/contest/1884/submission/233629446

\(C. Medium Design\)

https://codeforces.com/contest/1884/submission/233632930

\(D. Counting Rhyme\)

题意:给定长度为 \(n\) 的数组 \(a\) 。寻找对 \((i,j),1\le i< j\le n\) ,使得 \(a[i]%a[k]==0\) 与 \(a[j]%a[k]==0\) 不同时发生,其中 \(1\le k\le n\) 。求这样的对的数量。
解法:显然的,一个 \(pair\) 满足上面的条件等同于 \(gcd(a[i],a[j])\) 的约数不在数组中。那么不妨用数组内的数字去倍数铺满整个 \(1-n\) 的值域,这样没有被铺到的地方是合法的 \(gcd(a[i],a[j])\) 的值。我们再用 \(dp[i]\) 表示 \(gcd(a[i],a[j])==i\) 的对数,具体的是 \(n*(n-1)/2\) ,其中 \(n\) 为以 \(i\) 为倍数的数字个数,但 \(n*(n-1)/2\) 中还包括了以 \(2i,3i,…\) 为 \(gcd\) 的答案需要减掉。那么这样答案就是没有被铺到的 \(dp\) 值的和。

这样的 \(dp\) 方式见过好几次,但是都不太能自己写出来,不知道是我理解的不够还是做的类似的题太少。需要类似题目的题单。

void solve(){
    int n=read();
    vector<int>a(n+1),cnt(n+1),f(n+1),vis(n+1);
    for(int i=1;i<=n;i++){
        a[i]=read();
        vis[a[i]]=1;
        cnt[a[i]]++;
    }
    for(int i=n;i>=1;i--){
        int tmp=0;
        for(int j=i;j<=n;j+=i){
            vis[j]|=vis[i];
            tmp+=cnt[j];
        }
        f[i]=tmp*(tmp-1)/2;
        for(int j=2*i;j<=n;j+=i){
            f[i]-=f[j];
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            ans+=f[i];
        }
    }
    cout<<ans<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

标签:codeforces,le,gcd,904,int,Codeforces,submission,Div,dp
From: https://www.cnblogs.com/edgrass/p/17846348.html

相关文章

  • jquery 检测div宽度变化_jquery判断浏览器宽度小于指定值改变div样式
    浏览器原本样式当浏览器宽度小于1200px时样式变为代码如下:方法一:直接修改该div样式添加w1200,会覆盖前一个样式$(function(){var_width=$(window).width();//获取浏览器宽度if(_width<1200){$(".chenbin_org").addClass("w1200");}});方法二:修改该div的class属性......
  • Codeforces Round 910 (Div. 2) - D
    目录D.AbsoluteBeautyCodeforcesRound910(Div.2)D.AbsoluteBeauty观察可知,只要当交换的\(i\)和\(j\)满足$max(a_i,b_i)<min(a_j,b_j)$或者$min(a_i,b_i)>max(a_j,b_j)$......
  • CodeForces 合集第三弹
    这个合集主要是近期的CodeForces比赛题。1898.CodeforcesRound910(Div.2)https://codeforces.com/contest/1898A.MilicaandString很容易发现答案不超过\(1\),然后分类讨论当前B的个数然后选取一个前缀赋值即可。如果已经满足条件答案就是\(0\)。反正随便做做,时间......
  • Codeforces Round 785 (Div. 2)
    A-SubtleSubstringSubtraction/**__----~~~~~~~~~~~------___*..~~//====......__--~~~*-.\_|//|||\\~~......
  • Codeforces Round 908 (Div. 2)
    Preface补一下之前期中考落下的CFyysy因为这学期又开始断电了,所以除了周五周六晚上的CF可能都不一定会去打,都会以后面补题为主A.SecretSport由于题目保证给出的状态合法,因此直接输出最后一个字符即可#include<cstdio>#include<iostream>#include<utility>#include<vect......
  • Selenium4+python被单独定义<div>的动态输入框和二级下拉框要怎么定位?
    今天在做练习题的时候,发现几个问题捣鼓了好久,写下这篇来记录问题一:有层级的复选框无法定位到二级目录 对于这种拥有二级框的选项无法定位,也不是<select>属性.我们查看下HTML,发现它是被单独封装在body内拥有动态属性的独立<div>,当窗口点击的时候才会触发. 解......
  • Codeforces Round 910 (Div. 2)
    CodeforcesRound910(Div.2)基本情况做A题的速度比之前快多了,大概20分钟搞定。B题想了一个贪心错解,想用链表实现,但是不熟练,实现太慢,而且还被hack了。但是自己hack掉了,造数据上进步。B.MilenaandAdmirer贪心思路发现一个大于下一个的数,直接对半分,如果不能对半就小的在......
  • Codeforces Round 909 (Div. 3)
    CodeforcesRound909(Div.3)基本情况第一次在CF上AC了超过一道题。(毕竟是Div3)B题卡住了很久。D没有深入思考。[B.250ThousandTonsofTNT](Problem-B-Codeforces)一开始死活过不了的代码:#include<iostream>#include<cstdio>#include<cstring>#inc......
  • CF909 div3
    CF909div3A.GamewithIntegers题意两人博弈,给出一个数字,每人每次可以选择令该数字+1或者-1。如果在10步以内可以令数字为3的倍数,先手胜。否则后手胜。数据范围多组数据,\(1<=T<=100,1<=n<=1000\)题解后手可以恢复现场,所以先手最多只能有效操作1次。若+1或者-1......
  • Educational Codeforces Round 13 E
    tilian最开始看错了以为是可以任意选择两人or选择一人胜出但题意是可以选择下一个擂主是谁考虑dp的话我们显然需要记录一个state以及当前擂主是谁转移就是dp[state][i]=max(dp[state][i],dp[state(1<<j)][j]*a[i][j]+dp[state(1<<i)]*a[j][i])意义是我们枚举他后一个交......