zoukankan      html  css  js  c++  java
  • Codeforces 1283E New Year Parties

    题目链接:

    Codeforces 1283E New Year Parties

    思路:

    1.求最小:如果一个房子有人,那么包含它的连续三个房子至少有一个人,那么采用贪心思想,从前往后扫,如果房子有人,那么就判定连着的三个房子有一个人;
    2.求最大:一段长为n的连续有人区间,如果总人数为n+1,那么这段区间可以向左给出一个人,如果总人数大于n+1,则又可以向右给出一个人;那我们采用贪心思想,从前往后扫整个区间(注意整个区间范围),如果该房子没有人且前面房子有人,则我们将前面一个房子移一个人过来,如果当前区间有大于一个人,则往后移;

    代码:

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int maxn=2e5+5;
    int n,a[maxn];
    
    int main(){
    	scanf("%d",&n);
    	for(int i=0;i<n;i++){
    		int x; scanf("%d",&x); ++a[x];
    	}
    	int ans1=0,ans2=0;
    	for(int i=1;i<=n;i++) if(a[i]) ++ans1,i+=2;
    	for(int i=0;i<=n;i++){    //pay attention the section is [0,n+1]
    		if(a[i]==0&&a[i+1]) ++a[i],--a[i+1];
    		else if(a[i]>=2) --a[i],++a[i+1];
    	}
    	for(int i=0;i<=n+1;i++) if(a[i]) ++ans2;
    	printf("%d %d",ans1,ans2);
    	return 0;
    }
    
  • 相关阅读:
    正能量
    战略定位
    市场营销
    品牌营销
    CSS3圆角,阴影,透明
    iOS开发的22个奇谲巧技
    [设计模式] javascript 之 策略模式
    让网站和APP更具动感的几点建议
    JAVASCRIPT 之escape 介绍
    CSS2.0中最常用的18条技巧
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308704.html
Copyright © 2011-2022 走看看