csp模擬補題

2021-10-04 03:51:22 字數 3491 閱讀 5116

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

————————————————

解題過程

第一次模擬唯一一道提交上去的題。菜到令人髮指,前途一片黑暗。

利用ascii碼計算距離,就是文字之間的距離如果大於13就逆時針,小於13就順時針轉,有26個字母,逆時針的距離是26-順時針距離。

雖然很簡單但是還在找bug上浪費許許多多時間,說明很不熟練需要多寫**……

#include

#include

#include

using

namespace std;

intmain

(int argc,

char

** ar**)

cout<

return0;

}

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

————————————————

反思

如果腦子不夠解不開密碼鎖又想開門,那就只能暴力。如果太弱那麼連暴力的資本都沒有。雖然寫了暴力方法但是沒能交上去,在最後一分鐘被**拒之門外,碼力弱的像只猴子。 後來補題的時候發現暴力方法能過3個點,改了改還過了4個。雖然後來想到了可能和奇偶數有關但是還是不ok

解題過程

所有的兩個生煎的買法都可以被方案1解決,用方案2是沒有意義的,也就是說生煎只有0、1(奇)、2(偶)三種狀態,輸入的時候把多餘的生煎私吞轉化為0、1、2 。

因為要確保最後沒有券浪費所以從最後一天開始向前看,如果最後一天是2或0則前一天不需要券,如果是1則前一天買了乙個券,則前一天要買的生煎數-1,如果出現某一天生煎為負說明沒有方法則退出迴圈,如果到迴圈結束生煎數全部正常,則可以輸出yes。

第一天生煎數不可以是1,因為只有兩種情況會是1,第一天偶數第二天奇數(一張券不夠兩張浪費),第一天奇數以後都是偶數(最後一天浪費券)

#include

#include

#include

#include

#include

using

namespace std;

int a[

100020];

intmain

(int argc,

char

** ar**)

for(

int i=n-

1;i>

0;i--)if

(a[i]%2

==0)if

(a[i]==1

)}if(a[0]

==1) f=1;

if(f==1)

cout<<

"no"

;else

cout<<

"yes"

;return0;

}

眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著一種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀人的智商,進行降智打擊!

宇宙射線會在無限的二維平面上傳播(可以看做乙個二維網格圖),初始方向預設向上。宇宙射線會在發射出一段距離後**,向該方向的左右45°方向**出兩條宇宙射線,同時威力不變!宇宙射線會**n次,每次**後會在**方向前進ai個單位長度。

現在瑞神要帶著他的小弟們挑戰苟狗,但是瑞神不想讓自己的智商降到普通本科生那麼菜的水平,所以瑞神來請求你幫他計算出共有多少個位置會被"降智打擊"

————————————————

反思

補題的時候才來的及讀題的一道題,知道自己菜所以也沒有在模擬時拿分的想法 ,結果就交了乙個題。碼力嚴重不足,知識嚴重不足,智商嚴重欠費 。

解題過程

其實每次移動45°的射線只有8種**狀態(上,上右,右,下右,下,下左,左,上左 )像在之前走迷宮的時候一樣 用陣列儲存8個移動狀態方便移動。

用結構體表示位置狀態,用乙個陣列reach記錄情況避免重複情況(起點方向次數一致時是重疊的)下圖(不是苯環 )紅圈圈的地方開始重疊。

用set來記錄位置,可以避免記錄重疊位置。

每個射線**45°(當前**狀態向右或下偏轉)和-45°(向左或上偏)

遞迴求解。**次數達到後輸出set的size,就是所有經過的位置和。

=;//上,上右,右,下右,下,下左,左,上左

int yc[8]

=;bool reach[

700]

[700][

32][8

]=;int n=0;

struct xy

bool

operator

<

(const xy& p)

const

else

return y

;set vis;

void

splitter

(int ind,

int times,xy pos )

splitter

((ind+7)

%8,times+

1,pos)

;//**

splitter

((ind+1)

%8,times+

1,pos);}

}int

main

(int argc,

char

** ar**)

xy begin;

begin.x=

300; begin.y=

300;

splitter(0

,0,begin)

; cout<

size()

;return0;

}

2020 8 8 模擬賽補題

pta 7 10 排座位 這道題中,因為朋友關係是可以傳遞的,所以我們用並查集來儲存朋友關係。敵對關係不可傳遞,所以我們用乙個鄰接表儲存敵對關係。再根據題目要求進行輸出 include include include include using namespace std int pre 1010 ...

csp模擬 模擬測試16

fdasds include using namespace std define cle a memset a,0,sizeof a inline int read const int mod 1e9 7,maxn 1e3 100 int n,m,ans 0 int f maxn maxn int...

csp模擬 模擬測試4

t1是暴力分,t2當時沒有花太多時間去推導,一見到t2就十分害怕,便放過了它,t3的話花了大量的時間推了乙個錯誤的解,以後對於t2這種題不要未戰先怯,一點一點的去推導!那一天我們在教室裡許下約定。我至今還記得我們許下約定時的歡聲笑語。我記得她說過她喜歡吃餅乾,很在意自己體重的同時又控制不住自己。她跟...