Jump( 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15). )

Jump( 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15). )

在這里插入圖片描述
在這里插入圖片描述

題目大意:

在這個交互式問題中,你需要通過查詢系統,逐步找出隱藏的位字符串 S。給定一個偶數 n,表示目標位字符串 S 的長度,你需要通過與系統交互,查詢一組長度為 n 的二進制字符串 Q。系統會返回一個整數,表示字符串 Q 與目標字符串 S 在對應位置上相同的位數。

定義一個交互問題 Jump(Q),如下所示:

  • OneMax(Q) = nOneMax(Q) = n / 2 時,Jump(Q) 返回 OneMax(Q)
  • 其他情況下,Jump(Q) 返回 0

其中 OneMax(Q) 表示字符串 Q 中與隱藏字符串 S 相同的位數。你的目標是通過最少的查詢次數,找出字符串 S

問題的特點:

  • 其實你會發現,你找到n/2的答案時用不了任何算法,你如直接掛茅臺隨機。
  • 因為你會發現隨機出答案 n/2 容易得多,不需要花多少次數,你不能指望直接隨機到 n,因為這幾乎不可能。
  • 從 n/2 推到n就很簡單了吧,先把第一位翻轉,之后循環后面的每一位,看看與第一位上的數正誤是否相同。就這么簡單。

題解思路:

本題的關鍵在于如何通過交互查詢逐步逼近隱藏的字符串 S。可以通過以下步驟實現:

  1. 隨機生成字符串:首先可以隨機生成一個二進制字符串 Q,并查詢系統的反饋值。如果反饋值為 n,則說明已經找到正確的字符串,直接退出。

  2. 逐步修改字符串:如果查詢的結果不是 n,則意味著 QS 不完全相同。在這種情況下,我們可以逐步修改 Q,通過改變某些位,并再次查詢,直到找到正確的字符串。修改的方法可以是根據當前查詢的反饋,逐步調整字符串,直到最終使查詢結果為 n

  3. 查詢反饋:對于每一次查詢,你會得到反饋:

    • 0:表示 QS 在任何位置上都沒有匹配。
    • n / 2:表示 QSn / 2 個位置上匹配。
    • n:表示 Q 完全匹配 S
  4. 優化查詢次數:盡可能減少查詢次數。通過不斷逼近目標字符串 S,每次通過修改少量位來增加匹配的位數,從而更快找到 S

