2016 1 25 ACM演算法討論群 群賽

2021-07-09 16:02:36 字數 3471 閱讀 5308

難度型別:ac不難,c要接觸過類似的題,b是博弈要會打表,d是還可以的dp但是題面略坑,e是線段樹,第一次寫線段樹啊。

型別:模擬,位運算統計1

的個數然後判斷就行了。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(),(x).end()

#define sz(x) ((int)(x).size())

#define fi first

#define se second

using

namespace

std;

typedef

long

long ll;

typedef

vector

vi;

typedef pair pii;

ll powmod(ll a,ll b, ll mod) return res;}

// head

char s[35];

int main()

s[n-1] = ((s[n-1]=='e') != (cnt&1)) ? '0' : '1';

puts(s);

}return

0;}

型別:博弈

似乎是叫做巴什博弈,我是記憶化搜尋打表做的,很容易看出來是斐波那契數列,然後預處理判斷即可。了解必勝態和必敗態許多博弈題目不知道對應的模型也可以進行猜測,當然前提是結論不是非常複雜。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(),(x).end()

#define sz(x) ((int)(x).size())

#define fi first

#define se second

using

namespace

std;

typedef

long

long ll;

typedef

vector

vi;

typedef pair pii;

ll powmod(ll a,ll b, ll mod) return res;}

// head

int dp[35][35];

bool dfs(int n, int last)

return dp[n][last] = false;

}void bruteforce()

}int fib[50];

int main()

int n;

while (scanf("%d", &n) == 1 && n)

puts(ans ? "second win" : "first win");

}return

0;}

型別:數學,斐波那契

題目不難,不過需要接觸過類似題。

首先需要知道乙個結論就是

limi→∞

(fib

i/fi

bi−1

)=φ=

5√+1

2,φ 就是**係數。

然後嘞就有以下的結論: bi

tans

log10

ans=

log10(f

ibst

×φn−

st)=

log10(f

ibst

)+(n

−st)

log10φ=

bit−

⌊bit

−3⌋=

10ans

log10

為了降低誤差,需要在對數下運算出指數。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(),(x).end()

#define sz(x) ((int)(x).size())

#define fi first

#define se second

using

namespace

std;

typedef

long

long ll;

typedef

vector

vi;

typedef pair pii;

ll powmod(ll a,ll b, ll mod) return res;}

// head

double phi = (1+sqrt(5))/2;

const

int n = 21;

int fib[n];

int solve(int n)

int main()

int n;

while (scanf("%d", &n) == 1)

return

0;}

型別:dp

對輪數還有進行到技能的天數進行dp,環形進行轉移,邊邊角角比較蛋疼,需要注意題面中戰鬥力

6 不可戰勝。需要注意要記錄狀態是否可達,因為如果說從中間開始就能轉移,那麼可以早結束進行下次技能,會wa。

另開的題解:

型別:線段樹,數論

比較裸的線段樹,學了就會了,單點更新+區間更新+延遲。然後線性篩處理下素數。

另開的題解:

產品經理群面討論技巧

下面是本節重點,即正式的群面解析。群試的步驟一般是 首先,接受問題,成員各自分別準備發言提綱 其次,小組成員輪流發言,闡述自己觀點 再次,成員交叉討論,彙總得出最佳方案 最後,解決方案總結並匯報討論結果。但整體流程並不固定,只要可以進行充分的討論並形成結果即可,所以其中有較多可以發揮的地方。因為群面...

蟻群優化演算法

蟻群優化演算法作為一種全域性最優化搜素方法,同遺傳演算法一樣,靈感都 於自然界,並有良好的搜素效能。然而,從數學的角度來理解分析它們的工作方式是很難的,因為這些演算法都具有很複雜的隨機過程。aco演算法的過程具有一定的隨機性,這就要求初始化螞蟻的數量和更新資訊素的次數必須足夠的多,只有這樣才能最終收...

蟻群演算法詳解

今天開始學習優化演算法,話說蟻群演算法是之前看過的,唉,今天一看都看不懂了,蟻群演算法的思想我就不說了,現在來理解一下這個 吧!該 的主要思想是 for 迭代次數 for 螞蟻個數 每個螞蟻完整的走完一遍 每個點訪問一次 end更新資訊素 end然後根據資訊素的多少找出一條路徑來 tsp的蟻群演算法...