提纲
A 老子的全排列呢
使用了next_permutation
【用法总结】C++ STL中 next_permutation函数的用法
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int a[8];
for(int i=0;i<8;i++){
a[i]=i+1;
}
do{
for(int i=0;i<8;i++){
printf("%d ",a[i]);
}
printf("\n");
}while(next_permutation(a,a+8));
return 0;
}
B 装进肚子
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef struct node{
int a;
int b;
}NUM;
bool cmp(NUM t,NUM y){
return t.a-t.b>y.a-y.b;
}
int main(){
NUM p[100005];
int n,k;
long long ans=0;
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>p[i].a;
}
for(int i=0;i<n;i++){
cin>>p[i].b;
}
sort(p,p+n,cmp);
for(int i=0;i<k;i++){
ans+=p[i].a;
}
for(int i=k;i<n;i++){
ans+=p[i].b;
}
cout<<ans<<endl;
return 0;
}
C 牛牛的三角形
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,flag=0;
cin>>n;
vector<int> a;
for(int i=0;i<n;i++){
int e;
cin>>e;
a.push_back(e);
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if(i!=j&&j!=k&&k!=i){
if(a[i]+a[j]>a[k]&&abs(a[i]-a[j])<a[k]){
flag=1;
cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<endl;
break;
}
}
}
if(flag) break;
}
if(flag) break;
}
if(!flag) cout<<"No solution\n";
return 0;
}
#include<bits/stdc++.h>
using namespace std;
bool cmp(string a,string b){
return a+b>b+a;
}
int main(){
string s[25];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i];
}
sort(s,s+n,cmp);
for(int i=0;i<n;i++){
cout<<s[i];
}
cout<<endl;
return 0;
}
E 好串 *
#include<bits/stdc++.h>
using namespace std;
int main(){
string s; int a(0),b(0);
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]=='a') a++;
else b++;
if(a>0&&b>0){
a--;
b--;
}
if(b>a){
cout<<"Bad\n";
return 0;
}
}
if(a>0||b>0) cout<<"Bad\n";
else cout<<"Good\n";
return 0;
}
F Rails
G 栈和排序