去年秋天做的題目,大意是:小鎮會連續放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的...