头像

buguai

长江大学




离线:28天前


最近来访(32)
用户头像
Kazimierz
用户头像
简媜
用户头像
斌斌lxb
用户头像
Answer3
用户头像
No.3_3
用户头像
歸曦
用户头像
Hopeaz
用户头像
the.midnight


buguai
3个月前
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
long long int a[N],b[N];

int main(){
    memset(a,0,N*sizeof(long long));
    memset(b,0,N*sizeof(long long));
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<m;i++){
        cin>>b[i];
    }
    int i=0,j=0;
    for(;j<m && i<n;j++){
        if(a[i]==b[j]){
            i++;
        }
    }
    if(i==n){
        cout<<"Yes";
    }else{
        cout<<"No";
    }
    return 0;
}




buguai
3个月前
#include<bits/stdc++.h>
using namespace std;

int main(){

    int m,n,x;
    cin>>m>>n>>x;

    int num1[m],num2[n];
    for(int i=0;i<m;i++){
        cin>>num1[i];
    }
    for(int i=0;i<n;i++){
        cin>>num2[i];
    }
    while(x<num1[m-1] && m>=0){
        m--;
    }
    while(x<num2[n-1] && n>=0){
        n--;
    }
    for(int i=0;i<m;i++){

        int l=0,r=n-1,mid,target=x-num1[i];
        while(l<r){
            mid=l+(r-l)/2;
            //cout<<mid<<" "<<num2[mid]<<" ";
            if(num2[mid]<target){
                l=mid+1;
            }else if(num2[mid]>target){
                r=mid;
            }else{
                cout<<i<<" "<<mid;
                return 0;
            }
        }
        if(target==num2[l]){
            cout<<i<<" "<<l;
        }
    }

    return 0;
}



buguai
3个月前

利用找两个数组分别存下上一个与这个数相同的数的位置、上一个数连续不重复子序列的长度,两者比较较小数为这个位置的连续不重复子序列

#include<bits/stdc++.h>
using namespace std;


int kk[100010];

int main(){

    int m;
    cin>>m;
    int s[m];
    memset(kk,100000,100010*sizeof(int));
    for(int i=0;i<m;i++)
        cin>>s[i];
    int nums[m],max=1;
    nums[0]=1;
    kk[s[0]]=1;

    for(int i=1;i<m;i++){
        nums[i]=abs(i-kk[s[i]])>(nums[i-1]+1)?(nums[i-1]+1):abs(i-kk[s[i]]);
        kk[s[i]]=i;
        if(max<nums[i]){
            max=nums[i];
        }
    }
    cout<<max;
    return 0;
}



buguai
3个月前
#include <bits/stdc++.h>
using namespace std;

int main(){

    int num=0,res=0;
    char ch='x';
    int n;
    cin>>n;
    string s;
    cin>>s;

    for(char a:s){
        if(a==ch){
            num++;
            if(num==3){
                num--;
                res++;
            }
        }else{
            num=0;
        }
    }
    cout<<res;

    return 0;
}



buguai
3个月前
#include <bits/stdc++.h>
using namespace std;

int main(){

    int n,m,p;

    cin>>n;

    for(int i=0;i<n;i++){
        cin>>m;
        string s,q;
        cin>>s;
        q=s;
        int a1=0,a2=0;
        vector<int> z,r;
        for(int j=0;j<m-1;j++){
            if(s[j]=='W'){
                s[j]='B';
                if(s[j+1]=='W')s[j+1]='B';
                else s[j+1]='W';
                z.push_back(j+1);
                a1++;
            }

            if(q[j]=='B'){
                q[j]='W';
                if(q[j+1]=='W')q[j+1]='B';
                else q[j+1]='W';
                r.push_back(j+1);
                a2++;
            }
        }

        if(s[m-1]=='W' && q[m-1]=='B'){
            cout<<-1<<endl;
        }else if(s[m-1]=='W'){
            cout<<a2<<endl;
            for(int op:r){
                cout<<op<<" ";
            }
            if(a2)cout<<endl;
        }else{
            cout<<a1<<endl;
            for(int op:z){
                cout<<op<<" ";
            }
            if(a1)cout<<endl;
        }
    }


    return 0;
}


活动打卡代码 AcWing 4455. 出行计划

buguai
3个月前
#include<bits/stdc++.h>
using namespace std;

const int N=200010;
int nums[N];


int main()
{
    int n,m,k,query_time;
    cin>>n>>m>>k;
    //差分
    for(int i=0;i<n;i++){
        int t,c;
        cin>>t>>c;
        int l=t-k-c+1,r=t-k;
        if(r>0){
            nums[max(l,1)]++;
            nums[r+1]--;
        }

    }
    for(int i=1;i<N;i++){
        nums[i]+=nums[i-1];
    }
    for(int i=0;i<m;i++){
         cin>>query_time;
         cout<<nums[query_time]<<endl;
    }
    return 0;
}


活动打卡代码 AcWing 4653. 数位排序

buguai
3个月前
#include<bits/stdc++.h>
using namespace std;

const int N=1000010;
int nums[N],temp[N];


int main(){
    int m,n;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        nums[i]=i;
        int k=i;
        while(k){
            temp[i]+=k%10;
            k/=10;
        }
    }
    sort(nums+1,nums+1+n,[](int a,int b){
        if(temp[a]!=temp[b]){
            return temp[a]<temp[b];
        }
        return a<b;
    });
    cout<<nums[m];
    return 0;


}


活动打卡代码 AcWing 4644. 求和

buguai
3个月前
#include <bits/stdc++.h>
using namespace std;

const long long N=200010;
int nums[N];

int main()
{
    int n;
    cin>>n;
    long long sum=0,x1=0,x2=0;
    for(int i=0;i<n;i++){
        cin>>nums[i];
        x1+=nums[i];
        x2+=nums[i]*nums[i];
    }
    cout<<(x1*x1-x2)/2;
    return 0;

}


活动打卡代码 AcWing 4818. 奶牛大学

buguai
3个月前
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int moneys[N];


int main()
{
    long long n,money=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>moneys[i];
    }
    sort(moneys,moneys+n);
    long long m=0;
    for(int i=0;i<n;i++){
        long long mm=(long long)moneys[i]*(n-i);
        if(mm>money){
            m=moneys[i];
            money=mm;
        }
    }
    printf("%lld %lld",money,m);
    return 0;
}


活动打卡代码 AcWing 3443. 学分绩点

buguai
3个月前
#include <bits/stdc++.h>
using namespace std;
#define N 20
int  SCORE[N];
int main()
{
    int n,m,sum=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>SCORE[i];
        sum+=SCORE[i];
    }
    float nums=0;
    int num;
    for(int i=0;i<n;i++){
        cin>>num;
        float numss=0;
        if(num>=90){
            numss=4;
        }else if(num>=85){
            numss=3.7;
        }else if(num>=82){
            numss=3.3;
        }else if(num>=78){
            numss=3;
        }else if(num>=75){
            numss=2.7;
        }else if(num>=72){
            numss=2.3;
        }else if(num>=68){
            numss=2;
        }else if(num>=64){
            numss=1.5;
        }else if(num>=60){
            numss=1.0;
        }
        nums+=numss*SCORE[i];
        // cout<<SCORE[i]<<"  "<<numss<<endl;
    }
    printf("%.2f",nums/sum);
    return 0;
}