牛客1102

写在前面

依旧是自闭的一场比赛lb.png

T1 货物收集

Idea

使用优先队列

比如样例

4 7
5 5 2
1 3 2
1 2 7
1 4 5

(请大家自己加上点权(滑稽

0.png

把能遍历的点的边权丢进队列。

这样先走到3,收集到5的货物,需要武力值2

货物不够,又走到4,收集到2的货物,总货物为7 ,需要武力值5。货物够了,那么答案就是5。

Code

namespace Sol{
    struct node{
        int v,to,net;
    }e[maxn<<1];
    int n,M,tot,ans,cnt;
    int head[maxn],a[maxn];
    bool vis[maxn];
    priority_queue<pair<int,int> >q;
    inline void add(int x,int y,int z){
        e[++tot].v=y; e[tot].to=z;
        e[tot].net=head[x]; head[x]=tot;
    }  
    inline int Main(){
        n=read(); M=read();
        for(int i=2;i<=n;i++) a[i]=read();  
        for(int i=1;i<n;i++){
            int x=read(),y=read(),z=read();
            add(x,y,z); add(y,x,z);
        }
        vis[1]=1;
        for(int i=head[1];i;i=e[i].net){
            int y=e[i].v;
            vis[y]=1;
            q.push(make_pair(-e[i].to,y));
        }
        while(ans<M){
            int x=-q.top().first;//武力值
            int y=q.top().second;//走到的节点
            q.pop();
            ans+=a[y];//收集到的总货物
            cnt=max(cnt,x);//比较武力值
            for(int i=head[y];i;i=e[i].net){
                int yy=e[i].v;
                if(vis[yy]) continue;
                vis[yy]=1;
                q.push(make_pair(-e[i].to,yy));
            }
        }
        printf("%d",cnt);
        return 0;
    }
}

T2货物分组

Idea

这里有篇博客和我思路差不多,但奈何我的常数比较优秀?

为什么帖博客?因为我比较懒ts.png

Code

namespace Sol{ 
	int n,M;
	int f[maxn],s[maxn],a[maxn];
	int maxx,minn;
    inline int Main(){
		n=read(); M=read();
		for(int i=1;i<=n;i++){
			a[i]=read();
			s[i]=s[i-1]+a[i];
		}
		for(int i=1;i<=n;i++){
	        f[i]=f[i-1]-s[i-1];
	        maxx=a[i]; minn=a[i];
	        for(int j=i-2;j>=0&&s[j]>=s[i]-M;j--){
	            maxx=max(maxx,a[j+1]);
	            minn=min(minn,a[j+1]);
	            if(f[i]>f[j]-s[j]+maxx-minn)
	                f[i]=f[j]-s[j]+maxx-minn;
	        }
	        f[i]+=s[n];
	    }
		printf("%lld",f[n]);
		return 0;
	}
}

T3地形计算

未写,等待更新ts.png

\[\mathcal The \quad End \]

\[愿你走出半生,还仍是少年 \]

posted @ 2019-11-04 08:38  云山乱  阅读(150)  评论(0编辑  收藏  举报