原来是农历新年专场,但是CF卡的不行。。。始终无法log in。
只能看题目假装自己在OJ。又是八点半的场次。。忘记了时间。
粗略写了两题,今天早上交了AC。
A. Lunar New Year and Cross Counting
题目大意:
简单的字符查找,找一个图案。直接暴力,本来以为会卡时间,但是也过了。
#include <iostream>
using namespace std;
int n;
int ans;
char a[505][505];
int main() {
cin>>n;
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
cin>>a[i][j];
}
}
ans=0;
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
if(a[i][j]==a[i-1][j-1]&&a[i-1][j-1]==a[i-1][j+1]&&a[i-1][j+1]==a[i+1][j-1]&&a[i+1][j-1]==a[i+1][j+1]&&a[i][j]=='X') {
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
C. Lunar New Year and Number Division
题目大意
看着难。其实很简单。题目是求整个数组两两分组后各组平方和的最小值。
思索可知,当然是最大与最小,次大与次小 依次搭配。。
Sort后可直接二分搭配,最后计算结果即可。
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int a[300005];
int num[150010];
long long sum;
int main() {
cin>>n;
for(int i=1;i<=n;i++) {
cin>>a[i];
}
sort(a,a+n+1);
sum = 0;
if(n%2==0) {
for(int i=1;i<=n/2;i++) {
num[i]=a[i] + a[n+1-i];
sum+=num[i]*num[i];
}
}
else {
for(int i=1;i<=n/2;i++) {
num[i] = a[i] +a[n-i+1];
sum+=num[i]*num[i];
}sum +=a[(n+1)/2]*a[(n+1)/2];
}
cout<<sum<<endl;
return 0;
}
剩余待补。