c、石子遊戲
思路:利用差分陣列將區間修改轉化為兩個端點處的單點修改,按照每次新增乙個長度為 k 的區間的規則,首先從左到右將所有點補到該點左邊比它高的點的高度,再從右到做將所有點補到該點右邊比它高的點的高度,最後特判一下第 n-k+1 個點(因為差分時以該點為左端點的區間右端點無法判斷)
然後如果能夠達到同一高度,說明從陣列中 2~n 部分的差分值都為0
**:
#include
#define int long long
using
namespace std;
const
int n =
1e5+5;
int a[n]
, b[n]
;signed
main()
int ans =0;
for(
int i =
2; i <= n-k; i++)}
for(
int i = n; i >= k+
1; i--)}
if(b[n-k+1]
<0)
int f =1;
for(
int i =
2; i <= n; i++)}
if(!f)puts
("-1");
else
cout << ans <<
"\n";}
return0;
}
f、我的心是冰冰的
**:
#include
using
namespace std;
intmain()
if(n ==1)
puts
("1");
else
puts
("2");
}return0;
}
2023年牛客寒假集訓營第二場題解
d 牛牛與整除分塊 思路 整數分塊有乙個性質,對於乙個整數n,當k n sqrt n 1 時,每個 n k 都是不同的,否則看n k是幾,然後利用對稱軸x n sqrt n 對稱過來 圖源自出題人 f 牛牛與交換排序 思路 如果有解的話k值一定是唯一的,那麼先確定k值,然後判斷這個k值是否可行。手寫...
2023年牛客寒假集訓營第一場題解
a 串 思路 一共n個字元,可以轉化為 i 1 i n 個字母中包含 us 的方案數之和 用 f i 2 1 0 表示前 i 個字母中 含有us 含u但不含us 既不含u也不含us 的方案數 然後可得狀態轉移方程 f i 0 25 f i 1 0 前i 1個字元不含u也不含s,那麼第 i 個字元除了...
2023年牛客寒假集訓營第六場題解
a 回文括號序列計數 思路 只有 形式的才符合題意,但 不是回文串 所以只有0的時候才行,其他都不行 include using namespace std intmain return0 c 末三位 思路 易得 include using namespace std intmain return0...