一、 拼最大整数

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

string a[20000];
int cmp(string x,string y){
	return x+y>y+x;
}
int main(void){
	int n;
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n,cmp);
	for(int i=0;i<n;i++) cout<<a[i];
	return 0;
}

二、删数问题(Noip1994)

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

int main(){
	string s;
	int n,l;
	cin>>s>>n;
	l=s.size();
	for(int i=0;i<l&&n;){
		if(s[i]<=s[i+1]) i++;
		else {
			s.erase(i--,1);
			if(i<0) i=0;
			l--;
			n--;
		}		
	}
	while(s[0]=='0') s.erase(0,1);
	cout<<s;
	return 0;
}

三、独木舟

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

int w,n,t[30005],ans=0;
int main(void){
	cin>>w>>n;
	for(int i=1;i<=n;i++) cin>>t[i];
	sort(t+1,t+1+n);
	int l=1,r=n;
	while(l<=r){
		if(t[l]+t[r]<=w){
			ans++;
			l++;
			r--;
		}else{
			ans++;
			r--;
		}
	}
	cout<<ans<<endl;
	return 0;
}

四、 [NOIP2016 提高组] 玩具谜题

#include<bits/stdc++.h>
using namespace std;
struct node{
	int a;
	string name;
};
node a[100005];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>a[i].a>>a[i].name;
	}
	int u,v,t=0;
	while(m--){
		cin>>u>>v;
		if(a[t].a+u==1){
			t+=v;
			while(t>=n) t-=n;
		}else{
			t-=v;
			while(t<0) t+=n;
		}
	}
	cout<<a[t].name<<endl;
	return 0;
}

1 comments

  • 1