A——Find K Distinct Points with Fixed Center
n为偶数输出 ( x − 1 , y − 1 ) , ( x + 1 , y + 1 ) , . . . , ( x − n / 2 , y − n / 2 ) , ( x + n / 2 , y + n / 2 ) (x-1,y-1),(x+1,y+1),...,(x-n/2,y-n/2),(x+n/2,y+n/2) (x−1,y−1),(x+1,y+1),...,(x−n/2,y−n/2),(x+n/2,y+n/2)
n为奇数输出 ( x , y ) , ( x − 1 , y − 1 ) , ( x + 1 , y + 1 ) , . . . , ( x − n / 2 , y − n / 2 ) , ( x + n / 2 , y + n / 2 ) (x,y),(x-1,y-1),(x+1,y+1),...,(x-n/2,y-n/2),(x+n/2,y+n/2) (x,y),(x−1,y−1),(x+1,y+1),...,(x−n/2,y−n/2),(x+n/2,y+n/2)
#include<bits/stdc++.h>
using namespace std;
void solve()
{
int x,y,k;
cin>>x>>y>>k;
if(k%2)
{
cout<<x<<' '<<y<<'\n';
for(int i=1;i<=(k-1)/2;i++)
{
cout<<x+i<<' '<<y+i<<'\n';
cout<<x-i<<' '<<y-i<<'\n';
}
}
else
{
for(int i=1;i<=k/2;i++)
{
cout<<x+i<<' '<<y+i<<'\n';
cout<<x-i<<' '<<y-i<<'\n';
}
}
}
int main()
{
int t;
cin>>t;
while(t--) solve();
return 0;
}
B——Minimize Equal Sum Subarrays
使原数组的每个数取余n,然后再加1,即 p n e w [ i ] = p [ i ] % m + 1 pnew[i]=p[i]\%m+1 pnew[i]=p[i]%m+1
这样不包含n的每个长度为 l e n len len的区间都比原数组区间大 l e n len len,包含n的每个长度为 l e n len len的区间比原数组区间与原数组相差 ∣ l e n − 1 − n − 1 ∣ |len-1-n-1| ∣len−1−n−1∣ ( n n n减少了 n − 1 n-1 n−1,除了 n n n以外每个数比原来大 1 1 1)
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int p[N],q[N];
void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>p[i];
}
for(int i=1;i<=n;i++)
{
q[i]=p[i]%n+1;
cout<<q[i]<<' ';
}
cout<<'\n';
}
int main()
{
int t;
cin>>t;
while(t--) solve();
return 0;
}
C——Perform Operations to Maximize Score
首先先排序,分析可知最大值只能由两种情况更新过来
1.当前位置可加, a n s = max