涼心的比賽(一)

2021-10-02 02:52:13 字數 2066 閱讀 4716

線段包含關係

這個題有點遺憾,因為語言設定問題一直沒有過,?

思路:將各個線段如果右端點不相等就按照右端點小的優先排序,如果右端點相等就按照左端點大的排序,這樣就保證了排序出來的結果上乙個的範圍總比下乙個的大,所以在最後只需要比較上乙個與下乙個是否符合條件即可。

#include

#include

#include

using

namespace std;

int n;

struct f

s[300005];

bool

cmp(f a,f b)

intmain()

sort

(s,s+n,cmp)

;for

(int i=

0;iprintf

("-1 -1\n");

return0;

}

地下城還有蘿拉

找規律,分三種情況:1.所走的步數少於行數,即僅在第一列移動

2.對於所走的步數大於行數,先減去在最左邊一列走的步數,然後除以列數減一的差得ans,分兩種情況:a.ans為偶數,也就是從左往右走

b.ans為奇數,也就是從右往左走

#include

using

namespace std;

intmain()

else

return0;

}

f - 法法要穿過大門 codeforces - 935b

判斷一下現在與前一步是否在同乙個區域即可,設定兩個變數進行儲存現在與上一步的區域,但是要特別注意的是剛開始位置在對角線,它不屬於任何乙個區域,所以最後輸出結果要減一

#include

#include

using

namespace std;

int n;

char s;

int x;

int y;

int flag;

int flag2;

intmain()

else

if(s==

'r')

} cout<1

}

法法在分配工作

簡單的判斷有多少質因子的問題

#include

#include

using

namespace std;

intmain()

cout<1

}

最小的二進位制數

由於題目中說出現兩個1就可以抵消為乙個,所以不難推出如果出現1那麼最後抵消完之後就只剩乙個1,然後再在後邊補上一共多少個0就ok啦,特別判斷沒有1的情況。

#include

#include

using

namespace std;

char s[

105]

;int

main()

if(sum2==0)

cout<<

"0"

return0;

}

fifa and fafa

題意就是給出乙個圓的半徑及圓點以及另外乙個點a,求出不超過原來的圓以及不包含這個點的乙個新的圓。

分三種情況:1.如果a在圓外或圓上,那麼直接輸出原來的圓的資訊。

2.如果a恰好與圓點重合就輸出半徑為原來的圓的一半,圓點不變的圓新圓。

3.一般情況先求出a與圓點的距離d,那麼新圓的半徑就是(d+r)/2,新圓的圓心可以通過圓點與a和兩個圓的交點c組成的相似三角形求出c的座標,最後再利用中點座標公式求出。

#include

#include

#include

using

namespace std;

double r,x1,y1,x2,y2;

double m,x,y;

intmain()

return0;

}

涼心的比賽(一)

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

涼心的比賽

題意 給出一串只由 1 和 0 組成的字串 並只能進行 一 交換相鄰兩數的位置。二 相鄰的 11 可以換成 1 可以無限次的進行這兩個步驟 所以這題又可以分為三種情況 僅由 1 組成 經過無限次的變換,最後一定只剩下 1 僅由 0 組成 只有0一種情況,最終結果為0 既有 1 又有 0 最後經過有限...

涼心的比賽 一 補題

題目鏈結 題意 有n個物品,能進行a次操作一和b次操作二,每個物品有乙個hp和damage,操作一為把某個物品的hp變為原來的兩倍,操作二為把某個物品的hp賦值給它的damage,問這n個物品的damage的總和最大是多少。思路 證明出來a操作應該都使用給同乙個物品最優,然後按b操作的最優方案排序,...