zoukankan      html  css  js  c++  java
  • usaco /the second wave

    bzoj4582:简单递推题。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define REP(i,s,t) for(int i=s;i<=t;i++)
    int read(){
    	int x=0;char c=getchar();
    	while(!isdigit(c)) c=getchar();
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return x;
    }
    const int nmax=50005;
    int a[nmax],rmax[nmax],res[nmax];
    int main(){
    	int n=read(),k=read();
    	REP(i,1,n) a[i]=read();
    	sort(a+1,a+n+1);
    	REP(i,1,n){
    		int tmp=i;
    		while(a[tmp]-a[i]<=k&&tmp<=n) tmp++;
    		rmax[i]=tmp-i;
    	}
    	for(int i=n;i;i--) res[i]=max(res[i+1],rmax[i]);
    	int ans=-1;
    	REP(i,1,n) ans=max(ans,rmax[i]+res[i+rmax[i]]);
    	printf("%d
    ",ans);
    	return 0;
    }
    

    bzoj4525:二分答案+贪心判断。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define REP(i,s,t) for(int i=s;i<=t;i++)
    #define clr(x,c) memset(x,c,sizeof(x))
    const int nmax=50005;
    int a[nmax],n,m;
    int read(){
    	int x=0;char c=getchar();bool f=true;
    	while(!isdigit(c)){
    		if(c=='-') f=false;c=getchar();
    	}
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return f?x:-x;
    }
    bool check(int x){
    	int ans=0;
    	REP(i,1,n){
    		int temp=a[i];
    		while(a[i]-temp<=x*2&&i<=n) i++;
    		i--;
    		ans++;
    	}
    	if(ans<=m) return true;
    	return false;
    }
    int main(){
    	n=read(),m=read();
    	REP(i,1,n) a[i]=read();
    	sort(a+1,a+n+1);
    	int l=0,r=1000000000,mid,ans;
    	while(l<=r){
    		mid=(l+r)>>1;
    		if(check(mid)) ans=mid,r=mid-1;
    		else l=mid+1;
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

    bzoj4511:模拟。。。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    int x;char c;
    int read(){
    	x=0;c=getchar();
    	while(!isdigit(c)) c=getchar();
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return x;
    }
    int a[7],n,tmp,sum=0,ans=0;
    int main(){
    	memset(a,-1,sizeof(a));
    	a[0]=0;
    	n=read();
    	for(int i=1;i<=n;i++){
    		tmp=read();
    		sum+=tmp,sum%=7;
    		if(a[sum]!=-1) ans=max(ans,i-a[sum]);
    		else a[sum]=i;
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

    bzoj4397:模拟。。。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define REP(i,s,t) for(int i=1;i<=t;i++)
    int read(){
    	int x=0;char c=getchar();
    	while(!isdigit(c)) c=getchar();
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return x;
    }
    const int nmax=100005;
    int a[nmax],b[nmax],c[nmax];
    int main(){
    	int n=read(),m=read();
    	REP(i,1,n) {
    		a[i]=a[i-1],b[i]=b[i-1],c[i]=c[i-1];
    		int tmp=read();
    		if(tmp==1) a[i]++;
    		else if(tmp==2) b[i]++;
    		else c[i]++;
    	}
    	REP(i,1,m){
    		int s=read(),t=read();
    		printf("%d %d %d
    ",a[t]-a[s-1],b[t]-b[s-1],c[t]-c[s-1]);
    	}
    	return 0;
    }
    

    bzoj4396:简单递推题。。。

    #include<cstdio>
    #include<iostream>
    using namespace std;
    const int nmax=100005;
    bool vis[nmax];
    int read(){
    	int x=0;char c=getchar();
    	while(!isdigit(c)) c=getchar();
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return x;
    }
    int main(){
    	int n=read();
    	for(int i=1;i<=n;i++) vis[read()]=true;
    	n+=n;
    	int l=1,ans=0;
    	for(int i=1;i<=n;i++) if(!vis[i]){
    		while(!vis[l]) l++;
    		if(l<i) l++,ans++;
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

      

  • 相关阅读:
    rsyslog服务日志收集配置
    Python urllib2 发送HTTP Request
    Jenkins版本回滚
    C++算法的40个高频面试问题集锦
    Linux添加自启动daemon service
    python爬虫随机设备信息生成模板
    selenium配置有账号密码验证的代理
    app脱壳后多个dex合并成一个
    webpack优化系列-多进程打包thread-loader
    AtCoder abc158_f
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5715801.html
Copyright © 2011-2022 走看看