1015E2 通用思想 線段的表示

2021-09-11 14:31:59 字數 2412 閱讀 3808

這樣的題目大概是我現階段能力的極限了吧

第一步,統計每乙個點在水平和豎直方向上能雙向延申的最長長度

第二步,統計每乙個點在四個方向上能延伸的最長長度(取min)

第三部,用到乙個技巧,就是乙個線段[le,ri]可以表示為2個點,即從le開始,從ri+1結束

想到之前做到過的乙個題,有很多條線段[le,ri],給出a,b,求在[a,b]範圍內有有多少個點被奇數條線段覆蓋

怎麼做,有一點點技巧,記錄每條線段的le和ri+1,弄個陣列a[max(ri)],遍歷,每個a[le]++,每個a[ri+1]--;

再統計出字首和l[max(ri)],再從a遍歷到b,中途有多少個a[i]&1==1的,就有多少個點被奇數條線段覆蓋

聯想:其實用到這種思想的,我算是做過兩遍了,還遇到過牛b的一道題,這種思想是利用字首和統計在數列上的線段,

這題只是統計有沒有被覆蓋,牛客競賽裡面還有乙個更牛的,統計區間的交叉,不寫部落格我還差點忘了

意思就是給出很多線段,求從哪條線段開始,出現了線段的交叉,隨機加字首和就能過:

**: 

//problem:

//date:

//skill:

//bug:

/definations/

//迴圈控制

#define clr(a) memset((a),0,sizeof(a))

#define f(i,a,b) for(int i=a;i<=int(b);++i)

#define f2(i,a,b) for(int i=a;i>=int(b);--i)

#define re(i,n) for(int i=0;iusing namespace std;

const int inf = 0x3f3f3f3f;

const long long llinf = 0x3f3f3f3f3f3f3f3f;

options//

typedef long long ll;

#define stdcpph

#define cpp_io

#ifdef stdcpph

#include#else

#include#include#include#include#include#include#include#ifdef cpp_io

#include#include#include#else

#include#endif

#endif

basic functions//

templateinline void in(inint &x)

while (c >= '0'&&c <= '9')

x *= f;

}templateinline void out(inint x)

added functions//

const int maxn = int(1e3+4);

int n, m;

int h[maxn][maxn], s[maxn][maxn];

//int l[maxn][maxn], to[maxn][maxn];

int used[maxn][maxn];

char ma[maxn][maxn];

void pr()

} }}code/

int main()

else

if (l == 0)l = j;

else continue;}}

re2(j, m)

else

if (l == 0)l = i;

else continue;

}} re2(i, n)re2(j, m)h[i][j] = min(h[i][j], s[i][j]);

bool flag(1);

re2(i, n)

; re2(j, m)if (h[i][j])++cor[j - h[i][j]], --cor[j + h[i][j] + 1];

re2(j, m)cor[j] = cor[j - 1] + cor[j];

re2(j, m)if (cor[j])used[i][j] = 1;

} re2(j, m)

; re2(i, n)if (h[i][j])++cor[i - h[i][j]], --cor[i + h[i][j] + 1];

re2(i, n)cor[i] = cor[i - 1] +cor[i];

re2(i, n)if (cor[i])used[i][j] = 1;

} re2(i,n)re2(j,m)

if (!used[i][j] && ma[i][j] == '*')

if (!flag)cout << "-1" << endl;

else pr();

} ///

return 0;

}

hql2(通用分頁)

basedao sql和hql通用分頁 的區別 通過書籍名字模糊查詢資料,並且具備分頁的功能 hql通用分頁 方法分享 public class basedao object value null 給query賦值 for map.entryentry map.entryset 陣列型別 else ...

C 程式設計思想 卷二 通用演算法

判定函式 例 只把數值1中滿足條件的值複製到陣列2中 remove copy if 演算法對輸入序列的每個元素都應用gt15 並且在向輸出序列寫入時忽略掉那些使判定函式產生真值的元素。流迭代器 例 輸出流迭代器 例 輸入流迭代器 remove copy if 的第1個引數,把乙個istream it...

H2通用快取載入

自己隨意學習使用h2 資料庫,現需要在專案啟動時,將 表資訊,排序資訊等不常變動的基礎資訊快取到 h2記憶體資料庫中,1.建立固定格式的abstract class 或 inte ce,其需要宣告 初始化 init 建立h2快取表 create 插入資料 insertdata 初始化完成 inite...