ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cf1705 F. Mark and the Online Exam

2022-07-17 15:10:20  阅读:195  来源: 互联网

标签:q1 tmp q3 q2 q4 正解 Online cf1705 Exam


题意:

交互题。

猜 n 道判断题的答案。每次可询问一个长为 n 的T/F串,回答答对的题数

\(n\le 1000,\) 询问次数限制 \(675\)

思路:

先猜复杂度:\(\frac 23 n\) 左右

以下除法都是下取整。记 \(m=n/3\),

  1. 询问一个全 T 串,回答记为 \(q1\)

  2. 询问 \(n/3\) 次,第 \(i\) 次问一个除了第 \(i,i+m\) 两位为 F,其他位均为 T 的串。回答记为 \(q2_i\),那么有这几种情况:

  • \(q1=q2_i+2\),说明正解为 \(s_{i}=s_{i+m}=T\)
  • \(q1=q2_i-2\),说明正解为 \(s_{i}=s_{i+m}=F\)
  • \(q1=q2_i\),说明正解是 TF/FT,但没法确定
  1. 询问一个前 \(1/3\) 为 F,其他为 T 的串(记为str),回答记为 \(q3\)

  2. 对第2步没法确定的位置 \(i(i\le m)\) 询问最多 \(n/3\) 次,第 \(i\) 次问一个第 \(i\) 位为 T、第 \(i+m\) 位为 F、第 \(i+2m\) 位为 F,其他位与 str 相同的串。回答记为 \(ans4_i\),那么有这几种情况:

  • \(q3=q4_i+3\),说明正解为 \(s_i=F,s_{i+m}=T,s_{i+2m}=T\)
  • \(q3=q4_i+1\),说明正解为 F,T,F
  • \(q3=q4_i-1\),说明正解为 T,F,T
  • \(q3=q4_i-3\),说明正解为 T,F,F
  1. 把剩下未确定的都单独问一下。4,5 两步加起来也是 \(n/3\) 级别
const signed N = 5 + 1000;
int n, m, q1, q2, q3, q4, q5;

void sol() {
    cin >> n; m = n / 3;

    string s(n,0), str, tmp; //答案串及用于询问的串
    //q1
    str = string(n,'T'); cout << str << endl; cin >> q1;
    //q2
    for(int i = 0; i < m; i++) {
        tmp = str; tmp[i] = tmp[i+m] = 'F';
        cout << tmp << endl; cin >> q2;
        if(q1 == q2 + 2) s[i] = s[i+m] = 'T';
        if(q1 == q2 - 2) s[i] = s[i+m] = 'F';
    }
    //q3
    str = string(m,'F')+string(n-m,'T'); cout << str << endl; cin >> q3;
    //q4
    for(int i = 0; i < m; i++) if(!s[i]) {
        tmp = str; tmp[i] = 'T'; tmp[i+m] = tmp[i+2*m] = 'F';
        cout << tmp << endl; cin >> q4;
        if(q3 == q4 + 3) s[i] = 'F', s[i+m] = 'T', s[i+2*m] = 'T'; 
        if(q3 == q4 + 1) s[i] = 'F', s[i+m] = 'T', s[i+2*m] = 'F'; 
        if(q3 == q4 - 1) s[i] = 'T', s[i+m] = 'F', s[i+2*m] = 'T'; 
        if(q3 == q4 - 3) s[i] = 'T', s[i+m] = 'F', s[i+2*m] = 'F'; 
    }
    //q5
    for(int i = 0; i < n; i++) if(!s[i]) {
        tmp = string(n,'T'); tmp[i] = 'F';
        cout << tmp << endl; cin >> q5;
        s[i] = q1 > q5 ? 'T' : 'F';
    }

    cout << s << endl;
}

标签:q1,tmp,q3,q2,q4,正解,Online,cf1705,Exam
来源: https://www.cnblogs.com/wushansinger/p/16486841.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有