Codeforces Round 1024 (Div. 2)
A - Dinner 时间
只要不是正好n是q的整数倍,但和的倍数不对,都可以凑出来
B. The Picky Cat
可以先全变成正的,看某一个能取到的排名
|a0| |a0| |a0| |ai| |a1| |a1|
向后移动,都能取到,把后面的变成-的,就向后一位
向前移动,得让它变成-的,后面一个变成-的,就从1向后一位,但|a0|这些始终在它后面
所以向后排名能在[现在cnt0+1,n]
向前[1,cnt1+1]
#include<iostream>
using namespace std;
int n;
int a[100010];
int main(){
int T;cin>>T;
while(T--){
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
int cnt0=0;int cnt1=0;
for(int i=2;i<=n;i++){
if(abs(a[i])<abs(a[1]))cnt0++;
else if(abs(a[i])>abs(a[1]))cnt1++;
}
int l1=cnt0+1;int r1=n;int l2=1;int r2=cnt1+1;
int t=(n+1)/2;
if(l1<=t&&t<=r1)printf("YES\n");
else if(l2<=t&&t<=r2)printf("YES\n");
else printf("NO\n");
}
}
C. Mex in the Grid
guess是螺旋形,用L,D,R,U写
#include<iostream>
using namespace std;
int n;
int a[510][510];
int main(){
int T;cin>>T;
while(T--){
cin>>n;
int now=n*n;
int L=1,R=n,U=1,D=n;
while(1){
if(L>R)break;
if(n&1&&L==R)a[U][L]=0;
for(int i=L;i<=R-1;i++)a[U][i]=--now;
for(int i=U;i<=D-1;i++)a[i][R]=--now;
for(int i=R;i>=L+1;i--)a[D][i]=--now;
for(int i=D;i>=U+1;i--)a[i][L]=--now;
L++;R--;U++;D--;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%d ",a[i][j]);
}printf("\n");
}
}
}

浙公网安备 33010602011771号