过河的最短时间
#include<bits/stdc++.h>
using namespace std;
void f(int);
int n;
int main()
{
system("color 1");
cin>>n;
int a[10010];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a+0,a+n);
int t=a[1];
int k1=n-2;
int k2=n-1;
while(true){
int t1=a[0]+a[k2]+a[1]+a[1];
int t2=a[0]+a[k2]+a[0]+a[k1];
if(t1>t2) t=t+k2;
else t=t+k1;
k1=k1-2;
k2=k2-2;
if(k1==0||k1==1) break;
}
if(k1==3) t=t+a[0]+a[3];
cout<<t;
return 0;
}
void f(int n){
return;
}
特殊密码锁
#include<bits/stdc++.h>
using namespace std;
void f(bool,int);
int n;
int main()
{
system("color 1");
cin>>n;
bool f1=true;
bool f2=true;
bool a1[100],b[100],a2[100];
int c[100];
string x1,x2;
cin>>x1>>x2;
int len=x1.size();
for(int i=0;i<len;i++){
a1[i]=x1[i]-48;
a2[i]=x1[i]-48;
b[i]=x2[i]-48;
}
int cnt1=0;
for(int i=0;i<len;i++){
if(b[i]!=a1[i]){
f(a1,i+1);
cnt1++;
}
}
if(a2[len-1]!=b[len-1]) f1=false;
int cnt2=0;
if(a2[0]==b[0]){
f(a2,1);
cnt2++;
}
if(a2[1]==b[1]){
f(a2,2);
cnt2++;
}
for(int i=2;i<len-1;i++){
if(b[i]!=a1[i]){
f(a2,i+1);
cnt2++;
}
}
if(a2[len-1]==b[len-1]) cnt2++;
else f2=false;
if(f1==false&&f2==false) cout<<"impossible";
else{
cout<<min(cnt1,cnt2);
}
return 0;
}
void f(bool s[],int i){
s[i]=!s[i];
s[i-1]=!s[i-1];
s[i+1]=!s[i+1];
return;
}
接水问题
#include<bits/stdc++.h>
using namespace std;
void f(int);
int n;
int main()
{
system("color 1");
int m;
cin>>n>>m;
int a[100];
for(int i=0;i<n;i++){
cin>>a[i];
}
int sum=0;
sort(a+0,a+n);
int b[n+1];
for(int i=0;i<n;i++){
b[i]=a[n-1-i];
}
int c[m+1];//存b的0-m项
for(int i=0;i<m;i++){
sum=sum+b[i];
sum=sum+b[i+m];
}
cout<<sum;
return 0;
}
void f(int n){
return;
}