洛谷刷题记录(2026-7-28)洛谷P5461 赦免战俘

📅 2026/7/29 12:01:13
洛谷刷题记录(2026-7-28)洛谷P5461 赦免战俘
一个分治递归问题第一次做收获了一些东西## 1. 符号含义 **左移运算符** 语法a k 含义把数字 a 在二进制里整体向左移动 k 位右侧空出来的位置补 0。 ### 举例 1 的二进制 00000001 1 1 → 00000010 十进制 2 1 2 → 00000100 十进制 4 1 3 → 00001000 十进制 8 1 n → 2ⁿ 展示一下代码吧其实很简单从特殊到一般的推导就可以了#includebits/stdc.h using namespace std; #define N 1025 int mp[N][N]; void dfs(int x,int y,int len) { if (len 1) return; int mid len /2; for(int i x;ixmid;i) { for(int jy;jymid;j) { mp[i][j] 0; } } dfs(xmid,ymid,mid); dfs(xmid,y,mid); dfs(x,ymid,mid); } int main() { ios::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr); int n; cin n; int size 1 n; for(int i0;isize;i) { for(int j0;jsize;j) { mp[i][j] 1; } } dfs(0,0,size); for(int i0;isize;i) { for(int j0;jsize;j) { coutmp[i][j]; if(jsize-1) cout ; } cout \n; } return 0; }