Codeforces Round #587 (Div. 3):点击进入新世界
原题链接:http://codeforces.com/contest/1216/problem/A
思路:
#include
#include
#include
using namespace std;
const int manx=2e6+5;
char c[manx];
int a=0,b=0,ans=0;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>c[i];
if(c[i]=='a') a++;
else if(c[i]=='b') b++;
if(i%2==0){
if(a==b) continue;
else if(a>b) c[i]='b',a=0,b=0,ans++;
else if(a<b) c[i]='a',a=0,b=0,ans++;
}
}
cout<<ans<<endl;
for(int i=1;i<=n;i++)
cout<<c[i];
return 0;
}
原题链接:http://codeforces.com/contest/1216/problem/B
思路:
AC代码如下:
#include
#include
#include
using namespace std;
const int manx=3e5+5;
struct node{
int nums,w;
}a[manx];
bool cmp(node a, node b)
{
if(a.w!=b.w)
return a.w>b.w;
else return a.nums<b.nums;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
a[i].nums=i;
scanf("%d",&a[i].w);
}
sort(a+1,a+1+n,cmp);
int ans=1;
for(int i=2;i<=n;i++)
ans+=a[i].w*(i-1)+1;
cout<<ans<<endl;
for(int i=1;i<=n;i++) cout<<a[i].nums<<" ";
return 0;
}
原题链接:http://codeforces.com/contest/1216/problem/C
思路:
AC代码如下:
#include
#include
using namespace std;
const int manx=1e6+5;
int a[manx],b[manx];
int main()
{
int a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c4,c3,flag=1;
cin>>a1>>a2>>a3>>a4;
cin>>b1>>b2>>b3>>b4;
cin>>c1>>c2>>c3>>c4;
if(b1<=a1&&b2<=a2&&b3>=a3&&b4>=a4)
flag=0;
else {
if(b1<=a1&&b2<=a2&&b3>=a3) a2=max(a2,b4);
if(b1<=a1&&b3>=a3&&b4>=a4) a4=min(a4,b2);
if(b1<=a1&&b2<=a2&&b4>=a4) a1=max(a1,b3);
if(b3>=a3&&b2<=a2&&b4>=a4) a3=min(a3,b1);
}
if(c1<=a1&&c2<=a2&&c3>=a3&&c4>=a4)
flag=0;
if(flag) printf("YES");
else printf("NO");
return 0;
}
原题链接:http://codeforces.com/contest/1216/problem/D
思路:
AC代码如下:
#include
#include
#include
using namespace std;
const int manx=2e5+5;
typedef long long ll;
ll a[manx];
ll s=0,z=0,y,ans;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]),ans=max(ans,a[i]);
for(int i=1;i<=n;i++)
{
s+=ans-a[i];
z=__gcd(z,ans-a[i]);
}
cout<<s/z<<" "<<z;
return 0;
}
第一次打CF,掉了82分,菜…
留着坑,最近有点忙,来不及补题,等国庆补?
待续。