本人实力有限,做题范围可能A-D,有错误之处还请指正,不喜勿喷
A

vp,本来想着是计算几何(做多了,看到坐标就emmmm),想了20分钟,觉得很复杂啊!看了下榜单6000人过了,就知道是想复杂了
暴力枚举坐标上每个点判断符不符合条件
1 #include<iostream> 2 #include<string> 3 #include<cmath> 4 #include<math.h> 5 #include<algorithm> 6 using namespace std; 7 8 void solve() 9 { 10 int bx,by,dab; 11 cin>>bx>>by; 12 dab=bx+by; 13 if(bx==0&&by==0) 14 { 15 cout<<"0 0"<<endl; 16 return; 17 } 18 for(int x=0;x<=50;x++) 19 { 20 for(int y=0;y<=50;y++) 21 { 22 if(x+y==dab/2&&fabs(x-bx)+fabs(y-by)==dab/2) 23 { 24 cout<<x<<" "<<y<<endl; 25 return; 26 } 27 } 28 } 29 cout<<"-1 -1"<<endl; 30 return; 31 } 32 int main() 33 { 34 ios::sync_with_stdio(false); 35 cin.tie(nullptr), cout.tie(nullptr); 36 int t; 37 cin>>t; 38 while(t--) 39 { 40 solve(); 41 } 42 return 0; 43 }
---------------------------------------------------------------------------
B

vp的时候看好多人过了,瞬间就轻松,感觉不会太难。
因为a要是序列左半部分最小,b要是序列右半部分最大
左半部分求法,从大到小枚举
满足:
(1)不是a或b;
(2)左半部分剩下格子不小于1个
就将i加入左半部分aa,用个p数组标记已经用过。循环结束后再单独将a加入左半部分aa
右半部分求法,从大到小枚举
满足:
(1)不是a或b;
(2)右半部分剩下格子不小于1个 ;
(3)未被用过;
就将i加入右半部分bb,循环结束后再单独将b加入右半部分bb
分别遍历aa和bb,比大小判断是否满足条件
输出结果
1 #include<iostream> 2 #include<string> 3 #include<cmath> 4 #include<math.h> 5 #include<algorithm> 6 #include<cstring> 7 using namespace std; 8 9 void solve() 10 { 11 int n,a,b,p[110],flag=1; 12 cin>>n>>a>>b; 13 int aa[n/2+1],bb[n/2+1]; 14 for(int i=1;i<=n;i++) p[i]=i; 15 for(int i=n;i>=1;i--) 16 { 17 if(i==a||i==b||flag>(n/2-1)) continue; 18 aa[flag++]=i; 19 p[i]=0; 20 } 21 aa[flag]=a; 22 flag=1; 23 for(int i=1;i<=n;i++) 24 { 25 if(i==a||i==b||flag>(n/2-1)) continue; 26 if(p[i]!=0) 27 { 28 bb[flag++]=i; 29 } 30 } 31 bb[flag++]=b; 32 int k=0; 33 for(int i=1;i<=n/2;i++) 34 { 35 if(aa[i]<a) 36 k=1; 37 } 38 for(int i=1;i<=n/2;i++) 39 { 40 if(bb[i]>b) 41 k=1; 42 } 43 44 if(k==1) 45 { 46 cout<<-1<<endl; 47 return; 48 } 49 for(int i=1;i<=n/2;i++) 50 { 51 cout<<aa[i]<<" "; 52 } 53 for(int i=1;i<=n/2;i++) 54 { 55 cout<<bb[i]<<" "; 56 } 57 cout<<endl; 58 return; 59 } 60 int main() 61 { 62 ios::sync_with_stdio(false); 63 cin.tie(nullptr), cout.tie(nullptr); 64 int t; 65 cin>>t; 66 while(t--) 67 { 68 solve(); 69 } 70 return 0; 71 }
本文来自博客园,作者:magicat,转载请注明原文链接:https://www.cnblogs.com/magicat/p/15605008.html
浙公网安备 33010602011771号