2023年04月05日 個人賽

2022-08-11 13:18:21 字數 3723 閱讀 4458

題意:題意比較簡單,簡單描述一下就是乙個小朋友去排隊,他的前面至少有a個人,後面最多有b個人,求這個小朋友可能在的位置有幾個,輸出可能的數量。

題解:簡單的模擬一遍即可

**:

1 #include2 #include

3 #include4 #include5

#define ll long long

6using

namespace

std;

7int

main()15}

16 cout17return0;

1819 }

題意:這一題的題意比較簡單:題目給你n個長度長度為k的數字,要求讓你對其進行排列組合,這裡要注意的是所有的數字在進行排列組合的的規則是一樣的。要你求其中最大值減去最小值的差最小。

題解:這一題有很多解法比如利用dfs求出所有的排列種類,記錄每種排列中的最值差,最後求其最小值即可,還有乙個簡便的方法:利用:next_permutation(a, a + n)函式它的作用是求出長度為n的陣列a中所有的排列的秦情況,這種比dfs簡便多了,然後就是求出每種排列方式下的最值並求差即可。

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6const

int nk_max = 44;7

const

int inf = 0x3fffffff;8

intn, k;

9char

number[nk_max][nk_max];

10int

bit[nk_max], sum, num_max, num_min, ans;

11int

main()

16for(int i = 0; i < k; i ++)

20 ans = inf;//

初始化為極大值

21do //

化成 int 型

28 num_max =max(num_max, sum);

29 num_min =min(num_min, sum);30}

31 ans = min(ans, num_max - num_min);//

更新最後大的答案

32 } while(next_permutation(bit, bit + k));//

求全排列

33 printf("

%d\n

", ans);34}

35return0;

36 }

題意:這一題也是一道簡單的題目,主要就是要看清楚它的變化的規則:當單詞全為大寫的時候,就將所有的字母變為小寫。當單詞的第乙個字母為小寫的時候,後面的字母全為大寫,將第乙個字母改為大寫,將之後的字母改為小寫。其餘其他的形式不要改變,在這個題中要注意細節。

題解:模擬,排除每種情況即可。

**;法一:

1 #include2 #include

3 #include4 #include5

#define ll long long

6using

namespace

std;

7int

main() else

if(ptr[i]>='

a'&&ptr[i]<='z'

)17}18

if(an==0&&f!=0||ptr.length()==1

)else

if(ptr[0]>='

a'&&ptr[0]<='z'

)24for(int i=1;i)27}

28 cout<29return0;

3031 }

1 #include2 #include3 #include4

#define ll long long

5using

namespace

std;

6ptr)11}

12return1;

13}14ptr)19}

20return ptr[0]>='

a'&&ptr[0]<='z'

;21}22

intmain() else

31 }elseelse

42 }else

46} 47}

48}49}

50 cout<51return0;

52 }

題意:大概的意思就是給你一串數,要你判斷這串數中有幾對數可以相加之和為 0

題解:由於資料範圍比較小,我們可以用陣列來計算每個數出現的次數,可以把每個元素都加上10,就可以將他們全部化為正數,在進行判斷的時候,我們只需記錄i 與20-i的乘積之和即可,但要注意對特殊情況的判斷。

**:

1 #include2

#define ll long long

3using

namespace

std;

4 ll ans=0;5

intmain() ;

9for(int i=0; i)

1314

for(int i=0; i<=10; i++) else21}

22}23 cout24return0;

25 }

題意:這一題其實是乙個排列組合的問題,只不過加了乙個限制,男生的人數不是少於4,女生的人數不少於1,組成的團隊的人數為t。

題解:這裡唯一要注意的就是組合數的計算方法,這裡先達標打表楊輝三角,組合數和楊輝三角形表是一一對應的,

**:法一:

1 #include2 #include

3 #include4 #include5

#define ll long long

6using

namespace

std;

7 ll f[110][110];8

void

9 memset(f,0,sizeof

(f));

10for(int i=0; i<=30; i++)

14for(int i=1; i<=30; i++) 18}

19}2021

intmain() else

33 printf("

%i64d\n

",sum);34}

35return0;

36 }

法二:

1 #include2 #include3 #include4

#define ll long long

5using

namespace

std;

6 ll conb[250][250];7

//(n<25,m<25)

8 ll f[110][110];9

void

10 memset(f,0,sizeof

(f));

11for(int i=0; i<=30; i++)

15for(int i=1; i<=30; i++) 19}

20}21 ll sum=0;22

intmain()

29 cout30return0;

31 }

2023年04月25日個人賽

a romaji 題意 本題比較簡單,給你乙個字串,要你判斷字串中的每乙個子音字元後面是否有乙個母音字元。題解 簡單簽到題,模擬即可。include include include define ll long long using namespace std intmain else if f 1...

2023年04月19日個人賽

題意 這個題意就是給你乙個錯誤的排序方式,要求你在它的這個排序方式下判斷是否存在正確的執行結果。若存在正確的結果,則輸出 1,否則輸出乙個例子說明是錯誤的。題目的輸入是元素的個數n。題解 這一題比較有意思,很容易判斷出只有當n 1 or n 2時執行結果是正確的,其餘的情況都是錯誤的。這樣我們就構造...

2023年1月17日sdut vj個人賽

題目鏈結 簽到題。include using namespace std const int n 1e6 10 int n,k int a n int main else maxx max maxx,cnt cout maxx endl return0 題目鏈結 找能裁剪的最大的正方形,邊長從1開始...