Technocup 2019 - Elimination Round 1
比赛迟到了15分钟。
(A)
大水题就不说了,有1输出HARD,否则输出NO;
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
const int INF = 0x3f3f3f3f;
typedef long long ll;
ll a[maxn];
int main(){
int n,m;
cin>>n;
int flag=0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]) flag=1;
}
if(flag) puts("HARD");
else cout<<"EASY"<<endl;
return 0;
}
数学题,给你一个矩形判断某个点是否在矩形内,推出矩形的四个边的直线方程,看这个点是否满足即可,一个if就OK。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
const int INF = 0x3f3f3f3f;
typedef long long ll;
int main(){
int n,d;
int q;
cin>>n>>d>>q;
int x,y;
while(q--){
cin>>x>>y;
if(-x+d<=y&&-x+2*n-d>=y&&x-d<=y&&x+d>=y) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
模拟题,给你一个数字字符串问你这个串是否是每段连续子串和相等,由于数据范围很小,我们暴力枚举整个字符串和的因子即可。看最终能否找到。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
const int INF = 0x3f3f3f3f;
typedef long long ll;
char c[maxn];
int main(){
int n;
cin>>n>>c;
int sum=0;
for(int i=0;i<n;i++){
sum+=c[i]-'0';
}
if(sum==0){
puts("YES");
return 0;
}
int flag2=0;
for(int i=1;i<sum;i++){
if(sum%i==0){
int d=0;
int flag1=0;
for(int j=0;j<n;j++){
if(d==0||d<i){
d+=c[j]-'0';
}
if(d>i){
flag1=1;
break;
}
if(d==i){
d=0;
}
}
if(!flag1){
flag2=1;
break;
}
}
if(flag2) break;
}
if(flag2) puts("YES");
else puts("NO");
return 0;
}