Atcoder练习场インタラクティブ練習 (Interactive Sorting)

题目链接

第一个点

       冒泡排序解决

第二个点

       插入排序+二分优化+预处理球之间关系

第三个点

       思维???

       不太好讲,模拟一下比较好想,

       构造一个s[0]

       容易看出四个位置,两次判断即可,

       

       再说构造,首先构造s[0]

       然后对于s[4],判断他的位置,( 相对于 s[0],s[1],s[3]  ),

       这样,用掉两个判断将s[4]放好,就构造好了

       总共用掉 2 + 3 + 2 = 7 次判断

 

#include
using namespace std;
typedef long long ll;
char s[30],op[10];
int cmp[30][30],n,q;///a>b
int Cmp(int a,int b){
    a -= 'A',b-='A';
    if(cmp[a][b]!=-1)
        return cmp[a][b];
    printf("? %c %c\n",a+'A',b+'A');
    fflush(stdout);
    scanf("%s",op);
    if(op[0]=='<')
        cmp[a][b] = 0,cmp[b][a] = 1;
    else
        cmp[a][b] = 1,cmp[b][a] = 0;
    return cmp[a][b];
}
void init(){
    for(int i=0;i>1;
            if(Cmp(s[mid],a))
                r = mid-1;
            else
                l = mid+1;
        }
        for(int j=i;j>l;j--)
            s[j] = s[j-1];
        s[l] = a;
    }
}
void insert(char p){
    if(Cmp(p,s[1])){
        if(Cmp(p,s[2])){
            s[3] = p;
        }else{
            s[3] = s[2],s[2] = p;
        }
    }else{
        if(Cmp(p,s[0])){
            s[3] = s[2], s[2] = s[1], s[1] = p;
        }else{
            s[3] = s[2], s[2] = s[1], s[1] = s[0], s[0] = p;
        }
    }
}
void sovl2(){
    if(Cmp(s[0],s[1]))swap(s[0],s[1]);
    if(Cmp(s[2],s[3]))swap(s[2],s[3]);
    if(Cmp(s[1],s[3]))swap(s[0],s[2]),swap(s[1],s[3]);
    char p = s[2];
    if(Cmp(s[4],s[1])){
        if(Cmp(s[4],s[3])){
            s[2] = s[3];
            insert(p);
        }else{
            s[2] = s[4], s[4] = s[3];
            insert(p);
        }
    }else{
        if(Cmp(s[4],s[0])){
            s[2] = s[1], s[1] = s[4], s[4] = s[3];
            insert(p);
        }else{
            s[2] = s[1], s[1] = s[0], s[0] = s[4], s[4] = s[3];
            insert(p);
        }
    }
}
int main(){
    memset(cmp,-1,sizeof(cmp));
    cin>>n>>q;
    init();
    if(n == 26)
        sovl1();
    else
        sovl2();
    printf("! %s\n",s);
    fflush(stdout);
    return 0;
}

 

 

 

你可能感兴趣的:(Atcoder练习场インタラクティブ練習 (Interactive Sorting))