zoukankan      html  css  js  c++  java
  • # Tallest Cows(差分)

    Tallest Cows(差分)


    • n头牛,给出最高牛的位置和身高,其他牛身高未知,给出m对相对关系,表示可以相互看见当且仅当他们中间的牛都比他们矮。求每头牛身高最大值是多少。

    • 差分数组的性质:前缀和为原序列

    • 给出相对关系可以考虑使用差分,a,b可以看见,则将a,b之间的所有的牛身高c[]减1,使用差分数组d[]维护。最后差分数组的前缀和就是和最高牛的相对关系(最高牛c[]的值肯定为0,他不可能在任何可以相互看见的两头牛中间)
      AC Code:

    #include <bits/stdc++.h>
    using namespace std;
    #define fre freopen("C:\Users\22765\Desktop\in.txt","r",stdin);
    #define mem(a) memset((a),0,sizeof(a))
    #define fo(i,a,b) for(int (i)=(a);(i)<(b);(i)++)
    #define rep(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)//宏定义,编译时展开,占用编译时间
    #define sf(x) scanf("%d",&(x))
    const int inf=(0x7f7f7f7f);
    const int maxn=10005;
    map<pair<int,int>,bool> mp;
    int c[maxn],d[maxn];
    int main(){
    	int n,p,h,m;	
    	scanf("%d%d%d%d",&n,&p,&h,&m);
    	int a,b;
    	while(m--){
    		sf(a);sf(b);
    		if(a>b)swap(a,b);
    		
    		if(mp[make_pair(a,b)])continue;
    		
    		mp[make_pair(a,b)]=true;
    		d[a+1]--;d[b]++;
    	}
    	fo(i,1,n+1){
    		c[i]=c[i-1]+d[i];
    		cout<<c[i]+h<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    CSS团队协作规范
    百度前端学院-基础学院-第四课
    百度前端学院-基础学院-第三课
    百度前端学院-基础学院-第二课
    vue(三)-父子组件通信
    setTimeout()与clearTimeout()
    vue(二)-父子组件语法
    vue(一)使用vue-cli搭建项目
    CSS table-layout 属性
    git学习
  • 原文地址:https://www.cnblogs.com/sstealer/p/11129376.html
Copyright © 2011-2022 走看看