1 #include 2 #include 3 #include 4using
namespace
std;
5const
int n = 120000;6
#define max(a, b) ((a) > (b) ? (a) : (b))
7#define ll long long
8 ll head[n], nex[n << 1], to[n << 1], val[n << 1];9
ll cnt;
10ll ans1[n], ans2[n];
11ll a[n], k[n], rt[n];
12ll n;
13void
addedge(ll a, ll b, ll v)
1420
struct
node
21tree[n * 40
];31
void
push_up(ll x, ll del)
3236
void
push_down(ll x, ll l, ll r)
3746}47
ll merge(ll l, ll r, ll u, ll v)
4865 ll mid = (l + r) >> 1
;66 tree[now].ls =merge(l, mid, tree[u].ls, tree[v].ls);
67 tree[now].rs = merge(mid + 1
, r, tree[u].rs, tree[v].rs); //!!!!!
68 tree[now].siz = tree[tree[now].ls].siz +tree[tree[now].rs].siz;
69 tree[now].maxx =max(tree[tree[now].ls].maxx, tree[tree[now].rs].maxx);
70return
now;71}
72ll solve(ll l, ll r, ll x)
7378 ll mid = (l + r) >> 1;79
push_down(x, l, r);
80if(l <= mid && tree[ls(x)].siz && tree[ls(x)].maxx ==tree[x].maxx) // !!!!
81return
solve(l, mid, ls(x));
82else
83return solve(mid + 1
, r, rs(x));84}
85void update(ll &x, ll l, ll r, ll v)
8695
push_down(x, l, r);
96 ll mid = (l + r) >> 1;97
if(v <=mid)
98update(ls(x), l, mid, v);
99else
100 update(rs(x), mid + 1
, r, v);
101 tree[x].maxx =max(tree[ls(x)].maxx, tree[rs(x)].maxx);
102 tree[x].siz = tree[ls(x)].siz +tree[rs(x)].siz;
103}
104ll dfs2(ll l, ll r, ll x, ll idx)
105117
}seg;
118void
dfs(ll x, ll fa, ll v)
119132
intmain()
133142
for(ll i = 1 ; i <= n ; i ++)
143 scanf("
%lld
", &a[i]);
144for(ll i = 1 ; i <= n ; i ++)
145 scanf("
%lld
", &k[i]);
146 dfs(1, 0, 0
);147
for(ll i = 1 ; i <= n ; i ++)
148 printf("
%lld %lld\n
", ans1[i], ans2[i]);
149return0;
150 }
主要在於總結錯誤, 帶!的地方均為開始時有問題的(現已更正)。
另外聽說線段樹合併已經下放到noip知識點中了。 需要多練,還可以順便提高碼力。
(現在的暴力能力太差了,需要留1.5h+來寫暴力.....)
1021上午考試T2
題目大意 n個莊家。你可以到莊家那邊下注,每次可以猜大猜小,猜一次一元錢。每一次開彩前,你都可以到任意個莊家那裡下賭注。如果開彩結果是大,你就可以得到你之前猜大的莊家相應的ai元錢。如果開彩結果是小,你就可以得到你之前猜小的莊家相應的bi元錢。你可以在同乙個莊家那裡既猜大又猜小 這樣是兩塊錢 也可以...
0928考試T2 亂搞
題目大意 給定k個數字序列,請將它們合併為乙個,滿足本來在同一序列中的兩個數的相對位置不變。定義乙個序列a的不和諧度為序列中使得a i a i 1 成立的i的總數,請輸出一種合併方案,使得合併後的序列不和諧度最小。考場上算錯時間複雜度了,以為可以切了的,沒想到拿了80。我想的是貪心 假設已經填入 i...
考試總結T2(接上次整的T1)
首先說一句,樹的每個元素的名稱的問題,那個叫jie點的東西 具體是節點還是結點.baidu百科寫的是結點.本文章將不考慮到底這倆字怎麼寫.所以兩種都可能出現 t2描述 扶蘇翻遍了歌單卻沒有找到一首歌能做這個題的題目背景,於是放上了扶蘇最喜歡的一首 不老夢 與day1的第二題一樣,今天的第二題依然是一...