首页 > 其他 > 详细

比赛名:Preliminaries for Benelux Algorithm Programming Contest 2019 时间2020.3.14

时间:2020-03-14 21:14:20      阅读:83      评论:0      收藏:0      [点我收藏+]

 

 

技术分享图片

 技术分享图片

 

题意就是判断东天际线和北天际线的值可不可以满足(东天际线就是每一行的最大值,北天际线就是每一列的最大值)

判断条件其实很简单,就是看行上的最大值是否也是列上的最大值,如果是就满足。

 例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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!