网站建设公司管理流程,室内装修装饰设计培训班,简历模板网站免费,wordpress支持系统这场打一半回宿舍有点事润了#xff0c;态度不端正#xff0c;下次改正
A. Anastasia and pebbles
题面 签到题#xff0c;枚举每类石头即可#xff0c; w a wa wa了一次因为判断错了#xff0c;分两天取是 k k k,不是 ≥ k \ge k ≥k
#includebits/s…这场打一半回宿舍有点事润了态度不端正下次改正
A. Anastasia and pebbles
题面 签到题枚举每类石头即可 w a wa wa了一次因为判断错了分两天取是 k k k,不是 ≥ k \ge k ≥k
#includebits/stdc.h
#define N 200020
#define reg register
using namespace std;
typedef long long ll;
inline void read(int x){int s0,w1;char chgetchar();while(ch0||ch9){if(ch-)w-1;chgetchar();}while(ch0ch9){s(s3)(s1)(ch15);chgetchar();}xs*w;
}
int n,k,a[N],ans,now;
int main(){read(n),read(k);for(int i1;in;i)read(a[i]);sort(a1,a1n);for(int i1;in;i){if(now1)ans,a[i]-k,now0;if(a[i]2*k)ansa[i]/(2*k),a[i]%(2*k);if(a[i]k)ans,a[i]0;if(a[i]0)now;}if(now)ans;coutansendl;}B. Masha and geometric depression
题面 把 a a a数组放进 s e t set set循环枚举 b b b数组即可。判断是否无法找到直接利用循环次数即可循环次数不会很大因此判断循环次数即可。
#includebits/stdc.h
using namespace std;
typedef long long ll;
ll b1,q,l,m,ans,cnt;
set ll a;
inline void read(ll x){ll s0,w1;char chgetchar();while(ch0||ch9){if(ch-)w-1;chgetchar();}while(ch0ch9){s(s3)(s1)(ch15);chgetchar();}xs*w;
}
int main(){read(b1),read(q),read(l),read(m);for(int i1;im;i){ll x;read(x);a.insert(x);}ll b2b1;while(abs(b2)l){cnt;if(a.find(b2)a.end())ans;b2*q;if(cnt100000){if(ans!0ans!1)ans-1;break;}}if(ans-1)printf(inf\n);else printf(%lld\n,ans);
}C. Functions again
题面 先预处理出差分数组的绝对值不考虑 − 1 -1 −1的幂次因为一加一减我们设 d p [ i ] [ 0 ] dp[i][0] dp[i][0]为这一位是加法 d p [ i ] [ 1 ] dp[i][1] dp[i][1]为这一位是减法。 转移方程为 d p [ i ] [ 0 ] m a x { d p [ i − 1 ] [ 1 ] d [ i ] , d [ i ] } dp[i][0]max\{dp[i-1][1]d[i],d[i]\} dp[i][0]max{dp[i−1][1]d[i],d[i]} d p [ i ] [ 1 ] m a x { d p [ i − 1 ] [ 0 ] − d [ i ] , 0 } dp[i][1]max\{dp[i-1][0]-d[i],0\} dp[i][1]max{dp[i−1][0]−d[i],0}
#include bits/stdc.h
#define N 100010
using namespace std;
typedef long long ll;
inline void read(ll x){ll s0,w1;char chgetchar();while(ch0||ch9){if(ch-)w-1;chgetchar();}while(ch0ch9){s(s3)(s1)(ch15);chgetchar();}xs*w;
}
ll n,a[N],d[N],dp[N][2],ans;
int main(){read(n);for(ll i1;in;i)read(a[i]);for(ll i1;in;i)d[i]abs(a[i]-a[i1]);for(ll i1;in;i){dp[i][0]max(dp[i-1][1]d[i],d[i]);dp[i][1]max(dp[i-1][0]-d[i],0LL);}for(ll i1;in;i)ansmax(ans,max(dp[i][0],dp[i][1]));coutansendl;
}A. Bear and Big Brother
题面 签到题
#includebits/stdc.h
using namespace std;
int n,m,cnt;
int main(){cinnm;while(nm){n*3,m*2,cnt;}coutcntendl;
}B. Bear and Friendship Condition
题面 利用并查集每个并查集里的点和边应满足满射即 m n ( n − 1 ) / 2 mn(n-1)/2 mn(n−1)/2做并查集并同时记录每个连通块中边的个数
#includebits/stdc.h
#define N 200020
#define reg register
using namespace std;
typedef long long ll;
inline void read(ll x){ll s0,w1;char chgetchar();while(ch0||ch9){if(ch-)w-1;chgetchar();}while(ch0ch9){s(s3)(s1)(ch15);chgetchar();}xs*w;
}
ll n,m,f[N],u,v,s[N],num[N],flag;
ll find(ll u){if(uf[u])return u;else return f[u]find(f[u]);
}
void merge(ll x, ll y){xfind(x),yfind(y);if(xy)return ;f[y]x,num[x]num[y],num[y]0;
}
int main(){read(n),read(m);for(ll i1;in;i)f[i]i,num[i]1;for(ll i1;im;i)read(u),read(v),merge(u,v);for(ll i1;in;i){if(num[i]1)flagnum[i]*(num[i]-1)/2;}if(flag!m)puts(No);else puts(Yes);
}C. Bear and Different Names
题面 构造出一堆名字每碰到一个 N o No No就把当前区间的尾元素改为和首元素相同的名字最后输出构造的名字即可。
#include bits/stdc.h
#define N 200
using namespace std;
string s[N],s1;
int n,k;
int main(){cinnk;for(int i1;in;i)s[i]Aa,s[i][0]i/26,s[i][1]i%26;for(int i1;in-k1;i) {cins1;if(s1[0]N)s[ik-1]s[i];}for(int i1;in;i)couts[i] ;printf(\n);
}