暑期集訓test4

2021-08-03 20:20:04 字數 3785 閱讀 8593

天天考試之後好不容易有一天拿著題解打完了三道題。

嗯,談成績傷感情,只看最後有沒有掌握好了。

我差不多是一條死魚了。。。。。

上題。題目描述

求由 1 到 n 一共 n 個數字組成的所有排列中,逆序對個數為 k 的有多少個。

輸入格式

第一行為乙個整數 t ,為資料組數。

以下 t 行,每行兩個整數 n,k,意義如題目所述。

輸出格式

對每組資料輸出答案對 10000 取模後的結果。

樣例資料

輸入

1 4 1

輸出

3備註

對於 30% 的資料,滿足:n≤12;

對於所有資料,滿足:n≤1000, k≤1000,t≤10。

就是求逆序對,加了dp的思想。

然而狀態轉移方程太虐,一點想錯全盤皆輸。

如下。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define mod 10000

using

namespace

std;

int t,n,k;

int f[1008][1008];

int main()

對就是上面那個方程,分類討論了的那個。

題目描述

乙個長度為 n 的序列,對於每個位置 i 的數 ai 都有乙個優美值,其定義是:找到序列中最長的一段 [l,r] ,滿足 l≤i≤r,且 [l,r] 中位數為ai(我們比較序列中兩個位置的數的大小時,以數值為第一關鍵字,下標為第二關鍵字比較。這樣的話 [l,r] 的長度只有可能是奇數),r-l+1 就是 i 的優美值。

接下來有 q 個詢問,每個詢問 [l,r] 表示查詢區間 [l,r] 內優美值的最大值。

輸入格式

第一行輸入 n 。

接下來 n 個整數,代表 ai。

接下來 q ,代表有 q 個區間。

接下來 q 行,每行兩個整數 l,r (l≤r),表示區間的左右端點。

輸出格式

對於每個區間的詢問,輸出答案。

樣例資料

輸入

8 16 19 7 8 9 11 20 16

8 3 8

1 4

2 3

1 1

5 5

1 2

2 8

7 8輸出

7 3

1 3

5 3 7 3

備註

【資料規模】

對於 30% 的資料,滿足:n,q≤50;

對於 70% 的資料,滿足:n,q≤2000;

對於所有資料,滿足 n≤2000;q≤100000;ai≤200 。

當時做題的時候,首先排序就忽略了第一第二關鍵字,一團糟。

對於題目信誓旦旦的說一定是奇數一臉懵,不知所云。

好不容易寫出來卻發現自定義函式。。。。。嗯咳

上**。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int n,q;

int a[2005],w[2005],ll[4010],rr[4010];

inline

void zql()

cnt=0;

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

for(int j=1-i;j<=i-1;j++)

if(ll[n+j]>=0&&rr[n-j]>=0)

w[i]=max(w[i],ll[n+j]+rr[n-j]+1);

}}int main()

所以記錄兩邊數的大小可以用+1或是-1的方式。

題目描述

一開始你有乙個空集,集合可以出現重複元素,然後有 q 個操作:

1. add s

在集合中加入數字 s 。

2. del s

在集合中刪除數字 s 。保證 s 存在。如果有多個 s,只刪除乙個即可。

3. cnt s

查詢滿足 a&s=a 條件的 a 的個數。

輸入格式

第一行乙個整數 q 接下來 q 行,每一行都是 3 個操作中的乙個。

輸出格式

對於每個 cnt 操作輸出答案。

樣例資料

輸入

7 add 11

cnt 15

add 4

add 0

cnt 6

del 4

cnt 15

輸出

1 2

2備註

【資料規模】

對於 30% 的資料滿足:1≤n≤1000;

對於 100% 的資料滿足:1≤n≤200000;0<s<2^16 。

顯然題目清楚地指明了方向,只需要打出三個操作。

然而加粗的哪句話,當時並沒有出現。(這就不能怪我了(攤手))

還有那個 真·神神秘秘·不知道是什麼·讓人一臉懵·a.

手動微笑。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int n,k,k1,k2;

int a[260][260];

long

long ans=0;

char s[10];

int main()

else

if(s[0]=='d')

else

首先看資料範圍,我們可以將其分成√n個塊,每一次加減操作在每乙個塊中同時進行,而查詢只需要在特定的塊裡查詢,依舊是√n的複雜度。

總複雜度o(√n*√n).

(256=2^8)

來自2017.7.11.的test4 >o<

——我認為return 0,是乙個時代的終結。

ACM暑期集訓4

今天主要學習了線段樹,樹狀陣列,st表,差分,分塊和樹剖 好吧,這個已經沒聽懂了 1.線段樹 線段樹涉及許多應用和思想,以下是今天所學 線段樹主要用於處理一段連續區間的插入,查詢,統計,查詢等操作。複雜度 設區間長度是n,所有操作的複雜度是logn級別。性質 線段樹是平衡的2叉樹,最大深度logn ...

暑期集訓2期4

把已經買過的遊戲給標記一下,然後從第一款遊戲開始買,如果還可以買並且沒有被標記過那麼買 include using namespace std long long n,ans,num,x struct node a 100010 inline intread while isdigit ch res...

暑期集訓心得

7.23 暑期集訓第三天 收穫 1.大概知道了哪些題自己能做,哪些題自己做不出來,這樣就不至於比賽時妄想面面俱到,結果面面不到的尷尬場面 2.平時訓練的題真是太水了,真到比賽時覺得賽題真是天方深不可測!完全比比賽低了不止乙個檔次!所以我決定以 後拿真是的賽題來訓練!3.寫程式怎樣才能一次ac?怎樣才...