題意:給出一串只由『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...