連續看幾天電影 最多能獲得的值 線段樹模板

2021-07-09 14:46:14 字數 3170 閱讀 8802

去年秋天做的題目,大意是:小鎮會連續放n天電影,每天都會放一部編號為x[i]的電影,**後能獲得的對應的值是y[x[i]]。有乙個人只能挑連續的幾天看電影,並且相同編號的電影他看了超過一遍就會厭倦,這時就會「恢復」成「他沒有看過這部電影」的狀態(即把這部電影獲得的值取消了),如果第一次看就會加上對應的值。問最多能獲得多少值?

並且這題無法用樹狀陣列(不能區間更新區間求值)

#include#define maxm 2000010

using namespace std;

int a[maxm];

long long v[maxm];

long long x[maxm],y[maxm];

int n, m;

long long ans = 0;

vectorq[maxm];

long long sum[maxm];

int line[maxm];

struct segtree //求最值

tree[maxm << 2];

int l, r;

long long v;

void pushdown(int u, int l, int r, int m)//向下更新節點(節省時間) }

void pushup(int u) //【改】

void built(int u, int l, int r)

int mid = l + r >> 1;

built(u << 1, l, mid);

built(u << 1 | 1, mid + 1, r);

pushup(u);

} void _add(int u, int l, int r)//區間或者點加值

pushdown(u, l, r, mid);

if (l <= mid)

_add(u << 1, l, mid);

if (r>mid)

_add(u << 1 | 1, mid + 1, r);

pushup(u);

} long long _query(int u, int l, int r)

pushdown(u, l, r, mid);

long long cnt = 0;

if (l <= mid)

cnt = max(cnt, _query(u << 1, l, mid)); //【改】

if (mid>n>>m;

for(int i=1;i<=n;++i)

for(int i=1;i<=m;++i)

cin>>y[i];

long long maxx=0;

for(int i=1;i<=n;++i)tree[maxm << 2];

int l, r;

long long v;

void pushdown(int u, int l, int r, int m)//向下更新節點(節省時間) }

void pushup(int u) //【改】

void built(int u, int l, int r)

int mid = l + r >> 1;

built(u << 1, l, mid);

built(u << 1 | 1, mid + 1, r);

pushup(u);

} void _add(int u, int l, int r)//區間或者點加值

pushdown(u, l, r, mid);

if (l <= mid)

_add(u << 1, l, mid);

if (r>mid)

_add(u << 1 | 1, mid + 1, r);

pushup(u);

} long long _query(int u, int l, int r)

pushdown(u, l, r, mid);

long long cnt = 0;

if (l <= mid)

cnt += _query(u << 1, l, mid); //【改】

if (mid>n>>m;

for(int i=1;i<=n;++i)

for(int i=1;i<=n;++i)tree[maxm << 2];

int l, r;

long long v;

void pushdown(int u, int l, int r, int m)//向下更新節點(節省時間)

} void pushup(int u) //【改】

void built(int u, int l, int r)

int mid = l + r >> 1;

built(u << 1, l, mid);

built(u << 1 | 1, mid + 1, r);

pushup(u);

} void _add(int u, int l, int r)//區間或者點加值

pushdown(u, l, r, mid);

if (l <= mid)

_add(u << 1, l, mid);

if (r>mid)

_add(u << 1 | 1, mid + 1, r);

pushup(u);

} long long _query(int u, int l, int r)

pushdown(u, l, r, mid);

long long cnt = 100000000; //注意

if (l <= mid)

cnt = min(cnt, _query(u << 1, l, mid)); //【改】

if (mid0&&b>0)

l[i]=a;

r[i]=s;

a.add(i,i,a);

}int q;

scanf("%d",&q);

while(q--)

return 0;

}

MySQL查詢連續幾天的資料

1.按照日期排序,使用rank 函式得到排位值 select userid,date rank over partition by userid order by date rk from tablea 2.用日期減去排位值rk得到新的日期,記作new date.new date相同則為連續 舉個栗...

如何檢視連續幾天運算元量的最大記錄

題目 求連續日期登入次數最大的使用者 登入時間裡面有詳細的時分秒資料,而我們的題目只要求連續的天數,所以使用datediff函式可以解決,datediff d,logintime,getdate as diffdate 有多個使用者都在登入,因此應該以使用者名為分割槽,登入時間為順序來計算rownu...

漫看影視 愛情公寓5已經上線好幾天了 你追劇了嗎?

大家對於愛情公寓應該都不陌生嗎?當時也是熱播劇了,陪伴了多少人度過了讀書時代。從愛情公寓1 4都是滿滿的回憶,如今最終季愛情公寓5終於要出了,之前也是遲遲沒有定當,直到1月9日晚 愛情公寓 官方正式宣布 愛情公寓5 定檔,將於1月12日在網路上線。相信等著追劇的人也是一大波!就是不知道這愛情公寓5的...