8 5 紀中集訓 Day5

2022-07-23 05:30:23 字數 4335 閱讀 2022

第一行包含兩個整數r和c(1<=r,c<=25)。

接下來r行每行c個字元描述被偷之後的形狀,字元分為以下三種:

(1)『.』表示空;

(2)字元『|』(ascii為124)、『-』、『+』、『1』、『2』、『3』、『4』描述管道的形狀;

(3)『m』和『z』表示城市,兩個都是只出現一次。

輸入保證石油的流向是唯一的,只有乙個管道跟m和z相連,除此此外,保證沒有多餘的管道,也就是說所有的管道在加進被偷的管道後一定都會被用上。

輸入保證有解而且是唯一的。

輸出被偷走的管道的行號和列號以及管道的型別。

輸入1:

3 7.......

.m-.-z.

.......

輸入2:

3 5..1-m

1-+..

z.23.

輸入3:

6 10

z.1----4..

|.|....|..

|..14..m..

2-+++4....

..2323....

..........

輸出1:

2 4 -

輸出2:

2 4 4

輸出3:

3 3 |

簽到題,不過考試時候讓我簽到得有點久,導致後面題目來不及做。

模擬暴力,不多說。

我覺得我的**又長又臭

#include#include

using

namespace

std;

intn,m;

int next[4][2]=,,,};

char tu[25][25

];void find_wrong(int x,int

y)void work(int x,int y,int di)

if(di==2)

if(di==3)

if(di==4

)

}int

main()

if(i==4

)

}return0;

}

第一行包含兩個整數n(12<=n<=10000)和k(1<=k<=1000)。

接下來k行,每行包含三個整數x(1<=x<=n^2)、r和c(1<=r,c<=n),描述需要移動的數以及目標位置。

alice必須按照輸入順序依次移動。

輸出k行,每行輸出乙個整數,表示操作次數。

輸入1:

4 16 3 4

輸入2:

4 26 3 4

6 2 2

輸入3:

5 31 2 2

2 2 2

12 5 5

輸出1:

3輸出2:35

輸出3:25

3

考試時候把題目看錯了,以為是要將所有目標塊同時歸位,沒有想到這麼簡單。

暴力,把每次的操作記錄下來,每詢問乙個數時,先將它把之前與它有關的操作做一遍,然後在處理。

後面改的時候由於乙個地方沒理解清楚,所以**略長,不要在意。

#include#include

using

namespace

std;

intn,k,sx,sy,nowx,nowy,ans,sl;

int zx[1010],r[1010],c[1010

];struct

thmxy[

2020

];void

move()

if(sy==xy[i].dir && xy[i].kg==-1

)

i++;

}}int

main()

if(sy>c[i])

if(sxif(sx>r[i])

printf(

"%d\n

",ans);

}return0;

}

學生都很喜歡灌水,第一天只有alice給她的每個朋友灌了一次水,從第二天開始,所有學生(包括alice)將會有規律地去灌水:

•如果前一天被灌了奇數次的水,他們將會給每個朋友灌一次水;

•如果前一天被灌了偶數次的水,他們將會給每個朋友灌兩次水。

學生編號為1到n,alice為1號,學生之間的朋友關係會給出。

計算h天後一共灌了幾次水。

輸入一行包含兩個整數n和h(1<=n<=20,1<=h<=10^9),表示學生數和天數。

接下來n行,每行包含n個『0』或『1』,(a,b)處的字元表示a和b的關係,『1』表示是朋友關係,『0』表示不是。注意自己和自己不是朋友關係,輸入保證該矩陣是對稱的。

輸出h天後一共灌水的數量。

輸入1:

4 10110

1001

1001

0110

輸入2:

4 20110

1001

1001

0110

輸入3:

5 301000

10110

01000

01001

00010

輸出1:

2輸出2:

14輸出3:

26

【樣例解釋】

樣例2中,第一天alice灌了2次水,第二天學生1和學生4給學生2和學生3都灌了2次水,而學生2和學生3給學生1和學生4各灌水1次,2天一共灌了12次水。

【資料範圍】

50%的資料 h<=1000。

考試時只瞄了一下題,來不及思考,所以沒有思路。

看一下資料範圍,不難發現此題每個人的奇偶情況可以用二進位制來壓縮狀態,然後找迴圈節來巧妙解決。

不過我改了乙個晚上,因為xhs的**欠砍,我拿他的**對著除錯,結果狀態一直對不上,結果最後他告訴我他01所表示的奇偶和我是相反的,臭逼!然後我改了乙個字母就a了。(不過我的**比他短,嘿嘿)

#include#include

#include

#define ll long long

using

namespace

std;

ll n,h,jt,k,ans;

ll keep[

2000020],book[2000020

];char ch[21][21

];unsigned sl[

21];

vector

rel[21

];void

work(ll x)

ll interesting(ll i,ll jt)

intmain()

printf(

"%lld

",ans);

return0;

}

給出每天的植物的座標,計算每天長出多少新花。

第一行包含乙個整數n(1<=n<=100000),表示天數。

接下來n行,每行兩個整數l和r(1<=l<=r<=100000),表示植物的左右邊界。

輸出每天長出新植物後增加新花的數量。

輸入1:

41 4

3 71 6

2 6輸入2:

51 3

3 53 9

2 43 8

輸出1:01

12輸出2:00

032

線段樹,很明顯,but 考試時卻沒有時間打,唉。

#include#include

#define maxn 100010

using

namespace

std;

intn,ans,max;

inttj[maxn];

intl,r,x[maxn],y[maxn];

struct

tree

tree[

8*maxn];

void build(int l,int r,int

k)void pushdown(int

k)int find(int l,int r,int k,int

g)void add(int l,int r,int

k) mid=(r+l)/2

;

if(l<=mid)

add(l,mid,k*2

);

if(midadd(mid+1,r,k*2+1

); tree[k].zhi=tree[k*2].zhi+tree[k*2+1

].zhi;

}int

main()

return0;

}

紀中集訓 Day 3

這幾天一直堅持寫blog 加油吧!早上醒來,說了 我要ak 其實只是蒟蒻的妄想罷了qaq 然後為了不立flag,改成了我要rank 1 然後依舊是有一題不會做qaq 好弱,爭取有一次能全會做吧qaq 然後就230了 rank1 第3題果真是爆搜不過就算寫也難寫啦啦啦 a組的題又是喪病,t1數學題什麼...

紀中集訓 Day7 Day8

t1 大水題呀!t2 還好 又少判斷了,emmmm t3 t4 放棄掙扎 權勢二進位制 題目 乙個十進位制整數被叫做權勢二進位制,當他的十進位制表示的時候只由0或1組成。例如0,1,101,110011都是權勢二進位制而2,12,900不是。當給定乙個n nn的時候,計算一下最少要多少個權勢二進位制...

8 18 紀中集訓 Day18

第一行乙個整數n,表示除根節點之外的其他節點的數量。接下來n行,第i 1行有三個整數fi ei wi,分別表示i號節點的父節點 i號節點上封印石的能量需求 連線節點i與fi的邊最多能傳遞多少能量。最多能滿足多少顆封印石的能量需求。4 0 3 2 0 100 100 1 1 1 2 75 80 2 對...