cf 1060d 思维贪心

Posted wjhstudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf 1060d 思维贪心相关的知识,希望对你有一定的参考价值。

题意:有N个人,你要让他们坐成若干个圆环。

  他们每个人需要坐一把椅子,左手边至少要有l个空椅子,右手边至少要有r个空椅子

  ,问最少需要多少个椅子。

参考:https://blog.csdn.net/zxyoi_dreamer/article/details/82941006

思路 :贪心

左走最大的那个人,他左边不可能有小于限制那么多的凳子,那么我们选择右走最大的那个人,使得他们左右重叠。这样的答案显然是最优的,如果这样贪心,我们总能够找出一个方案,交换两个位置,使它更优

 

#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(v) v.begin(),v.end()

const int N = 1e5+4;
const int INF =1E9+4;
const ll mod =1e9+7;

ll powmod(ll x,ll n){
    ll res=1;while(n){if(n&1) res = res*x%mod; x=x*x%mod;n/=2;}return res;
}
ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}

ll l[N],r[N];


int main(){
    int n;

    cin>>n;

    for(int i=1;i<=n;++i){
        scanf("%lld %lld",&l[i],&r[i]);
    }
    sort(l+1,l+1+n);
    sort(r+1,r+1+n);

        ll ans = n;

    for(int i=1;i<=n;++i)
        ans+=max(l[i],r[i]);

    cout<<ans<<endl;

    return 0;
}

 

以上是关于cf 1060d 思维贪心的主要内容,如果未能解决你的问题,请参考以下文章

[贪心] aw3774. 亮灯时长(思维+后缀和+代码细节+CF1000B)

思维+贪心+dp——cf1341D

Covered Points Count CF1000C 思维 前缀和 贪心

cf1277D——思维贪心+字符串

第四届齐鲁校赛+二分思维+cf

Codeforces Round #619 (Div. 2)/CF1301 思维+贪心+模拟+构造+二维ST表