代碼解析:

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define BoBoowen ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
using namespace std;const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const int N = 5e5 + 10;
mt19937 rnd(114514);  // 用于生成隨機數int n;// 用于發送查詢并獲取反饋
int query(string s)
{int ans = 0;cout << s << endl;  // 輸出查詢字符串cin >> ans;         // 獲取反饋return ans;
}// 生成一個隨機的查詢字符串并進行查詢
string pre()
{while (1){string s;for (int i = 0; i < n; i++)  // 生成長度為n的隨機二進制字符串{s += rnd() % 2 + '0';}int ans = query(s);  // 查詢if (ans == n)  // 如果完全匹配,退出{exit(0);}if (ans == n / 2)  // 如果有n/2個匹配位,返回該字符串return s;}
}signed main()
{cin >> n;  // 讀取字符串長度string t = pre();  // 生成隨機字符串并進行查詢t[0] ^= 1;  // 翻轉第一個字符vector<int> s1;s1.push_back(0);// 嘗試修改其他字符for (int i = 1; i < n; i++){t[i] ^= 1;  // 翻轉第i個字符int ans = query(t);  // 查詢t[i] ^= 1;  // 恢復原狀態if (ans != n / 2)  // 如果返回的結果不是n/2,則記錄該字符位置s1.push_back(i);}t[0] ^= 1;  // 恢復第一個字符for (auto v : s1)  // 翻轉記錄的字符位置t[v] ^= 1;int ans = query(t);  // 再次查詢if (ans == n)  // 如果完全匹配,退出return 0;if (ans == 0)  // 如果沒有匹配,翻轉所有位輸出{for (int i = 0; i < n; i++)t[i] ^= 1;cout << t;return 0;}
}

代碼流程:

  1. 生成隨機字符串并查詢

    • 通過 pre() 函數生成一個隨機的二進制字符串,并查詢系統的反饋值。
    • 如果反饋值為 n,說明已經找到目標字符串,程序終止。
    • 如果反饋值為 n / 2,返回該字符串進行進一步操作。
  2. 修改字符串并查詢

    • 對生成的隨機字符串逐步修改,翻轉某些位,檢查每次修改后的反饋結果。
    • 如果反饋值為 n / 2,則繼續修改,直到找到正確的字符串。
  3. 輸出結果

    • 當查詢結果為 n 時,輸出結果并退出。
    • 如果查詢結果為 0,說明字符串完全不同,需要將所有位翻轉并輸出。

總結:

這道題目需要通過查詢與反饋來逐步找出隱藏的目標字符串。通過對字符串的逐位修改和反饋的解析,我們能夠有效地逼近并最終找到目標字符串 S

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72825.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72825.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72825.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode 刷題記錄 06 —— 矩陣

本系列為筆者的 Leetcode 刷題記錄&#xff0c;順序為 Hot 100 題官方順序&#xff0c;根據標簽命名&#xff0c;記錄筆者總結的做題思路&#xff0c;附部分代碼解釋和疑問解答。 目錄 01 矩陣置零 方法一&#xff1a;標記數組 方法二&#xff1a;兩個標記變量 02 螺旋矩陣…

Java【網絡原理】(3)網絡編程續

目錄 1.前言 2.正文 2.1ServerSocket類 2.2Socket類 2.3Tcp回顯服務器 2.3.1TcpEchoServer 2.3.2TcpEchoClient 3.小結 1.前言 哈嘍大家好&#xff0c;今天繼續進行計算機網絡的初階學習&#xff0c;今天學習的是tcp回顯服務器的實現&#xff0c;正文開始 2.正文 在…

C++11新特性 8.final關鍵字、override關鍵字

一.final 用法&#xff1a; 1.修飾函數 只能修飾虛函數&#xff0c;阻止子類重寫這個函數&#xff0c;final關鍵字寫在函數名的后面。 即該虛函數不可以再被重寫。 注意&#xff1a;一般不會在基類中使用&#xff0c;不然沒有意義&#xff0c;因為只能修飾虛函數。 2.修飾…

Python實現網絡通信:Socket模塊與TCP/IP協議全解析

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

click house擴容方案

《ClickHouse擴容方案解析》 當我們談論數據庫的時候&#xff0c;尤其是像ClickHouse這樣專為處理大規模數據分析而設計的列式存儲數據庫時&#xff0c;擴容是一個不可避免的話題。隨著數據量的增長和查詢復雜度的提升&#xff0c;原有的硬件資源可能不足以支撐高效的查詢響應…

【AGI】智譜開源2025:一場AI技術民主化的革命正在到來

智譜開源2025&#xff1a;一場AI技術民主化的革命正在到來 引言&#xff1a;開源&#xff0c;一場技術平權的革命一、CogView4&#xff1a;中文AI生成的里程碑1. 破解漢字生成的“AI魔咒”2. 開源協議與生態賦能 二、AutoGLM&#xff1a;人機交互的范式躍遷1. 自然語言驅動的跨…

java8中young gc的垃圾回收器選型,您了解嘛

在 Java 8 的 Young GC&#xff08;新生代垃圾回收&#xff09;場景中&#xff0c;對于 ToC的場景&#xff0c;即需要盡可能減少垃圾回收停頓時間以滿足業務響應要求的場景&#xff0c;以下幾種收集器各有特點&#xff0c;通常 Parnew和 G1 young表現較為出色&#xff0c;下面詳…

【數學 矩陣快速冪】P7108 移花接木|普及+

本文涉及知識點 數學 移花接木 題目背景 遙遠的圣地生長著一棵不為人知的靈樹&#xff0c;或有萬山之高。 但有一日&#xff0c;藏匿于根系的腐朽力量爆發&#xff0c;靈樹已無法支撐往日屹立沖天的高度。 題目描述 靈樹最初的形態可以看作一棵高度為 10 10 10 10 {10}…

2025-03-09 學習記錄--C/C++-PTA 習題10-7 十進制轉換二進制

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、題目描述 ?? 裁判測試程序樣例&#xff1a; #include <stdio.h>void dectobin( int n );int main() {int n;scanf(…

前端 | CORS 跨域問題解決

問題&#xff1a;Access to fetch at http://localhost:3000/save from origin http://localhost:5174 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the request…

fastapi房產銷售系統

說明&#xff1a; 我希望用fastapi寫幾個接口&#xff0c;查詢房產交易系統的幾條數據&#xff0c;然后在postman里面測試 查詢客戶所有預約記錄&#xff08;含房源信息&#xff09;需要對應銷售經理查詢客戶所有訂單&#xff08;含房源信息&#xff09;統計銷售經理名下所有房…

導軌式ARM工業控制器:組態軟件平臺的“神經中樞”

工業自動化領域&#xff0c;組態軟件平臺扮演著至關重要的角色。它不僅是工業控制系統的“大腦”&#xff0c;更是實現智能化、高效化生產的關鍵工具。而作為組態軟件平臺的硬件支撐&#xff0c;導軌式ARM工控機&#xff08;以下簡稱“工控機”&#xff09;憑借其緊湊的設計、強…

每日一題——矩陣置零問題的原地算法

矩陣置零問題的原地算法 問題描述示例約束條件進階要求 問題分析難點分析解題思路 代碼實現代碼說明 測試用例測試用例 1測試用例 2測試用例 3 總結 問題描述 給定一個 m x n 的矩陣&#xff0c;如果矩陣中的某個元素為 0&#xff0c;則需要將其所在的行和列的所有元素都置為 …

Springboot中的@Value注解:用法與潛在問題探索

在Spring Boot開發中&#xff0c;有個非常實用的注解&#xff0c;那就是Value&#xff01;它可以幫助我們輕松地從配置文件中讀取屬性值。想象一下&#xff0c;在應用程序中管理各種配置&#xff0c;比如數據庫連接信息、服務URL或者API密鑰等&#xff0c;使用Value是多么方便呀…

C++后端服務器開發技術棧有哪些?有哪些資源或開源庫拿來用?

一、 C后臺服務器開發是一個涉及多方面技術選擇的復雜領域&#xff0c;特別是在高性能、高并發的場景下。以下是C后臺服務器開發的一種常見技術路線&#xff0c;涵蓋了從基礎到高級的技術棧。 1. 基礎技術棧 C標準庫 C11/C14/C17/C20&#xff1a;使用現代C特性&#xff0c;如…

25年攜程校招社招求職能力北森測評材料計算部分:備考要點與誤區解析

在求職過程中&#xff0c;能力測評是篩選候選人的重要環節之一。對于攜程這樣的知名企業&#xff0c;其能力測評中的材料計算部分尤為關鍵。許多求職者在備考時容易陷入誤區&#xff0c;導致在考試中表現不佳。本文將深入解析材料計算部分的實際考察方向&#xff0c;并提供針對…

golang進階知識專項-理解值傳遞

在 Go 語言中&#xff0c;所有函數的參數傳遞都是值傳遞&#xff08;Pass by Value&#xff09;。當你將一個變量作為參數傳遞給函數時&#xff0c;實際上傳遞的是該變量的副本&#xff0c;而不是變量本身。理解這一點對于避免常見的編程錯誤至關重要。根據不同的類型&#xff…

RuoYi框架添加自己的模塊(學生管理系統CRUD)

RuoYi框架添加自己的模塊&#xff08;學生管理系統&#xff09; 框架順利運行 首先肯定要順利運行框架了&#xff0c;這個我不多說了 設計數據庫表 在ry數據庫中添加表tb_student 表字段如圖所示 如圖所示 注意id字段是自增的 注釋部分是后面成功后前端要展示的部分 導入…

中級網絡工程師面試題參考示例(1)

一、基礎理論 1. OSI七層模型與TCP/IP四層模型的區別是什么&#xff1f;請舉例說明第三層&#xff08;網絡層&#xff09;和第四層&#xff08;傳輸層&#xff09;的核心協議。 參考答案&#xff1a; OSI七層模型分為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用…

RHCE9.0版本筆記5:防火墻的本地/遠程登錄方式

一、防火墻登錄方式全景圖 華為防火墻支持多種管理訪問方式&#xff0c;根據安全等級和場景需求可分為&#xff1a; graph LR A[管理方式] --> B[本地登錄] A --> C[遠程登錄] B --> B1(Console) B --> B2(Web) C --> C1(SSH) C --> C2(Telnet) C --> C…