A1037
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int nc,np;
int p=0,q=0,ans=0;
scanf("%d",&nc);
vector<int> v1(nc);
for(int i=0;i<nc;i++)
{
scanf("%d",&v1[i]);
}
scanf("%d",&np);
vector<int> v2(np);
for(int i=0;i<np;i++)
{
scanf("%d",&v2[i]);
}
sort(v1.begin(),v1.end());//默认从小到大排序
sort(v2.begin(),v2.end());
while(p<nc&&q<np&&v1[p]<0&&v2[q]<0)
{
ans+=v1[p]*v2[q];
p++;q++;
}
p=nc-1;q=np-1;
while(p>=0&&q>=0&&v1[p]>=0&&v2[q]>=0)
{
ans+=v1[p]*v2[q];
p--;q--;
}
printf("%d",ans);
return 0;
}
A1067
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
int a[100001];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&m);//都是从0开始的
a[m]=i;//m存放数字,i存放每一个数字的位置
}
int cnt=0;
for(int i=1;i<n;i++)
{
if(i!=a[i])
{
while(a[0]!=0)
{
swap(a[0],a[a[0]]);
cnt++;
}
if(i!=a[i])
{
swap(a[0],a[i]);
cnt++;
}
}
}
printf("%d",cnt);
return 0;
}
A1038柳神
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool cmp(string a,string b)
{
return a+b<b+a;
}
string str[10001];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
cin>>str[i];
}
sort(str,str+n,cmp);
string s;
for(int i=0;i<n;i++)
{
s+=str[i];
}
while(s[0]=='0'&&s.length()!=0)
{
s.erase(s.begin());
}
if(s.length()==0) cout<<0;
cout<<s;
return 0;
}