C++小白训练第七天
以下为牛客挑战
今日收获
- 回顾了二分答案了,对于一个确定的答案的区间,我们可以直接进行二分答案就行了
- while(l<r){
- int mid=l+r>>1;
- if(check(mid)){
- r=mid;
- }else{
- l=mid+1;
- }
- }
- 可以用for(int i=1;i<=n;i++){
- cin>>s[i];
- if(s[i]==s[i-1]){
- pr[i]=pr[i-1];
- }else{
- pr[i]=i-1;
- }
- }
- 处理一段连续区间最后a[i]个数相同的个数。
- j=i-s[i]+1
复制代码 牛客小白月赛127
Flower_Rainbow_and_You
A-Flower_Rainbow_and_You_牛客小白月赛127
解题代码
[code]#include#define int long long#define lll __uint128_t#define PII pair#define endl '\n'using namespace std;#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印#define YN(ans) printf("%s\n", (ans)?"YES":"NO");#define REP(i, e) for (int i = 0; i < (e); ++i)#define REP1(i, s, e) for (int i = (s); i > t; while (t--)#define TESTconst int N=2e5+10,M=1e3+10,mod=1e9+7;int a[N],b[N],c[N],pre[N];signed main(){ std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); string s[7] = {"Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"}; int m=0; int ma=-1; for(int i=0,x;i>x; if(x>ma){ m=i; ma=x; } } cout>k; vectorm(N,0); for(int i=0,x;i>x; m[x%k]++; } for(int i=0;i |