baritone 上低音號(鍊錶 卡矩陣)

2021-08-07 08:56:41 字數 1107 閱讀 7179

思路:

從上往下列舉上邊界,從下往上列舉下邊界。

考慮已經統計出上下邊界為列舉的包含至少k 個點的矩形數,當下邊界往上移動時,可能會刪除某些點。

用按橫座標排序的有序表維護當前上下邊界間的點,只有刪除點的前k 個點和後k個點會影響答案,其它矩形區域依然可行。

這樣每次只需要從有序表中刪除乙個點並統計答案,使用鍊錶即可。

複雜度o( n^2*k )。

#include 

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int n = 4000;

int r, c, n, k, idc;

int nxt[n], pre[n], val[n], id[n];

int pointx[n], finded[n], pointy[n];

long

long ans, sum;

vector

ve[n];

struct aaaa[n];

bool cmp(int x, int y)

void del(int t)

}int main()

for (int j=1; j<=idc; j++) id[j] = j;

sort(id+1, id+idc+1, cmp);//x為第一關鍵字,y為第二關鍵字排序

for (int j=1; j//

nxt[id[j]] = id[j+1], pre[id[j+1]] = id[j];

nxt[id[idc]] = id[idc];

pre[id[1]] = id[1];//建立鍊錶維護前驅後繼

for (int j=1; j<=idc; j++)

for (int j=c; j>=i; j--)

}cout

<< ans << endl;

return

0;}

關於鍊錶(上)

常見的三種快取淘汰策略 先進先出策略fifo,最少使用策略lfu,最近最少使用策略lru。1.陣列與鍊錶的區別 先從底層的儲存結構來看 陣列需要的是一組連續的記憶體空間開儲存,而鍊錶不需要,鍊錶通過指標將一組零散的記憶體空間串聯起來使用。陣列使用的是連續的記憶體空間,所以可以借用cpu的快取機制,預...

wince裝置上獲取sd卡的id號

最近工作上的乙個小需求,獲得sd卡上的需求號 typedef struct storage identification storage identification,pstorage identification pstorage identification pstoreinfo unsigne...

資料結構 鍊錶 上

本來說要放假認認真真的學習演算法和計算機基礎,但是看到安卓華麗麗的介面還是義無反顧的奔入了android入門大軍中 主要是懶的看演算法 不過在android學習中發現想要成為乙個合格的開發者 掙更多的錢 光是會呼叫函式是遠遠不夠的,還是需要有乙個深厚的計算機基礎。所以決定沉下心來認真學習計算機基礎。...