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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【BZOJ2738】矩阵乘法 [整体二分][树状数组]

發布時間:2025/6/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【BZOJ2738】矩阵乘法 [整体二分][树状数组] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

矩陣乘法

Time Limit: 20 Sec??Memory Limit: 256 MB
[Submit][Status][Discuss]

Description

  給你一個N*N的矩陣,不用算矩陣乘法,但是每次詢問一個子矩形的第K小數。

Input

  第一行兩個數N,Q,表示矩陣大小和詢問組數;
  接下來N行N列一共N*N個數,表示這個矩陣;
  再接下來Q行每行5個數描述一個詢問:x1,y1,x2,y2,k表示找到以(x1,y1)為左上角、以(x2,y2)為右下角的子矩形中的第K小數。

Output

  對于每組詢問輸出第K小的數。

Sample Input

  2 2
  2 1
  3 4
  1 2 1 2 1
  1 1 2 2 3

Sample Output

  1
  3

HINT

  矩陣中數字是10^9以內的非負整數;
  20%的數據:N<=100,Q<=1000;
  40%的數據:N<=300,Q<=10000;
  60%的數據:N<=400,Q<=30000;
  100%的數據:N<=500,Q<=60000。

Solution

  由于只有詢問,我們可以方便地使用整體二分來求解。

  先將原矩陣以序列形式存下來,然后按照權值排序,接著我們二分序列上的位置來查詢,在[l,mid]這一段序列上的點+1,然后像靜態查Kth那么判斷即可。(用二維樹狀數組加入權值)。

Code

1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 #include<cstdio> 5 #include<cstring> 6 #include<cstdlib> 7 #include<cmath> 8 #include<vector> 9 using namespace std; 10 11 const int ONE = 505; 12 const int QUE = 60005; 13 14 int n,Q; 15 int tot; 16 int C[ONE][ONE]; 17 int Ans[QUE]; 18 19 struct point 20 { 21 int x,y,val; 22 }a[ONE*ONE]; 23 bool cmp(const point &a,const point &b) {return a.val < b.val;} 24 25 struct power 26 { 27 int x1,y1,x2,y2; 28 int k; 29 int id; 30 }oper[QUE],qL[QUE],qR[QUE]; 31 32 int get() 33 { 34 int res=1,Q=1; char c; 35 while( (c=getchar())<48 || c>57) 36 if(c=='-')Q=-1; 37 if(Q) res=c-48; 38 while((c=getchar())>=48 && c<=57) 39 res=res*10+c-48; 40 return res*Q; 41 } 42 43 namespace Bit 44 { 45 int lowbit(int x) {return x&-x;} 46 47 void Add(int x,int y,int z) 48 { 49 for(int i=x;i<=n;i+=lowbit(i)) 50 for(int j=y;j<=n;j+=lowbit(j)) 51 C[i][j] += z; 52 } 53 54 int Query(int x,int y) 55 { 56 int res = 0; 57 for(int i=x;i>=1;i-=lowbit(i)) 58 for(int j=y;j>=1;j-=lowbit(j)) 59 res += C[i][j]; 60 return res; 61 } 62 63 int Getans(power a) 64 { 65 return Query(a.x2,a.y2) - Query(a.x1-1,a.y2) - Query(a.x2,a.y1-1) + Query(a.x1-1,a.y1-1); 66 } 67 } 68 69 void Solve(int l,int r,int L,int R)//位置 詢問 70 { 71 if(L>R) return; 72 if(l==r) 73 { 74 for(int i=L;i<=R;i++) 75 Ans[oper[i].id] = a[l].val; 76 return; 77 } 78 79 int mid=(l+r)>>1; 80 for(int i=l;i<=mid;i++) 81 Bit::Add(a[i].x,a[i].y,1); 82 83 int l_num=0,r_num=0; 84 for(int i=L;i<=R;i++) 85 { 86 int record = Bit::Getans(oper[i]); 87 if(record >= oper[i].k) 88 qL[++l_num] = oper[i]; 89 else 90 oper[i].k-=record, qR[++r_num] = oper[i]; 91 } 92 93 for(int i=l;i<=mid;i++) 94 Bit::Add(a[i].x,a[i].y,-1); 95 96 int t=L; 97 for(int i=1;i<=l_num;i++) oper[t++] = qL[i]; 98 for(int i=1;i<=r_num;i++) oper[t++] = qR[i]; 99 100 Solve(l,mid,L,L+l_num-1); 101 Solve(mid+1,r,L+l_num,R); 102 } 103 104 105 int main() 106 { 107 n=get(); Q=get(); 108 for(int i=1;i<=n;i++) 109 for(int j=1;j<=n;j++) 110 { 111 a[++tot].val = get(); 112 a[tot].x = i; a[tot].y = j; 113 } 114 sort(a+1,a+tot+1,cmp); 115 116 for(int i=1;i<=Q;i++) 117 { 118 oper[i].x1=get(); oper[i].y1=get(); oper[i].x2=get(); oper[i].y2=get(); 119 oper[i].k=get(); oper[i].id=i; 120 } 121 122 Solve(1,tot,1,Q); 123 124 for(int i=1;i<=Q;i++) 125 printf("%d\n",Ans[i]); 126 } View Code

