zoukankan      html  css  js  c++  java
  • 【bzoj4027】 [HEOI2015]兔子与樱花

    自底向上贪心。

    每次给儿子排序,贪心地从小到大删,直到不能删。

    #include<algorithm>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    using namespace std;
    
    #define N 2000010
    
    int n,m;
    
    struct edge
    {
    	int to,next;
    }e[N];
    int head[N<<1];
    int cnt;
    
    int a[N],c[N];
    
    int ans;
    int x,xx;
    
    void link(int u,int v)
    {
    	e[++cnt]=(edge){v,head[u]};
    	head[u]=cnt;
    }
    
    void dfs(int x)
    {
    	for (int i=head[x];i;i=e[i].next)
    		dfs(e[i].to);
    	cnt=0;
    	for (int i=head[x];i;i=e[i].next)
    		c[++cnt]=a[e[i].to];
    	sort(c+1,c+cnt+1);
    	for (int i=1;i<=cnt;i++)
    	{
    		if (a[x]+c[i]-1>m)
    			break;
    		a[x]+=(c[i]-1),ans++;
    	}
    }
    
    int main()
    {
    	scanf("%d%d",&n,&m);
    	for (int i=1;i<=n;i++)
    		scanf("%d",&a[i]);
    	for (int i=1;i<=n;i++)
    	{
    		scanf("%d",&x);
    		a[i]+=x;
    		for (int j=1;j<=x;j++)
    			scanf("%d",&xx),link(i,xx+1);
    	}
    	dfs(1);
    	printf("%d
    ",ans);
    	return 0;
    }
    

      

  • 相关阅读:
    归并排序算法
    交换排序算法
    插入排序算法
    DASCTF2021五月赛
    第二届newsctf
    山西省赛
    2021广东省第一届网络安全竞赛
    2021 DozerCTF
    2021-HSCTF re
    buuctf-re (持续更新)
  • 原文地址:https://www.cnblogs.com/yangjiyuan/p/5664115.html
Copyright © 2011-2022 走看看