谷歌网站开发语言,开发一款小程序软件需要多少钱,茶网站设计素材下载,下载站模板 wordpresscodeforces原题链接 大佬题解 B - Binary Tree
每个人每次一定拿走奇数#xff08;2k−12^k-12k−1#xff09;个节点#xff0c;如果先手必胜不难发现两人轮流拿最终一定拿奇数次#xff08;每次奇数个节点#xff09;说明一共有奇数个节点#xff0c;如果先手必败说明… codeforces原题链接 大佬题解 B - Binary Tree
每个人每次一定拿走奇数2k−12^k-12k−1个节点如果先手必胜不难发现两人轮流拿最终一定拿奇数次每次奇数个节点说明一共有奇数个节点如果先手必败说明最终两人共拿偶数次说明有偶数个节点因此可以根据奇偶性判断输赢。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N50010;
const ll mod998244353;
int n;
int main()
{IO;int T1;cinT;while(T--){cinn;for(int i1;in;i){int a,b;cinab;}if(n1) coutAlice\n;else coutBob\n;}return 0;}D - Defining Labels
模拟一下就即可。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N50010;
const ll mod998244353;
int main()
{IO;int T1;cinT;while(T--){int k;ll x;cinkx;ll base1,s0;while(sx){basebase*k;sbase;}x-s-base;base/k;vectorint ans;while(x0base){int r(xbase-1)/base;ans.push_back(r9-k);x-(r-1)*base; base/k;}for(auto t:ans) coutt;cout\n;}return 0;}G - Game Design
本来想着构造一条链不过发现kkk有点大搞不了于是。。就没有于是了 参考上述题解发现自己还是对递归不熟练。 如果当前节点的方案数为偶数那么我们构造两个方案数分别为 2,n22,\frac n 22,2n 的子节点如果是奇数就构造两个方案数分别为 2,n22,\frac n 22,2n 的子节点并且根节点单独作为一种方案递归终点是k≤2k≤2k≤2 的时候我们只需要建一条链即可。 当父节点的权值等于孩子节点的权值和的时候父节点即可单独称为一种方案如果大于就不能单独称为一种方案。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N50010;
const ll mod998244353;
int k,cnt;
int fa[N],c[N];
int dfs(int k,int p)
{int nowcnt;fa[now]p;if(k2){fa[cnt]now;c[cnt]1;c[now]3-k;return 1;}c[now]dfs(k/2,now)dfs(2,now)(k%20);return c[now]-(k%20);}
int main()
{IO;int T1;//cinT;while(T--){cink;dfs(k,0);coutcnt\n;for(int i2;icnt;i) coutfa[i] ;cout\n;for(int i1;icnt;i) coutc[i] ;cout\n;}return 0;}E - Erasing Numbers
大佬题解 直接贴贴大佬题解的图片吧真的非常妙
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N5010;
const ll mod998244353;
int a[N],n;
bool check(int x)
{int cnt00,cnt10;for(int i1;in;i) cnt0a[i]x,cnt1a[i]x;if(cnt0cnt1) return 1;else if(cnt0cnt1){int cnt0;for(int i1;in;i){if(a[i]x) cnt;else if(a[i]x) cnt0;//最后消xelse cntmax(cnt-1,0);if(cnt3){cnt1-2,cnt1;if(cnt0cnt1) return 1;}}}else {int cnt0;for(int i1;in;i){if(a[i]x) cnt;else if(a[i]x) cnt0;//最后消xelse cntmax(cnt-1,0);if(cnt3) {cnt0-2,cnt1;if(cnt0cnt1) return 1;}}}return 0;}
int main()
{IO;int T1;cinT;while(T--){cinn;for(int i1;in;i) cina[i];for(int i1;in;i){if(check(a[i])) cout1;else cout0;}cout\n;}return 0;}J - Junior Mathematician
竟然还有点卡常少了几个%就A了。 为了补这个题重学数位dp然后发现基本的数位dp
// 2652 ms
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N5010;
const ll mod1e97;
int a[N];
char l[N],r[N];
int m;
int f[N][65][65][2];
int ten[N];
int dfs(int pos,int s,int cur,bool limit)
{if(!pos) return cur0;if(f[pos][s][cur][limit]!-1) return f[pos][s][cur][limit];int vlimit?a[pos]:9;ll res0;for(int i0;iv;i)resdfs(pos-1,(si)%m,((curs*i-i*ten[pos-1])%mm)%m,limitiv);res(res%modmod)%mod;return f[pos][s][cur][limit]res;
}
int solve(char s[])
{int cntstrlen(s);// 初始化记忆化数组for(int i1;icnt;i)for(int j0;jm;j)for(int k0;km;k)f[i][j][k][0]f[i][j][k][1]-1;for(int i1;icnt;i) a[i]s[cnt-i]-0;return dfs(cnt,0,0,1);
}
int main()
{IO;int T1;cinT;while(T--){cinl1r1;cinm;ten[0]1;for(int i1;i5000;i) ten[i]ten[i-1]*10%m;// [l,r] 差分- [0,r]-[0,l-1] 首先让l-1for(int istrlen(l1);i;i--){if(l[i]0) {l[i]--;break;}else l[i]9;}cout((solve(r1)-solve(l1))%modmod)%mod\n;}return 0;}最近作业巨难信号数电感觉老师上课疯狂划水真就自学??? 而且最近题解质量真的差没时间打markdown不想打 要加油哦~