Now Pudge wants to do some Z??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcGVyYXRpb25zIG9uIHRoZSBob29rLjxicj4KPGJyPgpMZXQgdXMgbnVtYmVyIHRoZSBjb25zZWN1dGl2ZSBtZXRhbGxpYyBzdGlja3Mgb2YgdGhlIGhvb2sgZnJvbSAxIHRvIE4uIEZvciBlYWNoIG9wZXJhdGlvbiwgUHVkZ2UgY2FuIGNoYW5nZSB0aGUgY29uc2VjdXRpdmUgbWV0YWxsaWMgc3RpY2tzLCBudW1iZXJlZCBmcm9tIFggdG8gWSwgaW50byBjdXByZW91cyBzdGlja3MsIHNpbHZlciBzdGlja3Mgb3IgZ29sZGVuIHN0aWNrcy48YnI+ClRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgaG9vayBpcyBjYWxjdWxhdGVkIGFzIHRoZSBzdW0gb2YgdmFsdWVzIG9mIE4gbWV0YWxsaWMgc3RpY2tzLiBNb3JlIHByZWNpc2VseSwgdGhlIHZhbHVlIGZvciBlYWNoIGtpbmQgb2Ygc3RpY2sgaXMgY2FsY3VsYXRlZCBhcyBmb2xsb3dzOjxicj4KPGJyPgpGb3IgZWFjaCBjdXByZW91cyBzdGljaywgdGhlIHZhbHVlIGlzIDEuPGJyPgpGb3IgZWFjaCBzaWx2ZXIgc3RpY2ssIHRoZSB2YWx1ZSBpcyAyLjxicj4KRm9yIGVhY2ggZ29sZGVuIHN0aWNrLCB0aGUgdmFsdWUgaXMgMy48YnI+Cjxicj4KUHVkZ2Ugd2FudHMgdG8ga25vdyB0aGUgdG90YWwgdmFsdWUgb2YgdGhlIGhvb2sgYWZ0ZXIgcGVyZm9ybWluZyB0aGUgb3BlcmF0aW9ucy48YnI+CllvdSBtYXkgY29uc2lkZXIgdGhlIG9yaWdpbmFsIGhvb2sgaXMgbWFkZSB1cCBvZiBjdXByZW91cyBzdGlja3MuPGJyPgoKIAo8YnI+CklucHV0ClRoZSBpbnB1dCBjb25zaXN0cyBvZiBzZXZlcmFsIHRlc3QgY2FzZXMuIFRoZSBmaXJzdCBsaW5lIG9mIHRoZSBpbnB1dCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBjYXNlcy4gVGhlcmUgYXJlIG5vIG1vcmUgdGhhbiAxMCBjYXNlcy48YnI+CkZvciBlYWNoIGNhc2UsIHRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIGFuIGludGVnZXIgTiwgMTw9Tjw9MTAwLDAwMCwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiB0aGUgc3RpY2tzIG9mIFB1ZGdloa9zIG1lYXQgaG9vayBhbmQgdGhlIHNlY29uZCBsaW5lIGNvbnRhaW5zIGFuIGludGVnZXIgUSwgMDw9UTw9MTAwLDAwMCwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiB0aGUgb3BlcmF0aW9ucy48YnI+Ck5leHQgUSBsaW5lcywgZWFjaCBsaW5lIGNvbnRhaW5zIHRocmVlIGludGVnZXJzIFgsIFksIDE8PVg8PVk8PU4sIFosIDE8PVo8PTMsIHdoaWNoIGRlZmluZXMgYW4gb3BlcmF0aW9uOiBjaGFuZ2UgdGhlIHN0aWNrcyBudW1iZXJlZCBmcm9tIFggdG8gWSBpbnRvIHRoZSBtZXRhbCBraW5kIFosIHdoZXJlIFo9MSByZXByZXNlbnRzIHRoZSBjdXByZW91cyBraW5kLCBaPTIgcmVwcmVzZW50cyB0aGUgc2lsdmVyIGtpbmQgYW5kIFo9MyByZXByZXNlbnRzCiB0aGUgZ29sZGVuIGtpbmQuPGJyPgoKIAo8YnI+Ck91dHB1dApGb3IgZWFjaCBjYXNlLCBwcmludCBhIG51bWJlciBpbiBhIGxpbmUgcmVwcmVzZW50aW5nIHRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgaG9vayBhZnRlciB0aGUgb3BlcmF0aW9ucy4gVXNlIHRoZSBmb3JtYXQgaW4gdGhlIGV4YW1wbGUuPGJyPgoKIAo8YnI+ClNhbXBsZSBJbnB1dAoKPHByZSBjbGFzcz0="brush:java;">1 10 2 1 5 2 5 9 3
Sample Output
Case 1: The total value of the hook is 24.
题目意思:就是给一个n个位置(1~n),刚开始每一个位置价值赋值为1,后来跟新一段的值 例如 1 5 2 表示把1~5的位置全部变成价值为2,最后输出1~n所有位置价值和
不好理解的地方是pushdown()函数,例如输入1,n 2,我标记1到n是一样的价值(f[pos].va=1),又输入1 3 1时,我需要吧
前面的2传递给4到n,再更新1~3
不懂就好好理解吧,都是那么苦逼过来的
#include#include #include #include #define L(x) (x<<1) #define R(x) (x<<1|1) #define MID(x,y) ((x+y)>>1) using namespace std; #define N 100005 int a[N]; struct stud{ int le,ri; int cover; int va; }f[N*4]; void pushdown(int pos) { if(f[pos].cover) { f[L(pos)].va=f[R(pos)].va=f[pos].va; f[L(pos)].cover=f[R(pos)].cover=1; f[pos].cover=0; } } void build(int pos,int le,int ri) { f[pos].le=le; f[pos].ri=ri; f[pos].va=1; f[pos].cover=1; if(le==ri) return ; int mid=MID(le,ri); build(L(po