又一次成功的簽到了(大哭~~~~~~)只做了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...