程式設計第二次CSP模測

2021-10-05 02:46:36 字數 3487 閱讀 1568

to sum up

模測只拿了130,超級遺憾,第一題因為少想了一種情況爆0了。感覺獨自思考問題的能力以及做題經驗有所欠缺。列一下模測題目。

對於乙個序列,判斷是否存在乙個數 ,使得一些數加上 ,一些數減去 ,一些數不變,使得整個序列中所有的數相等,其中對於序列中的每個位置上的數字,至多只能執行一次加運算或減運算或是對該位置不進行任何操作。

輸入第一行是乙個正整數 表示資料組數。 接下來對於每組資料,輸入的第乙個正整數 表示序列 的長度,隨後一行有 個整數,表示序列 。

2

51 2 3 4 5

51 2 3 4 5

輸出共包含 行,每組資料輸出一行。對於每組資料,如果存在這樣的k,輸出"yes",否則輸出「no」。(輸出不包含引號)

no

no

需要注意的就是資料範圍:

需要開long long

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int max=

1e5;

int t,n;

long

long a[max]

;long

long t[max]

;int num;

void

whe(

long

long u)

t[num]

=u; num++;}

intmain()

if(num<3)

cout<<

"yes"

;else

if(num==3)

else

cout<<

"no";if

(i!=t-1)

cout<

}return0;

}

好不容易躲過了資料範圍的坑,卻沒考慮到序列的值可以都一樣。

思路很簡單,主要是計數,如果序列只有兩個值或者都一樣,一定可以。如果有三種值,需要計算這三個值是否形成等差數列。大於三個值則一定不可以。

現在給定乙個字串,字串中包括26個大寫字母和特殊字元』?』,特殊字元』?'可以代表任何乙個大寫字母。現在tt問你是否存在乙個位置連續的且由26個大寫字

母組成的子串,在這個子串中每個字母出現且僅出現一次,如果存在,請輸出從左側算起的第乙個出現的符合要求的子串,並且要求,如果有多組解同時符合位置最靠左,則輸出字典序最小的那個解!如果不存在,輸出-1!

說明:字典序 先按照第乙個字母,以 a、b、c……z 的順序排列;如果第乙個字母一樣,那麼比較第二個、第三個乃至後面的字母。如果比到最後兩個單詞不一樣長(比如,sigh 和 sight),那麼把短者排在前。

輸入只有一行,乙個符合題目描述的字串。輸

abc??fghijk???opqr?tuvwxy?
輸出只有一行,如果存在這樣的子串,請輸出,否則輸出-1

abcdefghijklmnopqrstuvwxyz
主要用尺取法,先選定前26個字母,統計每個字母的個數和 ?的個數。需要觀察兩個值,乙個是個數為0的字母的數量,另乙個是 ? 的個數。如果兩個值相等,則滿足條件。如果不滿足,兩個邊界l和r同時有益,更新數量值。當滿足條件時,從26個字母陣列中,將陣列值為0的字母按序輸出。

#include

#include

#include

using

namespace std;

int l,r;

string list;

int num1,num2;

int a[26]

;void

init()

for(

int i=

0;i<

26l;i++)if

(a[i]==0

)}void

move()

l++,r++;if

(list[r]

=='?'

) num2++

;else

}int

main()

//輸出

int tar=0;

if(r==n-

1&& num1!=num2)

else

}else

cout<

}return0;

}

自然增長序列1 12 123 1234 12345… 需要查詢該序列第n項的值並輸出。

輸入由多行組成。

第一行乙個整數q表示有q組詢問(q<500)

接下來第i+1行表示第i個輸入 ,表示詢問第ki項數字。(k<1e18)

513

2038

56

輸出包含q行。第i行輸出對詢問ki的輸出結果。

125

20

整個過程分為三步,第一步是將原自然增長序串拆分,從1到第一次出現k定為第k個子串。然後用二分法確定輸入的數w在第幾個子串中,(利用等差數列求前n項和的方法)。最後確定w在子串中具體屬於哪乙個數字的哪一位。

#include

#include

using

namespace std;

const

long

long n =

1e9;

long

long l,r,mid,ans;

//二分法確定子串行

long

long

getlist

(long

long x)

n=x-pwr/10+

1;nsum+

=(sum+d)

*n+n*

(n-1)/

2*d;

return nsum;

}long

long

speci

(long

long x)

x-=getlist

(ans)

;return x;

}//二分法確定n在子串行中的位置

long

long

findnthdigit

(long

long p)

else}if

(y==0)

return sum%10;

else

return sum%10;

}}long

long n,k;

intmain()

return0;

}

第二次csp模測 1題 2題

2.hrz學英語 相較於咕咕東,瑞神是個起早貪黑的好孩子,今天早上瑞神起得很早,刷b站時看到了乙個序列 他對 這個序列產生了濃厚的興趣,他好奇是否存在乙個數 使得一些數加上 一些數減去 一些數不 變,使得整個序列中所有的數相等,其中對於序列中的每個位置上的數字,至多只能執行一次加運算或 減運算或是對...

CSP第二次模擬 A

相較於咕咕東,瑞神是個起早貪黑的好孩子,今天早上瑞神起得很早,刷b站時看到了乙個序列 他對 這個序列產生了濃厚的興趣,他好奇是否存在乙個數 使得一些數加上 一些數減去 一些數不 變,使得整個序列中所有的數相等,其中對於序列中的每個位置上的數字,至多只能執行一次加運算或 減運算或是對該位置不進行任何操...

第二次 衝刺 小測

專案組 完成內容 遊戲策劃 完成了部門基礎分值的設計,以及部分的課堂遊戲策劃,除錯了一些不匹配的bug 遊戲美工 前端組 在android studio上完成一兩個介面的基礎,並搭建了真機測試的環境 後端繼續學習控制項的使用 專案組完成內容 遊戲策劃 完成課堂遊戲的內容設計 遊戲美工 前端組 繼續完...