小菜雞的第三天(沒錯,第二天咕咕咕了)
昨天的題單是牛客訓練賽74,3道簽到題只做出來2題,討論會的時候也沒有遇到特別有感觸的題就咕咕了,今天的題單是訓練賽73,三道簽到題磕磕碰碰ac了,什麼時候才能突破啊!!!。
題意:n個數判斷是否是等差數列、等比數列、等模數列中的一種
思路:非常常規,從前往後遍歷加三個標記就行
#include
#include
using
namespace std;
typedef
long
long ll;
const
int n =
1e5+10;
int n;
bool fd=
true
,fq=
true
,fm=
true
;ll a[n]
;int
main()
if(!fd&&
!fq&&
!fm) cout<<
"no"
;else cout<<
"yes"
;return0;
}
題意:定義了乙個字串是「牛」的,當且僅當其有乙個子串為「nowcoder」
轉化一下也就是這個字串有「nowcoder」子串。
問乙個字串有多少「牛」串
思路:以給定的字串中的每個「nowcoder」為分界點,上至前乙個分界點,後至末尾,乘積計數就行
#include
#include
#include
using
namespace std;
typedef
long
long ll;
string s;
void
solve()
cout<}int
main()
問題:招生按高考成績和校考成績加權排名,前m個可被錄取,問高考最低可以考多少
思路:算完分數只要考正好第m名的分就可以把第m個人擠下去,公式倒推即可。
要注意結果向上取整,分數最低為0
#include
#include
using
namespace std;
#define max(a, b) ((a) > (b) ? (a) : (b))
typedef
long
long ll;
const
int n =
1e5+10;
int n,m,p;
ll a[n]
;int
main()
sort
(a,a+n)
; cout<<
max(
(a[n-m]
-p*15+84
)/85,
0);return0;
}
問題:在題述約束下a中最多有多少種數
思路:10繫結,記錄有多少對10就行,對於頭尾的不同情況舉例就可以看出來
#include
using
namespace std;
const
int n =
5e5+10;
int a[n]
,ans=
1,n,c,k=1;
intmain()
if(k%
2) cout<<
(k+1)/
2;else cout<(a[0]+
1)%2
;return0;
}
問題:遺憾為集合中最小不包含在集合內的正整數
對於給定的n個數的所有子集,問子集的遺憾之和為多少
思路:實際是乙個排列組合問題
1)假設在n個數中有某個數k不存在,那麼如果集合中前k-1個數都有,不管其他比k大的數是否存在,遺憾總是k
2)對於一組連續的數集,遺憾為k的可能情況為集合中包含小於k的每乙個數,對於大於k的數不做要求
設計:用rest陣列儲存比k大的數
#include
#include
using
namespace std;
typedef
long
long ll;
const
int n =
5e5+10;
const
int mod =
20000311
;int i=
0,c=
1,n,a[n]
,anum[n]
,rest[n]
,t[n]=;
ll ans=0;
voidin(
)void
solve()
if(rest[i]==0
)else
cout<}int
main()
vaqx·青
2021.01.25
寒假集訓 Find Metal Mineral
題目鏈結 題意 給出一顆生成樹,1 n 10000,在某乙個節點有k個機械人 k 10 然後機械人從這裡開始走,要求遍歷完節點,隨便停到什麼地方.求最少的路程總和.題解 樹形dp,關鍵是dp u i i的定義,因為機械人可能從子樹再跑回來,然後為了避免重複討論,應該定義為 在u為根的子樹上停了幾個機...
寒假集訓總結
寒假的訓練以不太順利的結果結束。整個寒假訓練都是兩天一場學長抓的訓練賽,然後補題,由於自己比較菜以及一些莫名的因素,導致訓練賽打得比較差,尤其是後幾場。訓練賽沒能打好的原因可能與狀態關係確實很大,但其中肯定與實力有關吧。總結一下,這些題目,演算法和思維上難倒自己的好像也沒幾道 後來補出來的 但是賽場...
ACM寒假集訓
出自 南昌理工學院acm集訓隊 什麼是dfs?void dfs 狀態 a 1.判斷狀態是否合法。合法繼續執行,否則則回到上次呼叫 2.先下走一層,也就是呼叫dfs a void dfs 引數用來表示狀態 if 越界或者是不合法狀態 return if 特殊狀態 剪枝 return for 擴充套件方...