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

Codeforces Round 907 (Div. 2)

时间:2023-11-14 18:46:27浏览次数:40  
标签:907 submission int res Codeforces codeforces ans Div mod

\(A. Sorting with Twos\)

https://codeforces.com/contest/1891/submission/232689614

\(B. Deja Vu\)

https://codeforces.com/contest/1891/submission/232690141

\(C. Smilo and Monsters\)

https://codeforces.com/contest/1891/submission/232691988

\(D. Suspicious logarithms\)

这题的思路很好想,但是精度一直爆。后来vp结束int全部换int128就过了。
https://codeforces.com/contest/1891/submission/232694691

#define int __int128
vector<int>mi2(70);
int qmi(int m, int k, __int128 p){
    __int128 res = 1 % p, t = m;
    while (k){
        if (k&1) res = res * t % p;
        t = t * t % p;
        k >>= 1;
    }
    return res;
}
int lg(int x,int y){
    int p = 0,s = 1;
    while(s <= y) s *= x,p ++;
    return p - 1;
}
void solve(){
    int L=read(),R=read(),ans=0;
    for(int i=2;i<=62;i++){
        int mil=mi2[i],mir=mi2[i+1]-1;    
        if(mil<=R&&mir>=L){
            int ll=max(L,mil),rr=min(R,mir);
            int lval=(int)(lg(i,ll)),rval=(int)(lg(i,rr));
            if(lval==rval){
                ans+=lval*(rr-ll+1)%mod;
                ans%=mod;
            }else{
                int hh=qmi(i,rval,mod);
                ans+=lval*(hh-ll)%mod;
                ans%=mod;
                ans+=rval*(rr-hh+1)%mod;
                ans%=mod;
            }
        }else{
            continue;
        }
    }
    cout<<(long long)((ans+mod)%mod)<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}
signed main(){
    // ios::sync_with_stdio(false);
    // cin.tie(0);
    // cout.tie(0);
    // int t=1;
    mi2[0]=1;
    for(int i=1;i<=62;i++){
        mi2[i]=mi2[i-1]*2;
        // cout<<mi2[i]<<" ";
    }
    // cout<<'\n';
   int t=read();
    while(t--){
        solve();
    }
}

\(F. A Growing Tree\)

题意翻译:
\(T\) 组数据:
给定一棵树,初始只含一个节点,编号为 \(1\),初始权值为 \(0\) ,设树的大小为 \(sz\) 。
\(q\) 次操作:
操作1: \(1\) \(x\) ,在 \(x\) 下挂一个节点,编号为 \(sz+1\) ,初始权值为 \(0\) 。
操作2: \(2\) \(x\) \(v\) ,将当前 \(x\) 子树中节点的权值加上 \(v\) 。
求所有操作完成后每个节点的点权。其中 \(1\le T\le 10^4,\sum q\le 5*10^5\) 。

做法:
考虑先离线把树建出来,一个点能受到 \(2\) 操作的影响当且仅当此操作的 \(x\) 是它的祖先且这个操作的时间晚于当前点被加入的时间。所以 \(dfs\) 一遍,用树状数组维护当前点到根的路径上,时间上的增量。对于每个点查询时间大于当前点加入的时间的操作的贡献即可。在回溯的时候,将当前点的操作撤销掉。

https://codeforces.com/contest/1891/submission/232698657

