xjoi奋斗群群赛10

群赛地址:

https://vjudge.net/contest/185399#problem

(缺后三题)

A - 初出茅庐

  CodeForces - 845A 

题意:给出2*n个数,要把他们分成长度为n的两队,使一队的数比另一队都小.

题解:

#include<bits/stdc++.h>
using namespace std;
int n,a[1100];
int main(){
	cin>>n;
	n*=2;
	for(int i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+1+n);
	if(a[n/2]==a[n/2+1])cout<<"NO";
	else cout<<"YES";
}

B - 崭露头角

  CodeForces - 845B 

题意:给出一个六个数字的字符串,每次修改可以把一个字符改成任意一个数字,求使左边三个字符和右边三个字符和相等的最小操作次数.

题解:

#include<bits/stdc++.h>
using namespace std;
int main(){
	char a[6];
	int sum1=0,sum2=0,lb,ls,rb,rs,k;
	scanf("%s",a);
	for(int i=0;i<6;i++)a[i]-=48;
	sum1=a[0]+a[1]+a[2];
	sum2=a[3]+a[4]+a[5];
	for(k=0;sum1!=sum2;k++){
		lb=ls=0;rb=rs=3;
		for(int j=0;j<3;j++){
			if(a[j]>a[lb])lb=j;
			if(a[j]<a[ls])ls=j;
		}
		for(int j=3;j<6;j++){
			if(a[j]>a[rb])rb=j;
			if(a[j]<a[rs])rs=j;
		}
		if(sum1<sum2){
			if(9-a[ls]>a[rb]){
				int t=min(sum2-sum1,9-a[ls]);
				sum1+=t;
				a[ls]+=t;
			}
			else{
				int t=min(sum2-sum1,(int)a[rb]);
				sum2-=t;
				a[rb]-=t;
			}
		}
		else{
			if(a[lb]>9-a[rs]){
				int t=min(sum1-sum2,(int)a[lb]);
				sum1-=t;
				a[lb]-=t;
			}
			else{
				int t=min(sum1-sum2,9-a[rs]);
				sum2+=t;
				a[rs]+=t;
			}
		}
	}
	cout<<k;
}

C - 渐入佳境

  CodeForces - 845C 

题意:某人有两台电视,他有一些节目要看,一台电视在一个时间只能播放一个节目.给出节目的开始与结束时间,问他能否看所有节目.

题解:

#include<bits/stdc++.h>
using namespace std;
int p1=-1,p2=-1,n;
struct point{
	int l,r;
}a[200010];
bool cmp(const point &a,const point &b){
	return a.r<b.r;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)scanf("%d%d",&a[i].l,&a[i].r);
	sort(a+1,a+1+n,cmp);
	int i;
	for(i=1;i<=n;i++){
		if(p1>p2){
			if(p1<a[i].l)p1=a[i].r;
			else{
				if(p2<a[i].l)p2=a[i].r;
				else break;
			}
		}
		else{
			if(p2<a[i].l)p2=a[i].r;
			else{
				if(p1<a[i].l)p1=a[i].r;
				else break;
			}
		}
			
		
	}
	if(i==n+1)printf("YES");
	else puts("NO");
}


D - 炉火纯青

  CodeForces - 845D 

题意:某人在开车,路上会遇到各种路标:有限速,取消限速,禁止超车,允许超车.他也会改变车速和超车.求使他不违反交规的最少忽视路标次数.

题解:

#include<bits/stdc++.h>
using namespace std;
int n,type,s,sumover,speed,ans;
stack<int>sumspd;
int main(){
	scanf("%d",&n);
	while(n--){
		scanf("%d",&type);
		switch(type){
			case 1:{
				scanf("%d",&speed);
				while(!sumspd.empty()&&sumspd.top()<speed){
					sumspd.pop();ans++;
				}
				break;
			}
			case 3:{
				scanf("%d",&s);
				sumspd.push(s);
				while(!sumspd.empty()&&sumspd.top()<speed){
					sumspd.pop();ans++;
				}
				break;
			}
			case 5:while(!sumspd.empty())sumspd.pop();break;
			case 2:ans+=sumover;sumover=0;break;
			case 4:sumover=0;break;
			case 6:sumover++;break;
		}
	}
	printf("%d",ans);
}

E - 登峰造极

  CodeForces - 845E 


F - 事了拂衣去

  CodeForces - 845F 


G - 深藏功与名    

CodeForces - 845G 




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值