牛客多校第3場 C Shuffle Cards

2021-08-21 19:47:31 字數 1666 閱讀 9850

之所以補這題,是因為第一次使用rope,這是乙個可持久化平衡樹。

不過本題沒有用到可持久化就是了,平衡樹的split和merge。

#include 

using namespace __gnu_cxx;

下標從0開始,不可以cin,可以cout

由於rope的底層實現,insert,erase,get都是logn的

reverse是o(n)的,所以構造兩個rope來做

push_back(x) 在末尾新增x

insert(pos,x) 在pos插入x

erase(pos,x) 從pos開始刪除x個

replace(pos,x) 從pos開始換成x

substr(pos,x) 提取pos開始x個

at(x)/[x] 訪問第x個元素

rope*his[maxn], his[i]=new rope(*his[i-1]) 可持久化陣列

#define others

#ifdef poj

#include

#include

#include

#include

#include

#include

#include

#include

#include

#endif // poj

#ifdef others

#include

#include

#endif // others

//#define file

#define all(x) x.begin(), x.end()

using

namespace

std;

using

namespace __gnu_cxx;

#define eps 1e-8

const

double pi = acos(-1.0);

typedef

long

long ll;

typedef

long

long ll;

typedef

unsigned

long

long ull;

void umax(int &a, int b)

void umin(int &a, int b)

int dcmp(double x)

void file()

const ll mod = 1e9+7;

ll powmod(ll a,ll b) return res;}

namespace solver

for (int i = 1; i <= m; i++)

for (int i = 0; i < str.size(); i++)

printf("%d%c", str[i], i == str.size() - 1?'\n':' ');

}}int main()

/*1,2,4,6,9,13,17,21,26,32,38,45,53,61,69,77,86,96,106,117,129,141,153,166,180,194,209,225,241,257,273,

*/

牛客多校第5場D Drop Voicing

有乙個1 n的排列,有以下兩種操作 drop 2 將倒數第二個數放到開頭,前面的數向後平移 invert 將倒數第二個數放到開頭,前面的數向後平移 若干連續的drop 2稱為multi drop。計算要使該排列排成1 n所需的最少的multi drop的數量。首先invert可以無條件使用,那麼就可...

牛客多校第5場 G題 subsequence1

題意 乙個s的串中有多少個比t大的子串行 不連續的 要取模。題解 純dp的題目。建立乙個三維dp i j 3 i,j代表了s的前i項有多少種子序列能匹配t的前j個數字。最後乙個維度3,代表有三個矩陣,乙個是s的前i項有多少種子序列能大於t的前j個數字 2 乙個是s的前i項有多少種子序列能等於t的前j...

2018牛客多校3

h diff prime pairs 1 3 1 5 1 7 1 11.2 3 2 5 2 7 2 11.3 3 3 5 3 7 3 11.4 3 4 5 4 7 4 11.打個素數表 用素數篩一遍 includeusing namespace std bool a 11111111 int zs ...