Educational Codeforces Round 117 (Rated for Div. 2)A-B
本人实力有限,做题范围可能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 }