題目鏈結
a - 小喬和小灰灰
題意:求給定字串中是否出現「xiaoqiao」和「xiaohuihui」
思路:兩次遍歷,將「xiaoqiao」和「xiaohuihui」定義為兩個模式串,在給定字串中找到相應字元繼續往後推,看最後模式串的下標大小就知道是否為子串行了。
#include
using
namespace std;
string s;
intmain()
if(j == len1) ok1 =1;
j =0;
int len2 = t2.
length()
;for
(int i =
0;i < n; i++)if
(j == len2) ok2 =1;
if(ok1 && ok2)
puts()
;else
puts
("emm");
}
b - 牛能和小鎮
題意:給n個座標,根據題給的距離費用公式求出需要連線所有點的最小花費。 公式:| xi
2yi - xj
2yj + yi
2(yi - 2xi) - yj
2(yj - 2xj) |
思路:公式可以變形一下就比較直觀:
|( xi
2yi + yi
2(yi - 2xi) )- ( xj
2yj + yj
2(yj - 2xj) ) |
這樣就可以看出來是兩個點各自的座標經過運算後作差。需要最小的差值,那麼排序之後再逐個作差就好了。
#include
using
namespace std;
long
long x[
100005
], y[
100005
], len[
100005];
int n;
intmain()
sort
(len+
1, len+
1+n)
;long
long ans =0;
for(
int i =
1;i < n; i++
)printf
("%lld\n"
, ans)
;}
c - 裝備合成
題意:乙個裝備需要a、b兩種材料合成,2個a 3個b 或者 4個a 1個b 都可以,求給定a和b的個數時最多可以合成多少裝備。
如果x : y >= 4 : 1,那麼全部使用第二種方案
如果x : y <= 2 : 3,那麼全部使用第一種方案
介於之間的就優先使用 2 : 3 的方案直到 x : y = 4 : 1,那麼就需要計算需要多少次 2:3的操作就有:
變形一下:
n的值或許會取小數,又可能是第一種方法多乙個,也有可能第二種方法多乙個,此時四捨五入一下就可以得到:
#include
using
namespace std;
int _;
long
long x, y;
intmain()
elseif(
(double
)x/(
double
)y <=
(double)2
/(double)3
)else
}}
d - 取石子遊戲
題意:xiaoqiao和xiaohuihui兩個人從石堆裡面拿石子,每次把石子分成兩部分,乙個從中拿走一部分,另乙個繼續把剩下的分為兩部分,再拿走其中的一部分。石堆如果是偶數的話就平均分,不為偶數就有一堆可以多出乙個。當其中乙個人準備拿石子時只剩下乙個,那麼這個人就輸了,求兩個人中誰會贏。(xiaohuihui先手)
思路:博弈的話先找找規律:
1個石子的時候肯定是後手贏;
2個石子的時候,先手拿走1個,剩下1個,所以先手就贏了;
3個石子分為 1 和 2, 先手拿走2個,剩下乙個,先手贏;
4個石子分為 2 和 2,先手拿走兩個,此時,可以看成先手變為後手,2個石子的情形,顯然是2個石子的先手贏,也就是本局的後手;
5個石子分為 2 和 3,先手拿走哪乙個之後剩下的都是對照前面的 2 和 3,得出本劇後手贏
就這樣一直推可以得出乙個結論,石堆一分為二之後,兩堆石子對應之前有後手贏的時候,本局先手才可以贏,否則後手贏。
看資料範圍之後這樣一直遞推肯定超時,那麼就想如果可以知道給定的n屬於先手贏還是後手贏的範圍,直接查詢的話就會快很多,在常數級就可以得出答案。
看前面幾個樣例,2和3 是先手贏,4、5、6是後手贏的範圍,4 = 2+2,6 = 3+3, 5 = 2+3;
再看後面的: 7 - 13是先手的範圍:7 = 3+4,9 = 4+5, 11 = 5+6, 13 = 6+7; 8 = 4+4, 10 = 5+5, 12 = 6+6;規律應該就很顯然了,從已知的範圍可以求出後面的範圍,比如4、5、6三個數逐個相加的個數為6-4=2; 各自相加的個數為6-4+1=3;那麼後面的範圍就是2+3=5,這樣就可以預處理 1e18之內的先後手贏的範圍,之後輸入時查詢就可以了。
#include
using
namespace std;
const
long
long n =
1e18
;vector long
long
,long
long
>
> vc;
int _;
long
long n;
intmain()
scanf
("%d"
,&_)
;while
(_--)}
}}
牛客練習賽59做題心得
題目鏈結 這道題有很多種做法,我在這裡採用的是動態規劃的方法。我們可以讓原字串和xiaoqiao,xiaohuihui。這裡是我的部落格,有興趣的朋友可以關注一下。include include include include include using namespace std const in...
牛客練習賽59 B 牛能和小鎮
題目描述 在牛國有2個小鎮編號1,2,3.n 1,n。用二維平面來表示每個小鎮的位置,第個小鎮的位置為 xi,yi 牛能做為牛國的國王,決定給小鎮之間建設一些道路,以便於任意小鎮之間都能相互到達,在第個小鎮和第個小鎮之間建設一條道路的花費是 xi xi yi xj xj yj yi yi yi 2 ...
牛客練習賽9
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...