做网站被攻击谁的责任,长沙人才网官网入口,开发app的平台,南昌互联网网站开发Codeforces Round 719 (Div. 3)
A. Do Not Be Distracted!
A. 不要分心#xff01;
题意
给定一个字符串#xff0c;相同的字母只能相互连接出现#xff0c;不得出现后再次单独出现#xff0c;判断字符串是否合规
思路
用桶记录字符出现的次数#xff0c;判断再次出…Codeforces Round 719 (Div. 3)
A. Do Not Be Distracted!
A. 不要分心
题意
给定一个字符串相同的字母只能相互连接出现不得出现后再次单独出现判断字符串是否合规
思路
用桶记录字符出现的次数判断再次出现时字符前是否为同一字符
代码
#includebits/stdc.h
using namespace std;
int t,n,b[105];
string s;
int main(){cint;while(t--){cinns;memset(b,0,sizeof(b));bool flag0;b[s[0]];for(int i1;in;i){if(s[i-1]!s[i]b[s[i]]!0){coutNOendl;flag1;break;}b[s[i]];}if(!flag){coutYESendl;}}return 0;
}B. Ordinary Numbers
B. 普通数字
题意
一个数字的所有位数均为同一个数字那么就称它为普通数给定一个数字求从1到这个数字所有的“普通数”的个数
思路
由题意知在10以内有“普通数”9个10至100也有9个每增加一位就会增加9个“普通数”我们可以先枚举位数然后枚举相同的数字保证在n内求得最多数量
代码
#includebits/stdc.h
using namespace std;
long long n,ans,t;
string s;
int main(){cint;while(t--){ans0;cinn;for(int i1;in;ii*101){for(int j1;j9;j){if(i*jn){ans;}else{break;}}}coutansendl;}return 0;
}C. Not Adjacent Matrix
C. 不相邻矩阵
题意
给定一个数字n要求你使用1~ n 2 n^2 n2的数字构造一个n*n的矩阵要求矩阵中相邻的数字之差不能等于1
思路
本题有多种解题方法最简单的就是先输出奇数在输出偶数注意1和2要特判1只能构造1,2只能输出-1
代码
#includebits/stdc.h
using namespace std;
long long n,t,a;
int main(){cint;while(t--){cinn;if(n1){cout1endl;continue;}if(n2){cout-1endl;continue;}a0;for(int i1;in*n;i2){a;couti ;if(an){coutendl;a0;}}for(int i2;in*n;i2){a;couti ;if(an){coutendl;a0;}}}return 0;
}D. Same Differences
D. 相同的差
题意
给定一个序列求出这个序列内下标之差相同且元素之差相同的数的数量
思路
由 a i − a j i − j a_i-a_ji-j ai−aji−j可得 a i − i a j − j a_i-ia_j-j ai−iaj−j所以只需要记录每一个位置的下标与元素之差即可
代码
// LUOGU_RID: 149950563
#includebits/stdc.h
using namespace std;
long long n,t,x,ans;
int main(){scanf(%lld,t);while(t--){scanf(%lld,n);ans0;long long a[400015]{0};for(int i1;in;i){scanf(%lld,x);ans(a[x-in]);}printf(%lld\n,ans);}return 0;
}E. Arranging The Sheep
E. 排列绵羊
题意
给定一个由 ∗ * ∗和 . . .构成的字符串每次可以向左或向右移动 ∗ * ∗求出使所有 ∗ * ∗连在一块的最小次数
思路
让所有的 ∗ * ∗向中间集中是最好的方法所以本题首先找到中间的 ∗ * ∗的位置然后算出所有 ∗ * ∗距离和
代码
#includebits/stdc.h
using namespace std;
long long n,t,x,ans,a[1000005];
string s;
int main(){scanf(%lld,t);while(t--){scanf(%lld,n);cins;x0,ans0;for(int i0;in;i){if(s[i]*){a[x]i1;}}if(x1){cout0endl;continue;}for(int i1;ix;i){ansabs(a[x/21]-a[i])-abs(x/21-i);}coutansendl;}return 0;
}F1. Guess the K-th Zero (Easy version)
猜左数第k个0位置简易版
题意
本题为交互题有一个隐藏的只包含0和1的序列要求在20次询问区间内元素之和来判断序列中第k个0的下标
思路
区间内元素之和即为区间内1的个数由此可得0的个数使用二分查找每次判断第k个0在mid左还是mid右就可以找到它了
代码
#includebits/stdc.h
using namespace std;
long long n,k,t,x,mid,l,r;
int main(){scanf(%lld%lld%lld,n,t,k);l1,rn;while(lr){mid(lr)/2;cout? 1 midendl;cinx;if(xkmid){rmid-1;}else{lmid1;}}cout! l;return 0;
}