簡要題意:
乙個序列,請你支援
將 a
ra_r
ar 挪到 al−
1a_
al−1
和 a
la_l
al 之間,重新標號。
詢問在當前序列的第 l
ll 到第 r
rr 個位置,k
kk 出現了多少次。
塊鏈裸題,寫就完事,好寫的一b。
順便,std::list::size() 這個函式差點又把我坑慘了。
至於到底問題在**:here
**:
#include
#define ll long long
#define re register
#define cs const
namespace io
template
<
typename t>t get_integer()
inline
intgi()
char obuf[
20000007],
*oh=obuf,ch[23]
;template
<
typename t>
void
print
(t a,
char c)
struct obuf_flusher
}flusher;
}using
namespace io;
using std::cerr;
using std::cout;
cs int n=
1e5+7;
int n,m,a[n]
;struct block};
std::list bl;
typedef std::list
::iterator btr;
typedef std::deque<
int>
::iterator itr;
int bct,bsz;
void
build()
interase
(size_t p)
else p-
=t->l.
size()
;assert(0
);return-1
;}void
ins(size_t p,
int vl)
else p-
=t->l.
size()
;assert(0
);}int
query
(int p,
int vl)
else
p-=t->l.
size()
,res+
=t->sm[vl]
;return res;
}void
merge
(btr t)
void
split
(btr t)
}void
maintain()
void
main()
case2:
}}}inline
void
file()
signed
main()
校內模擬 鎖
沒有標籤是因為我真的不知道這算什麼型別 這題我說不來大意你們還是看題面描述吧 小z住的房子一共有n個人,他們每人有乙個重要度。房子的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複製若干份並發給任意多個居民。每個人都可以持有若干鑰匙,可以不持有鑰匙...
校內模擬 assignment(DP)
題面見校內oj4693 考慮預處理f k i j f k i j f k i j 表示最長的一段不超過k kk的時候,將長度為i ii的序列分為j jj段的方案數。在k kk相同的狀態之間轉移,顯然有f i j f i 1 j f i 1 j 1 f i k 1 j 1 f i j f i 1 j ...
2019 10 03 校內模擬
內網傳送門 很明顯的乙個網路流。轉換一下題意,相當於求保留航線的最大值。所以我們把邊權取負跑最小費用流。有乙個坑點,就是我們只需要費用最小,不要求流量最大,所以不應該用最小費用最大流。有兩個解決辦法 用最小費用可行流。連 i,t,1,0 i,t,1,0 i,t,1 0 的邊,表示不選 i ii 連出...