A - A CodeForces 1574C
大致分2种情况 分类讨论即可
- 选最大的小于龙防御的勇士打龙,其他人守城
- 选最小的大于龙防御的勇士大龙,其他人守城
因为sb的greater
C - C CodeForces - 1406B
取正数里的最大最小和负数里的最大最小直接暴力算即可
利用优先队列取二者的最大最小
我期待的Q1234
实际的Q1234
正数中的最大和负数中的最小的顺序反了
需要额外
I - I POJ - 1088
经典老题,写过好多遍,dfs记忆化即可
好的接下来我们来查错
int work(int nowX, int nowY, int nowD)
{
tot++;
if (preAns[nowX][nowY] != 0)
return nowD - 1 + preAns[nowX][nowY];
int nowMax = nowD;
for (int i = 0; i < 4; i++)
{
int nx = nowX + nextX[i];
int ny = nowY + nextY[i];
if (nx > n || ny > m || nx < 1 || ny < 1)
continue;
if (vis[nx][ny])
continue;
if (board[nx][ny] > board[nowX][nowY])
continue;
vis[nx][ny] = true;
nowMax = max(nowMax, work(nx, ny, nowD + 1));
vis[nx][ny] = false;
}
preAns[nowX][nowY] = max(preAns[nowX][nowY], nowMax - nowD + 1);
return nowMax;
}
图中preAns为记忆的之后能走的最大长度
在经历了5发T,4发Wa后回过头来看,发现上图代码滑雪能平地滑
G - G AtCoder - abc177_e
已知质数gcd结果为1,可以先算出全部的gcd,非1则直接not coprime
接下来再判互质
不知道怎么想出来的互质:
一个数不是另一个数的因子
for (ll i = 0; i < n; i++)
{
ll temp = N[i];
ll nowNum = N[i] * 2;
if (N[i] == 1)
continue;
while (nowNum <= 1e6)
{
if (M[nowNum] >= 1)
{
cout << "setwise coprime" << endl;
return 0;
}
nowNum += temp;
}
}
实际的互质:
不能有共同的因子
for (int i = 0; i < primes.size(); i++)
{
int nowCnt = 0;
for (int j = 1; j*primes[i] <= 1e6; j++)
nowCnt = nowCnt + M[j*primes[i]];
if (nowCnt > 1)
{
cout << "setwise coprime" << endl;
return 0;
}
}
待更新