暑期集訓2期5

2021-10-23 22:10:16 字數 2111 閱讀 9406

小李是希望小學六年級的學生,在一次數學課上,張老師出了一道題,小李很快就答出來了。這個題目是這樣的:給定乙個正整數 n,請求出 2 ~ n之間長度最長的、成等差數列的素數(質數)。例如:當 n 的值為 40 時,在 2 ~ 40 之間的全部素數有: 2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 ,23 , 29 , 31 , 37 。其中公差(每兩個數之間的差)為 1的素數數列為 2,3 ,其長度(素數的個數)為 2 ; 公差為 2 的素數數列為 3,5,7 ,其長度為3 ; ⋯⋯

用素數篩把所有的素數篩出來,然後列舉公差,如果滿足那麼可以繼續,否則記錄答案

*輕而一舉地就可以猜到遞推式,dp[n]=dp[n-1]+dp[n-2]2,然後發現資料太大,那麼多開一位寫高精

#include

using

namespace std;

int n;

inline

intread()

int dp[

150]

[1000];

inline

voidgj(

int i,

int j,

int k)

//高精

}int

main()

簡簡單單的dfs(**師)+剪枝

先是用二維矩陣字首和,算出從1,1開始到i,jblack的數目和white的數目然後列舉邊長和起點,算出black與white的差值,如果<=1,那麼可以記錄答案

#include

using

namespace std;

int ww,bb,n,m,ans;

int x,w[

350]

[350

],b[

350]

[350];

intmain()

for(

int k=

2;k<=

min(n,m)

;k++

)for

(int i=k;i<=n;i++

)for

(int j=k;j<=m;j++

)

cout<

return0;

}

暑期集訓2期3

直接列舉 3000到3000也沒關係。列舉最後的x,容易發現x 的取值不會在序列取值之外。不開long long 會掛掉30分。題目大意兩排數,你的目標是將數值相同的放到一起。滾動不消耗代價。提起消耗的代價為數值。你需要最小化提起的數值限制,也就是移動的最大值盡可能小 30分演算法 一旦乙個數值使用...

暑期集訓2期6

如果二叉樹的左右子樹的結構是對稱的,即兩棵子樹皆為空,或者皆不空,則稱該二叉樹是對稱的。程式設計判斷給定的二叉樹是否對稱。例 如下圖中的二叉樹t1是對稱的,t2是不對稱的。二叉樹用順序結構給出,若讀到 則為空,二叉樹t1 abcde,t2 abcd e,如果二叉樹是對稱的,輸出 yes 反之輸出 n...

暑期集訓2期4

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