网站排名所以关键词下降,c2c的电子商务平台有哪些,网站设计排行,国外企业网安全问题这场cf只在b卡了一下#xff0c;因为b真是犯蠢了#xff0c;我以为会向下取整#xff0c;结果是完全就不取整#xff0c;或者说是向上取整#xff0c;卡了我半个小时#xff0c;要不是紧急看了题一下#xff0c;昨天那场就毁了
话不多说#xff0c;直接开讲
A. Game …这场cf只在b卡了一下因为b真是犯蠢了我以为会向下取整结果是完全就不取整或者说是向上取整卡了我半个小时要不是紧急看了题一下昨天那场就毁了
话不多说直接开讲
A. Game of Division
思路很容易就能看出来就是同余定理能够找到一个取模k的数且只有这一个数取模k为当前的余数那么就输出这个数否则一定存在两个数相减会导致能被k整除
#include bits/stdc.h
using namespace std;
#define int long long int t;
int n, k;
int a[200005]; void solve() { cin n k; int m[k 1]; memset(m, 0, sizeof(m)); int index[k 1]; memset(index, -1, sizeof(index)); for (int i 1; i n; i) { cin a[i]; a[i] a[i] % k; m[a[i]]; index[a[i]] i; } for (int i 0; i k; i) { if (m[i] 1) { cout YES\n; cout index[i] \n; return; } } cout NO\n;
} signed main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin t; while (t--) { solve(); } return 0;
} B. Paint a Strip 思路我们发现如果要输出最小的第一次操作那么我们的放置位置一定是
1,4,10,22防置为什么呢
因为我们手玩一下就可简单的发现其实在1,4放完之后可以直接2操作将前四个都变成1然后在10再放置一个就会有5个1刚好能够把1~10全部渲染后面同理可得
找到规律flag2*flag2;
#includebits/stdc.h
using namespace std;
#define int long long
int t;
int n,k;
int a[200005];void solve()
{cinn;if(n4){if(n1){cout1\n;}else{cout2\n;}}else{int ans2;int flag4;while(flagn){flagflag*22;ans;}coutans\n;}
}signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cint;while(t--)solve();return 0;
} C. Ordered Permutations 思路我自己纯手写了个数从2到4的情况下有多少个是最大的然后发现当个数为n的时候有2^(n-1)个数是最大的如果k大于这个数就是无解否则有解
然后我自己又手玩了一下又发现一个规律我们每次一个分段的最小值都应当放在两边当我们这个分段k值大于一半那么我们当前位的数就放在末尾否则放在第一位
然后我们就可以用类二进制思想轻松解决
#includebits/stdc.h
using namespace std;
#define int long long
int t;
int n,k;
int l,r;
int a[200005];
int flag[200005];
int vec[200005];
void solve()
{cinnk;k--;memset(flag,-1,sizeof(flag));for(int in-1; i1; i--){if(k1){flag[i]1;}kk1;}if(k!0){cout-1\n;return;}l1,rn;for(int i1; in; i){if(flag[i]1){vec[r--]i;}else{vec[l]i;}}for(int i1; in; i){coutvec[i] ;}cout\n;
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cint;while(t--)solve();return 0;
} D. Non Prime Tree 思路我们将跟结点赋值为1然后将后续其第一个子节点赋值为父节点的值1其余子节点与父节点的值的差值为除了2以外的偶数即可
#includebits/stdc.h
using namespace std;
#define int long long
int t;
int n,k;
int u,v;
vectorint e[200005];
int ans[200005];
int flag;
void dfs(int v,int fa)
{for(int u:e[v]){if(u!fa){ans[u]flag1;while(ans[u]!ans[v]1(ans[u]%2!ans[v]%2||abs(ans[u]-ans[v])2)){ans[u];}flagans[u];dfs(u,v);}}return ;
}
void solve()
{cinn;for(int i1;in-1;i){cinuv;e[u].push_back(v);e[v].push_back(u);}flag1;ans[1]1;dfs(1,-1);for(int i1;in;i){coutans[i] ;ans[i]0;e[i].clear();}cout\n;
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cint;while(t--)solve();return 0;
}