题意就是判断东天际线和北天际线的值可不可以满足(东天际线就是每一行的最大值,北天际线就是每一列的最大值)
判断条件其实很简单,就是看行上的最大值是否也是列上的最大值,如果是就满足。
例1: 东天际线最大值是4,北天际线最大值也是4,所有条件成立。
例2:东天际线最大值是4,北天际线最大值是2,所有不满足。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int r,c;
int a[1001],b[1001];
cin>>r>>c;
for(int i=0;i<r;i++){
cin>>a[i];
}
for(int i=0;i<c;i++){
cin>>b[i];
}
sort(a,a+r);
sort(b,b+c);
if(a[r-1]==b[c-1]){
cout<<"possible"<<endl;
}
else{
cout<<"impossible"<<endl;
}
return 0;
}
题意很好懂就是找出有没有满足m^2-k^2=n的n,给的范围很大如果循环模拟的话肯定要超时,就要找规律。
规律:1=1^2-0^2 2 没有 3=2^2-1^2 4=2^2-0^2 5=3^2-2^2 6 没有 7=4^2-3^2……就是奇数都有m和k且m和k的和就是n并且相邻,偶数只有满足4的倍数才有4 16 64.
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
int main(){
scanf("%lld",&n);
if(n%2==0&&n%4!=0){
printf("impossible");
return 0;
}
if(n%2==0){
ll a=n/4;
printf("%lld %lld",a+1,a-1);
}
else
printf("%lld %lld",(n+1)/2,(n+1)/2-1);
return 0;
}
比赛名:Preliminaries for Benelux Algorithm Programming Contest 2019 时间2020.3.14
原文:https://www.cnblogs.com/liyongqi/p/12493802.html