?

轉載于:https://www.cnblogs.com/BearChild/p/6561673.html

總結

以上是生活随笔為你收集整理的【BZOJ2738】矩阵乘法 [整体二分][树状数组]的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91精品久久久久久久99蜜桃 | 亚洲AV综合色区无码国产播放 | 久久久久一区二区精码av少妇 | 亚洲视频一区二区 | av福利在线看 | 黄色永久免费网站 | 少妇媚药按摩中文字幕 | 精品视频一区二区在线观看 | 久青草国产在线 | 亚洲 欧美 日韩 在线 | 特级特黄aaaa免费看 | 精品在线视频一区 | 国产毛片视频 | 亚洲一线二线在线观看 | 日韩avwww| 人体私拍套图hdxxxx | 杨幂一区二区国产精品 | 欧美精品hd | 一级生活毛片 | 国产八区 | 中文字幕1区2区 | 欧美日韩亚洲精品一区二区 | 免费成年人视频 | 曰本黄色大片 | 国产99久久久欧美黑人 | 四虎永久在线精品免费一区二区 | xxx视频网站 | 国产免费久久 | 亚洲在线免费视频 | 亚洲精品国产精品国自产在线 | 亚洲精品国产一区 | 国产18在线观看 | 成人午夜影片 | 成年免费视频黄网站在线观看 | 激情欧美一区二区三区 | 午夜精品久久久久久久91蜜桃 | 在线能看的av网站 | 在线免费看91 | 中文字幕免费在线视频 | 久热色 | 1024你懂的日韩 | 天天欲色 | 三级免费毛片 | 99re这里只有精品在线 | 秋霞成人av| 久久女人网 | 亚洲 小说区 图片区 | 国产精品久久久久久久久久 | 熟妇人妻中文字幕无码老熟妇 | 人人九九 | 亚洲综合中文字幕在线 | 夜夜天天拍拍 | 亚洲欧美综合久久 | 日韩一区二区三区在线 | 日韩成人高清视频在线观看 | 国产一级片一区 | 久久久久亚洲日日精品 | 亚洲aaa| 精品国产户外野外 | 天天干天天干 | 我的丝袜美腿尤物麻麻 | 91久久精品美女高潮 | 黄色片网站免费 | 日本黄色一级网站 | 国产毛片基地 | 久久精品在线视频 | 天天燥日日燥 | 欧美一级淫片 | 在线免费观看毛片 | 日韩在线播放视频 | 欧美黑人xxx | 青青操国产 | 日本成人综合 | 少妇高潮一区二区三区99小说 | 亚洲天堂岛 | 国产精品一区二区三 | 麻豆久久久午夜一区二区 | 丰满人妻一区二区三区53视频 | 日韩亚洲一区二区三区 | 人妻丰满熟妇av无码区 | 看黄色一级视频 | 91小宝寻花一区二区三区 | 日本黄色大片免费看 | 菊肠扩张playh | 欧美性猛交xx乱大交 | 国产在线操 | 欧美视频一区在线观看 | 2022av视频| 欧美国产成人精品一区二区三区 | www.一区二区 | 3d动漫精品h区xxxxx区 | 免费成人高清视频 | 久久久久一 | 在线观看亚洲 | 美女四肢被绑在床扒衣 | fc2ppv在线播放 | 神马午夜视频 | avtt中文字幕| 国产高清在线观看视频 |