日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

3785. 战舰

發(fā)布時(shí)間:2024/1/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3785. 战舰 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3785. 戰(zhàn)艦



#include <bits/stdc++.h> using namespace std;int main() {int n, k;cin >> n >> k;vector<vector<int>> a(n + 1, vector<int>(n + 1));for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {char c;cin >> c;if(c == '.') {a[i][j] = 1;}}}vector<vector<int>> left(n + 2, vector<int>(n + 2)); vector<vector<int>> right(n + 2, vector<int>(n + 2));vector<vector<int>> up(n + 2, vector<int>(n + 2));vector<vector<int>> down(n + 2, vector<int>(n + 2));for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {if(a[i][j]) {left[i][j] = left[i][j - 1] + 1;up[i][j] = up[i - 1][j] + 1;}left[i][j] = min(left[i][j], k);up[i][j] = min(up[i][j], k);}}for(int i = n; i >= 1; i--) {for(int j = n; j >= 1; j--) {if(a[i][j]) {right[i][j] = right[i][j + 1] + 1;down[i][j] = down[i + 1][j] + 1;}right[i][j] = min(right[i][j], k);down[i][j] = min(down[i][j], k);}}int ret = 0, x = 1, y = 1;for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {if(a[i][j]) {int cnt = max(left[i][j] + right[i][j] - k, 0) + max(up[i][j] + down[i][j] - k, 0);if(ret < cnt) {ret = cnt;x = i;y = j;}}}}cout << x << " " << y << endl;return 0; }

題解:用了類(lèi)似前綴和的方法去記錄left,right,up,down四個(gè)數(shù)組,分別表示點(diǎn)(i,j)往左,右,上,下分別可以有多少種變換,變換的最大長(zhǎng)度不超過(guò)船長(zhǎng),也就是k,最后再把相同的變化去掉,再做比較就可得出最終答案。

總結(jié)

以上是生活随笔為你收集整理的3785. 战舰的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。