程式設計思維與實踐CSP M1 補題

2021-10-04 04:10:04 字數 3152 閱讀 1411

題目描述

咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需要轉多少次。

加個示意圖

輸入格式

輸入只有一行,是乙個字串。

輸出格式

輸出最少要轉的次數。

樣例輸入

zeus

樣例輸出

18題解

本題要點在於26個字母要求最少次數,即可通過字串運算得到每個字元,在判斷當前字元與目標字元距離確定最小距離

#include

using

namespace std;

intmain()

first = p[i]

; times +

= cnt;

} cout<}

題目描述

咕咕東考試周開始了,考試周一共有n天。他不想考試周這麼累,於是打算每天都吃頓好的。他決定每天都吃生煎,咕咕東每天需要買a_ia i個生煎。但是生煎店為了刺激消費,只有兩種購買方式:①在某一天一次性買兩個生煎。②今天買乙個生煎,同時為明天買乙個生煎,店家會給乙個券,第二天用券來拿。沒有其餘的購買方式,這兩種購買方式可以用無數次,但是咕咕東是個節儉的好孩子,他訓練結束就走了,不允許訓練結束時手裡有券。咕咕東非常有錢,你不需要擔心咕咕東沒錢,但是咕咕東太笨了,他想問你他能否在考試周每天都能恰好買a_ia i個生煎。

輸入格式

輸入兩行,第一行輸入乙個正整數n(1<=n<=100000)(1<=n<=100000),表示考試周的天數。

第二行有n個數,第i個數a_i(0<=a_i<=10000)a i(0<=a i<=10000)表示第i天咕咕東要買的生煎的數量。

輸出格式

如果可以滿足咕咕東奇怪的要求,輸出"yes",如果不能滿足,輸出「no」。(輸出不帶引號)

樣例輸入1

41 2 1 2

樣例輸出1

yes樣例輸入2

31 0 1

樣例輸出2

no題解

很明顯的貪心演算法,既然不計花費,且只需判斷是否能滿足要求,可根據每天需要生煎個數判斷:若為偶數,則不買劵;若為奇數,則買乙個劵;如果劵過期,則直接判定失敗;

#include

using

namespace std;

intmain()

int ticket =0;

int unuse =0;

for(

int i =

0; i < n; i++

)else

if(sum[i]

< ticket)

unuse =1;

else

if(sum[i]

== ticket)

ticket =0;

}else}if

(ticket ==

0&& unuse ==0)

printf

("yes");

else

printf

("no");

}

題目描述

眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著一種叫做苟狗的生物,這種生物天 生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀 人的智商,進行降智打擊! 宇宙射線會在無限的二維平面上傳播(可以看做乙個二維網格圖),初始方向預設向上。宇宙射線會在發射出一段距離後**,向該方向的 左右45°方向**出兩條宇宙射線,同時威力不變!宇宙射線會** 次,每次**後會在**方向前進 個單位長度。 現在瑞神要帶著他的小弟們挑戰苟狗,但是瑞神不想讓自己的智商降到普通本科生 那麼菜的水平,所以瑞神來請求你幫他計算出共有多 少個位置會被"降智打擊"

輸入描述

輸入第一行包含乙個正整數 ,表示宇宙射線會** 次 第二行包含n個正整數 ,第 個數 表示第 次**的宇宙射線會在它原方向上繼續走多少個單位長度。

輸出描述

輸出乙個數 ,表示有多少個位置會被降智打擊、

題解採用遞迴實現dfs,每個點做兩種標記:乙個標該點是否經過,乙個標記該點是否**;**分為兩個陣列:x軸方向和y軸方向,每個**點分別進行左右**;每經過判斷前進一次計數+1;

#include

using

namespace std;

int dx[8]

=;//x軸**順序

int dy[8]

=;//y軸**順序

int vis[

500]

[500]=

;//標記射線經過與否並初始化

int sp[

500]

[500][

30][8

]=;//標記射線是否**並初始化

int a[30]

=;int sum =0;

int n;

void

dfs(

int x,

int y,

int times,

int de)

else

continue;}

sp[x]

[y][times]

[de]=1

;int nextx = x + dx[de]

* a[times]

;int nexty = y + dy[de]

* a[times]

;int leftde =

( de +7)

%8;int rightde =

( de +1)

%8;dfs

(nextx,nexty,times +

1,leftde)

;dfs

(nextx,nexty,times +

1,rightde);}

}int

main()

dfs(

250,

250,0,

0);printf

("%d"

, sum);}

/*44 2 2 3

39*/

程式設計思維與實踐 CSP M1 補題

a 咕咕東的奇遇 題意咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需...

程式設計思維與實踐 CSP M1補題

題目描述 咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需要轉多少次。...

程式設計思維與實踐 CSP M1補題

思路 這一題沒有太多難度,就是模擬實際的轉盤,運用好模運算,注意好細節即可。include char input 20000 char table 27 int main int word 0 int needle 0 int count 0 while input word 0 else word...