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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客 - 捡金币(思维+二维前缀和+构造)

發布時間:2024/4/11 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客 - 捡金币(思维+二维前缀和+构造) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個n*m的矩陣,每個方格都有一個權值,現在給出q次詢問,每次詢問的格式是x,y,k,問與點(x,y)的曼哈頓距離不超過k的方格內的所有權值之和

題目分析:首先這個題目肯定是不能暴力的,如果暴力跑的話時間復雜度就是n*m*q,大概1e11左右。。因為詢問的次數已經達到了1e5,加上樣例會給100組,時間復雜度已經到達了1e7,所以這個題目肯定是要求我們每次詢問O(1)輸出才能達到效果,說道O(1)輸出,最普遍的方法是對于每組數據預處理打個表,打表的話也不能太暴力,我們該想一個合適的方法來打表

其實看到求一個范圍內的權值和,第一反應肯定是二維前綴和,但在紙上畫了畫所要求的范圍發現,二維前綴和直接寫的話不太好實現,因為他是一個旋轉45度之后的正方形,既然都說到了旋轉45度,那我們直接將矩陣旋轉45度存起來不就好了嘛

現在問題轉換為了如何將整個圖旋轉45度后存起來,首先就要想到對角線,以對角線為橫縱坐標即可,原始坐標為(x,y),那么主對角線上的x軸我們可以用x+y來表示,那么副對角線該怎么表示呢,如果是x-y的話就成負數了,這個時候只要將整體向右平移m個單位就好了,因為y的范圍是1~m,所以x-y+m一定是一個正數,這樣一來就可以將整個矩陣旋轉45度后存起來了,對于這個新的矩陣求一下二維前綴和,然后就可以直接O(1)查詢了

有幾個細節需要注意一下,查詢的時候注意邊界問題,我們新構造的矩陣,范圍直接開到(m+n)*(m+n)即可,最好在處理之前輸出一下儲存的矩陣看一下是不是自己理想中的狀態,然后再做后續處理,然后就是新坐標和舊坐標的映射關系了,這個沒什么好說的,剩下的就是簡單實現了

代碼:

#include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=2e3+100;int n,m;LL maze[N][N];LL cal(int x,int y,int k)//求前綴和 {int xx=x+y;int yy=x-y+m;int upx=min(xx+k,m+n);int downx=max(xx-k,1);int upy=min(yy+k,m+n);int downy=max(yy-k,1);return maze[upx][upy]-maze[downx-1][upy]-maze[upx][downy-1]+maze[downx-1][downy-1]; }int main() { // freopen("input.txt","r",stdin); // ios::sync_with_stdio(false);int w;cin>>w;while(w--){memset(maze,0,sizeof(maze));scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)//構造矩陣for(int j=1;j<=m;j++)scanf("%lld",&maze[i+j][i-j+m]);for(int i=1;i<=n+m;i++)//二維前綴和for(int j=1;j<=m+n;j++)maze[i][j]+=maze[i-1][j]+maze[i][j-1]-maze[i-1][j-1];int q;scanf("%d",&q);while(q--){int x,y,k;scanf("%d%d%d",&x,&y,&k);printf("%lld\n",cal(x,y,k));}}return 0; }

?

總結

以上是生活随笔為你收集整理的牛客 - 捡金币(思维+二维前缀和+构造)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 福利片在线播放 | 国产成年无码久久久久毛片 | 91大片免费看 | 日韩xxxxxxxxx| av在线资源 | 一区二区三区91 | 亚洲成肉网 | 欧美一级免费在线 | 日韩在线视频免费 | 国产女无套免费视频 | 亚洲 在线| 国产三级理论 | 午夜窝窝 | 精产国产伦理一二三区 | 久久视频国产 | 国产午夜在线一区二区三区 | 久久久国产精品一区 | 国产av电影一区二区三区 | www.麻豆av| 伊人网大 | 日本深夜福利 | 国产激情久久久久久熟女老人av | 亚洲精品欧美在线 | 三年电影在线观看 | a级免费网站| 日本久久不卡 | 国产欧美激情在线观看 | 伊人av网站| 天海翼一二三区 | 久久久久久免费观看 | 人体私拍套图hdxxxx | 亚洲综合精品在线 | av爱爱网站 | 青青草社区 | 国产精品久久久一区二区三区 | 全部免费毛片在线播放 | 不卡一区二区在线视频 | 狠狠狠狠狠 | 在线视频在线观看 | 国产在线传媒 | 亚洲91视频 | 丰满少妇一级片 | 婷婷午夜精品久久久久久性色av | 亚洲第一黄色片 | 天天操天天操 | av电影中文字幕 | 日韩a√ | 大乳丰满人妻中文字幕日本 | 尤物在线免费视频 | 国产美女网 | 亚洲一区免费在线 | 久久人久久 | 毛片亚洲av无码精品国产午夜 | 天堂在线视频免费 | 国产一区二区在线视频 | 大尺度一区二区 | 日韩欧美亚洲精品 | 波多野结衣一二三四区 | 国模吧一区二区三区 | 亚洲天堂伦理 | 欧美一级片在线视频 | 毛片毛片毛片毛片 | 中文字幕日韩一区二区 | 欧美精品亚洲一区 | 国产白袜脚足j棉袜在线观看 | 中文字幕中出 | 成熟人妻av无码专区 | 亚洲一区二区精品在线观看 | 福利在线小视频 | 91精品国产色综合久久不卡蜜臀 | 中文字幕一区二区三区在线视频 | 色婷婷国产精品久久包臀 | 亚洲爆乳无码精品aaa片蜜桃 | 草久网| 日韩无砖 | 无码人妻丰满熟妇区bbbbxxxx | 网站在线观看你懂的 | 先锋资源在线视频 | 人妻va精品va欧美va | 欧美专区在线视频 | 蜜臀在线一区二区三区 | 亚洲精品乱码久久久久久 | 日韩蜜桃视频 | 国产精品久久久亚洲 | 手机亚洲第一页 | 天堂网视频在线观看 | 四级黄色片 | 自拍偷拍欧美视频 | av毛片观看 | 日韩电影一区 | 精品乱码一区二区三四区视频 | 香蕉视频久久 | 青青草原综合久久大伊人精品 | 久操视频免费在线观看 | 色国产视频 | 古装做爰无遮挡三级聊斋艳谭 | 羞辱狗奴的句子有哪些 | 成人在线视频在线观看 | 精品不卡一区 |