題解 牛客練習賽51

2021-09-26 22:53:07 字數 1636 閱讀 8735

字首a的數量,字尾c的數量,遇到b就計算一次答案。

#includeusing namespace std;

typedef long long ll;

const int n = 1e5+100;

char s[n];

int cnt[n];

int main()

int tmp =0 ;

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

printf("%lld\n",ans);

}

預處理出每個字元後面26個字母第一次出現的位置。

#includeusing namespace std;

typedef long long ll;

const int n = 1e5+100;

char s[n];

int pos[26][n],cnt[26],cur[n][26];

int main()

}while(m--)

}puts(flag?"yes":"no");}}

這題比賽時一臉懵逼。周大佬說是以前打過的一道網路賽原題,好吧,忘記了。搜了一波題解。

} }解法一:比賽時想的是貪心暴力。對於每乙個位置記錄能被哪些羊兒吃以及羊兒能吃到的左端點,然後對這些左端點進行從小到大排序。每次詢問乙個區間時,怎樣給每個位置i分配羊兒呢?貪心選左端點最近的,假設現在有兩個端點l1,l2,l1using namespace std;

const int n = 400+10;

int vis[n];

struct node);

}} }

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

while(q--)

}} printf("%d\n",ans);

}}解法二:

其實這就是乙個二分圖,對於羊兒能到達區間的每乙個點建一條邊,然後在詢問區間內跑一遍匈牙利就行了。

#includeusing namespace std;

vectore[1000];

int vis[1000],match[1000],a[1000],b[1000];

int n,q;

int dfs(int x)

for(int i=1;i<=mx-n%mx;i++)

puts("");

}

牛客練習賽51

theme 給定n與m,要求你用正整數填充n個元素,使得這n個元素的和 m,定義喜愛度為i的個數使得2 i n且a i a i 1 1。1 n 1e5,1 m 1e9 solution 構造題。考慮列舉分成幾個段i,若某段的長度為len,則該段的數為1 len,可知喜愛度應為n i,所以我們的目標是...

牛客練習賽22題解

簡單瞎搞題 不會用bitset,所以沒做出來。實際上還是比較簡單的。include using namespace std bitset 1000005 dp 2 int main cout 2 count 簡單資料結構1 這裡要運用拓展尤拉定理。ab modp ab p b p p 0 modp ...

牛客練習賽64 題解

a 怪盜 1412題目描述 乙個長度為n m k包含n個數字1,m個數字2和k個數字4的陣列,最多可能有多少個子序列1412?如果乙個序列是陣列的子串行,當且僅當這個序列可以由陣列刪去任意個元素,再將陣列中的剩餘元素按順序排列而成。思路 將序列排列成111444441111222222,這樣可以得到...