20231020刷题记录

  • P3915 树的分解

    DFS 维护每棵树的子树大小,如果统计到 s i z x = k siz_x=k sizx=k,那么重新将 s i z x siz_x sizx 归零继续统计。

    注意要输入完了再特判,双向边要开两倍数组。

    #include 
    using namespace std;
    
    const int maxn=2e5+5;
    int head[maxn],A,B,siz[maxn],tot,cnt,N,K;
    struct edge{int to,nxt;}e[maxn];
    
    void add(int x,int y){e[++cnt]=(edge){y,head[x]},head[x]=cnt;}
    
    void dfs(int x,int fa)
    {
        siz[x]=1;
        for(int i=head[x];i;i=e[i].nxt) 
        {
            if(e[i].to==fa) continue;
            dfs(e[i].to,x),siz[x]+=siz[e[i].to];
        }
        if(siz[x]==K) siz[x]=0,tot++;
    }
    
    int main()
    {
        int T;cin>>T;
        while(T--)
        {
            cin>>N>>K;
            memset(head,0,sizeof head),cnt=0,tot=0,memset(siz,0,sizeof siz);
            memset(e,0,sizeof e);
            for(int i=1,A,B;i<N;i++) cin>>A>>B,add(A,B),add(B,A);
            if(N%K){cout<<"NO"<<endl;continue;}
            dfs(1,0);
            if(tot==N/K) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        return 0;
    }
    
  • P2527 Panda的烦恼

    sol.

  • P3865 【模板】ST 表

    Portal.

    输出换行符 '\n'endl 快。

    #include 
    using namespace std;
    
    const int maxn=1e5+5,maxm=2e6+5;
    int a[maxn],lg[maxn],f[maxn][25];
    
    inline int read()
    {
    	int x=0,f=1;char ch=getchar();
    	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    	return x*f;
    }
    
    void query(int l,int r)
    {   
        int k=lg[r-l+1];
        cout<<max(f[l][k],f[r-(1<<k)+1][k])<<'\n';
    }
    
    int main()
    {
        ios::sync_with_stdio(false);
        int M,N;cin>>N>>M;
        lg[1]=0;
        for(int i=1;i<=N;i++) f[i][0]=read();
        for(int i=2;i<=N;i++) lg[i]=lg[i/2]+1;
        for(int j=1;j<=lg[N];j++)
            for(int i=1;i<=N-(1<<j)+1;i++) f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);    
        while(M--)
        {
            int l=read(),r=read();
            query(l,r);
        }
        return 0;
    }
    

你可能感兴趣的:(刷题记录,学习)