涼心的比賽

2021-10-02 04:52:39 字數 3084 閱讀 1269

題意:

給出一串只由『1』和『0』組成的字串;

並只能進行:一、交換相鄰兩數的位置。二、相鄰的「11」可以換成』1『。(可以無限次的進行這兩個步驟)

所以這題又可以分為三種情況:

①:僅由』1『組成:經過無限次的變換,最後一定只剩下』1『;

②:僅由』0『組成:只有0一種情況,最終結果為0;

③:既有』1『又有』0『:最後經過有限次的變換一定能把所有』1『放到一起,最終經過2變換只剩下乙個』1『,零的數量不變,併排在此1的後面。

所以我們可以得到如下**:

#include

using

namespace std;

intmain()

if(num==

0) cout<<

'1';

else

}}

題意:

先給乙個n;

接下來在寫出n個,線段(包含左端點和右端點);

輸出任意乙個含有包含關係的線段(輸出的是每個線段的位置:比如說第乙個線段被第三線段包含即輸出:1 3)。

若是我們上來就用兩個迴圈判斷,那最後一定會超時;

所以我們先用快排,把左端點從小到大排序 (在這之前我們用結構體來輸入線段:包含左端點,右端點,和初始的位置),左端點一樣的就按右端點從大到小排,然後此時我們就只看相鄰的兩個線段就可以了,你這樣乙個迴圈下來雖然裡面的包含關係不是全部,但只要有包含關係,都會被找到至少乙個(因為題意只要我們找到乙個就好,所以這樣做可以滿足題意)。

**如下:

#include

#include

using

namespace std;

struct duana[

300005];

bool

cmp(duan a,duan b)

intmain()

sort

(a+1

,a+1

+n,cmp)

;for

(int i=

2;i<=n;i++)}

cout<<

"-1 -1"

;}

題意:

給出三個數分別表示迷宮的行數n,列數m,和你走的步數k(一開始你位於(1,1));

輸出走完現在所位於的位置;

行走路線:

先從(1,1)走到(n,1);

之後再按蛇形走;

從(n,2)走到(n,m),從(n-1,m)走到(n-1,2),從(n-2,2)走到(n-2,m)····就這麼蛇形走一直走到(1,2)結束;

解題思路:

我們可以分為兩部分:

①:k=n時,我們可以先用j=(k-m)/(n-1),判斷此時往上走的行數,和z=(k-m)%(n-1),在此行走了多少步,j的奇偶我們用來判斷是從(i,2)開始走的還是從(i,m)開始走的(此處的i表示任意一行);

所以我們可以得到如下**:

#include

using

namespace std;

intmain()

else cout<' '<}}

這道題我想了好長時間,也提交了好多次總是過不了,最後只好看了洛谷上的題解。思路模仿的題解上的方法。

這道題主要的的方法就是:生命值翻倍只對一張最合適的卡片一直用是效果最好的。心火卡對生命值與傷害值差值越大的使用越好。

**如下:

#include

#include

using

namespace std;

struct crs[

200005];

bool

cmp(cr a,cr b)

intmain()

sort

(s+1

,s+n+

1,cmp)

;long

long sum=0;

for(

int i=

1;i<=b;i++

)for

(int i=b+

1;i<=n;i++

)long

long ans=sum;

//ans一直用來儲存最大值;

for(

int i=

1;i<=b;i++

) sum=sum-

max(s[b]

.sh,s[b]

.sm)

+s[b]

.sh;

for(

int i=b+

1;i<=n&&b;i++

) cout<}

題意:

一共有n個人,隨即找x名組長,是每個組長的組員數相等,問有多少種分法。

#include

using

namespace std;

intmain()

cout<}

題意:

以座標軸的第一象限為準,被y=x分為上下兩座城池,每次經過每個城門都要交一元錢(城門是在x=y的每個整數點上),主人公最開始在(0,0)點上,只能向右(r)和向上(u)走,問經過一定次數的移動後,一共要交多少錢。

解題思路:

每次到x=y這條線上的時候,做乙個標記,看下一次的移動是否穿過了這條直線。

**如下:

#include

using

namespace std;

intmain()

else

if(x>y&&z==1)

else z=1;

} cout<}

涼心的比賽(一)

線段包含關係 這個題有點遺憾,因為語言設定問題一直沒有過,思路 將各個線段如果右端點不相等就按照右端點小的優先排序,如果右端點相等就按照左端點大的排序,這樣就保證了排序出來的結果上乙個的範圍總比下乙個的大,所以在最後只需要比較上乙個與下乙個是否符合條件即可。include include inclu...

涼心的比賽(一)

b.比賽當時真的想了很長時間,看到大佬的解法,感覺真的好厲害啊 簡單來說,你要比較兩個線段包不包含,你先根據線段的最後排序,從小到大,那麼如果出現乙個線段的開始比之前最大的開始要小,那麼這個線段就包含之前哪個線段 include include using namespace std typedef...

涼心的比賽 003

a 簽到 a題鏈結 思路 由題意可知,11 1。所以最終的輸出結果只會有乙個1 而0的數目不定。因此本題輸出0為主要突破口。一開始莫名其妙老是卡住。就是不輸出結果。這個題目有很多問題,比如資料的輸入只能用字元型別,而不能用整數型別陣列或者整數型別變數。include include using na...