int h[N], e[N], ne[N], idx;
void add(int a, int b){
    e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
int tim[N],ans[N],cnt,n;
vector<array<int,2> >vec[N];
struct Fenwick {
    int c[N+5];
    inline int lowbit(int x) {return x&(-x);}
    inline void add(int x,int d) {
        for(;x<=n;x+=lowbit(x))c[x]+=d;
    }
    inline int query(int x) {
        int res=0;
        for(;x>=1;x-=lowbit(x))res+=c[x];
        return res;
    }
    inline int rangequery(int l,int r) {
        return query(r)-query(l-1);
    }
}fen;
void dfs(int u){
    for(auto x:vec[u]){
        fen.add(x[0],x[1]);
        // cout<<x[0]<<" "<<x[1]<<'\n';
    }
    // cout<<n<<'\n';
    // cout<<u<<" "<<fen.query(n)<<'\n';
    ans[u]=fen.rangequery(tim[u],n);
    for (int i = h[u]; i != -1; i = ne[i]){
        int j = e[i];
        dfs(j);
    }
    for(auto x:vec[u]){
        fen.add(x[0],-x[1]);
    }
}
void solve(){
    idx = 0;cnt=1;
    // memset(h, -1, sizeof h);
    n=read();
    for(int i=0;i<=n;i++){
        vec[i].clear();
        fen.c[i]=0;
        h[i]=-1;
    }
    for(int i=1;i<=n;i++){
        int op=read();
        if(op==1){
            int u=read();
            tim[++cnt]=i;
            add(u,cnt);
        }else{
            vec[read()].push_back((array<int,2>){i,read()});
        }
    }
    dfs(1);
    for(int i=1;i<=cnt;i++){
        cout<<ans[i]<<" ";
    }
    cout<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

标签:907,submission,int,res,Codeforces,codeforces,ans,Div,mod
From: https://www.cnblogs.com/edgrass/p/17832273.html

相关文章

  • Codeforces Round 809 (Div. 2) D1. Chopping Carrots (Easy Version) 题解
    题意CodeforcesRound809(Div.2)D1.ChoppingCarrots(EasyVersion)给两个整数\(n,k\),一个数组\(a\),要求构造一个同样长度的数组\(p\),使得\(\max\limits_{1\lei\len}\left(\left\lfloor\frac{a_i}{p_i}\right\rfloor\right)-\min\limits_{1\lei\l......
  • Codeforces Round 906 (Div. 2)
    A.简单题B.简单题C.比赛时没做出来,赶着回宿舍,过了几天来补发现很简单秒掉D.Doremy'sConnectingPlan给定n个结点的图,每个点有一个权值a[i],开始时图上没有边,如果与点i相邻的点(包括点i)的权值的和记为Sum_i.给定一个常数c,如果Sum_i+Sum_j>=ijc,则可以在i和j上......
  • 如何隐藏HTML中的div元素
    参考文章,通过一个例子来学习如何在html中隐藏div元素。考虑一下,我们有一个如下的html元素。<divclass="box">Thisismainheading</div>现在,我们需要从网页中隐藏上述div元素。使用display:none要在html中隐藏一个div元素,我们可以使用css的display:none属性。下面是......
  • CF907 div2
    CF907div2A.SortingwithTwos题意给一个长度为n的序列,可以进行的操作是,选取一个i,令前\(2^i\)个元素减1,问若干次操作之后能否使得序列成为不降序列。数据范围多组数据\(1<=T<=10^4\),\(1<=n<=20\),\(0<=a_i<=1000\)输入样例851234556534496557......
  • CodeForces 1452E Two Editorials
    洛谷传送门CF传送门考虑枚举其中一个区间取\([i,i+K-1]\),考虑对于每个\(j\)一次性处理出,区间取\([j-K+1,j]\)多产生的贡献(即以\(j\)为右端点)。对于一个\([l_k,r_k]\),设其与\([i,i+K-1]\)的交长度为\(t\)。如果\(t=\min(r_k-l_k+1,K)\)则......
  • 论文阅读:Active Learning for Point Cloud Semantic Segmentation via Spatial-Struct
    ActiveLearningforPointCloudSemanticSegmentation viaSpatial-StructuralDiversityReasoning通过空间结构多样性推理进行点云语义分割的主动学习摘要众所周知,昂贵的注释成本是点云语义分割技术发展的一个主要制约因素。在本文中,我们提出了一种新的基于主动学习的方法来......
  • 如何使用透明的div实现页面背景模糊效果
    要在页面背景上实现模糊效果,并使内容区域(<div>)保持半透明,你可以使用CSS的backdrop-filter属性。这个属性可以用于设置页面背景的滤镜效果,而不影响内部内容的模糊。下面是一个示例的代码片段,展示如何实现这个效果:<!DOCTYPEhtml><html><head><title>背景模糊效果</title>......
  • Codeforces Round 908 (Div. 2) A-D
    SecretSport观察到数据不大,直接摁住x和y枚举即可,方案合法当且仅当刚好打若干局,且赢最后一局的人是赢家#include<bits/stdc++.h>usingnamespacestd;voidsolve(){intn;cin>>n;strings;cin>>s;//xintwina=0,winb=0;for(inti=1;i<=n......
  • Codeforces Round 887 (Div. 2)
    https://codeforces.com/contest/1853C题感觉很不好写的样子,首先通过打表发现最后答案每次都是+n,那么我们考虑前i个,假如当前的ans+i仍然小于a[i+1],则没有影响,我们依然可以直接往后跳,否则,我们越过了a[i+1],那么我们应当加上i+1,注意,这有可能会导致往后面继续跳,比如13567,我们跳......
  • 修改div中的内容
    在日常的开发中,我们会需要获取或者修改html元素内容。那么什么方法可以让我们做到这一需求呢,今天我就为大家讲解一下修改div中内容的方法。<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> </head> <body> <divid="box"><......