Nowcoder 牛課多校第三場A C H

2021-08-21 19:12:43 字數 2214 閱讀 4897

又一次成功的簽到了(大哭~~~~~~)只做了2題然後就一直掛機了,會的慢慢補吧。

好吧,從一開始就看錯了題目,這是乙個四維揹包問題(貼的別人的**了)

#include #include #define n 40

using namespace std;

int n, p, a, c, m, p[n], a[n], c[n], m[n], g[n], f[n][n][n][n];

//f陣列記錄p,a,c,m人數有n,n,n,n人時的最大取值

bool h[n][n][n][n][n];//記錄路徑

int main()

int ans[n];

ans[0] = 0;

for(int i = n; i >= 1; i --)//恢復路徑 即取的隊伍

if (h[i][p][a][c][m])

cout << ans[0] << endl;

for(int i = 1; i <= ans[0]; i ++) cout << ans[i] << endl;

return 0;

}

rope**好啊,stl**好啊,不過還是得去學習一下splay啊

貼乙個rope 不了解的可以戳一下

#include #include using namespace std;

using namespace __gnu_cxx;

int n,m;

int a,b;

roper;

int main()

for(int i = 0; i < n; i++) printf("%d ", r[i]);

}

splay**:

#include#includeusing namespace std;

const int maxn = 300000 + 10;

const int inf = 0x3f3f3f3f;

int n, root, ch[maxn][2], s[maxn], v[maxn];

bool rev[maxn];

#define lc ch[o][0]

#define rc ch[o][1]

void maintain(int o)

void rotate(int& o, int d)

void pushdown(int o)

int cmp(int o, int k)

void splay(int& o, int k)

rotate(o, d^1);

}void rever(int& o, int l, int r)

void build(int l, int r, int p, int d)

maintain(cur);

ch[p][d] = cur;

}void print(int o)

int main()

print(root);

return 0;

}

用三次區間翻轉,解決平移,不懂得畫個圖,舉個栗子就行了。

相除得到 i/j=k1/k2     當i和j同時乘以乙個數t時也是滿足這個等式,可知ti 與 tj也是滿足條件的乙個數對

所以當我們找到兩個在1~n 範圍內的素數a,b時,他們的倍數也是滿足條件的,那麼有幾對呢,對數的個數當然是由數值較大的決定,就是n/max(a,b);

思路:先求出所給1~n的所有素數 存入陣列(2,3,5,7.......)

第乙個素數2前面時沒有和他配對的,那就從3開始。當算到第i個素數temp時,計算出1~n是temp倍數的個數,然後再乘以temp前面素數的個數(比temp小的素數肯定可以找到和temp相同倍數的數的)。最後不要忘記*2,此題就ok了

#includeusing namespace std;

typedef long long ll;

#define max 10000005

int prime[max];//存放素數

bool check[max];//判斷是不是素數 0為不是素數

int solve(int n)

}return count;

}int main()

cout<

}return 0;

}

Magic Line(牛客多校第三場)

magic line 首先我先把所有的點按照先橫座標後縱座標 都是由小到大 然後由於題目給的範圍很大,我們可以想到,如果取一條最為豎的線,那麼一定能分開,然後考慮一下最中間的兩個點橫座標相同的情況即可。include include include include include include i...

2020牛客多校第三場

沒有魚,沒有魚餌 沒有魚,有魚餌 有魚,沒魚餌 有魚,有魚餌 每個只能做其中乙個操作,如果在某個點之前已經拿過魚餌,還沒用,就能拿個魚,如果在某個點有魚,就能拿個魚。現在問最多能拿多少條魚?思路 貪心,如果有魚那肯定拿魚,魚 1,然後就剩0和1操作了,如果遇到1操作,直接拿魚餌,遇到0操作,看有沒有...

2019牛客多校第三場

給乙個01字串,求0和1個數相同的最長子序列和子串長度。子串行長度就是 min cnt 0 cnt 1 2 子串的長度也是原題,記錄一下0和1個數差的字首和,然後用乙個陣列記錄前面掃過的0個數和1個數差值的最左位置,字首和的思想更新答案即可。include using namespace std c...