洛谷P2879

一不小心点开的题。。。。看了半天发现是个水题。。。

 

不多讲了倒是很有意思

一排牛最高的知道了,最低的知道了,知道那两头牛之间可以相互之间看见,求可能身高。。。(最低的根本没用)

a b 之间的肯定比 a b 低,那么都比最高值 -1 ,如果暴力可能能过,但是不够好,前缀和搞定。

 

 

 

 

 

 

 

以下AC 代码。。。有重复部分,用 map 判重 搞定。。。

 

 

 

#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
using namespace std;
const int maxn = 1e5+6;
int num[maxn];
map<pair<int, int>, bool > vis;
int main()
{
    int n,l,h,r;
    scanf("%d%d%d%d",&n,&l,&h,&r);
    memset(num,0,sizeof num);
    for(int i=1;i<=r;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        if(x>y)
            swap(x,y);
        if(!vis[make_pair(x,y)])
        {
            num[x+1]--;   
            num[y]++;    
            vis[make_pair(x,y)]=true;
        }
    }
    for(int i=1;i<=n;i++)
    {
        num[i] += num[i-1];
        printf("%d\n",h+num[i]);
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值