好久不寫題解了,今天寫了乙個線段樹果然一點手感都沒有了。
不過是個很好的題目,兩種標記是互相影響的,注意到什麼標記的更新會使得另外的標記一併更新
題目和解法見注釋
/**
* uva 11402
* 四種操作
* 注意兩種標記會相互影響的時候的處理
*/#include
#include
#include
#include
#include
#define lson rt<<1
#define rson rt<<1|1
using
namespace
std;
const
int maxn = 1100080;
struct segmenttree[maxn << 2];
int n,a[maxn];
inline
void pushup(int rt)
/** * 這裡,關於pushdown函式,傳遞的到底應該是標記
* 還是說可以傳遞資料
*/inline
void pushdown(int rt)
else
if(tree[rt].tag == 0)
if(tree[rt].rev == 1)
}inline
void build(int rt,int l,int r)
int mid = (l + r) >> 1;
build(lson,l,mid);
build(rson,mid+1,r);
pushup(rt);
}inline
void update_rev(int rt,int l,int r)
int mid = (tree[rt].l + tree[rt].r) >> 1;
pushdown(rt);
if(l <= mid) update_rev(lson,l,r);
if(r > mid) update_rev(rson,l,r);
pushup(rt);
}inline
void update(int rt,int l,int r,int data)
int mid = (tree[rt].l + tree[rt].r) >> 1;
pushdown(rt);
if(l <= mid) update(lson,l,r,data);
if(r > mid) update(rson,l,r,data);
pushup(rt);
}inline
int query(int rt,int l,int r)
pushdown(rt);
int mid = (tree[rt].l + tree[rt].r) >> 1;
if(r <= mid) return query(lson,l,r);
else
if(l >= mid+1) return query(rson,l,r);
else
return query(lson,l,r) + query(rson,l,r);
}char ch[105];
int main()}}
build(1,1,tt);
char op[2];
int l,r,qm,qq = 0;
scanf("%d",&qm);
printf("case %d:\n",cas);
for(int q = 1;q <= qm;q ++)
else
if(op[0] == 'e')
else
if(op[0] == 'i')
else
if(op[0] == 's') }}
return
0;}
Pytorch深度學習實踐 線性模型
在看劉二大人的pytorch教程,寫個筆記記錄一下,如果有什麼問題歡迎一起 呀 傳送門 劉二大人的pytorch深度學習實踐 線性模型 首先是線性模型的定義 給定由d個屬性描述對的示例x x x x 其中 是第i個屬性上的取值,線性模型試圖學得乙個通過屬性的線性組合來進行 的函式,即 轉換成向量形式...
pytorch設計模型
1.nn.modulelist使對於加入其中的子模組,不必在forward中依次呼叫 nn.sequentialt使對於加入其中的子模組在forward中可以通過迴圈實現呼叫 2.pytorch中nn.modulelist和nn.sequential的用法和區別 nn.sequential定義的網路...
PyTorch快速入門
詳細的pytorch教程可以去pytorch官網的學習指南進一步學習,下面主要對pytorch做簡單的介紹,能夠快速入門。首先pytorch是基於python的科學計算類庫,主要有以下兩個方面的應用 作為numpy的替代者,充分利用gpu的計算能力。提供乙個靈活 快速的深度學習平台。tensor 與...