头像

minmni




离线:3小时前


活动打卡代码 AcWing 2. 01背包问题

minmni
4小时前
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
    int n,v;
    cin >> n >> v;
    int a[1005][2];
    int val[1005][1005]={0};
    for(int i=1;i<=n;i++){
        cin >> a[i][0] >> a[i][1];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=v;j++){
            if(a[i][0]>j){
                val[i][j]=val[i-1][j];
            }
            else{
                val[i][j]=max(val[i-1][j],val[i-1][j-a[i][0]]+a[i][1]);
            }
        }
    }
    cout << val[n][v];
    return 0;
}


活动打卡代码 AcWing 1216. 饮料换购

minmni
4小时前
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int n;
    cin >> n;
    int m=n;
    while(m>=3){
        n+=(m/3);
        m=(m/3+m%3);
    }
    cout << n;
    return 0;
}


活动打卡代码 AcWing 1211. 蚂蚁感冒

minmni
4小时前
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main(){
    int n;
    cin >> n;
    int p;
    bool flag;
    int x=0,y=0;
    for(int i=0;i<n;i++){
        int m;
        cin >> m;
        if(i==0){
            p=abs(m);
            flag=(m<0);
        }
        else{
            if(flag){
                if(abs(m)<p&&m>0){
                    x++;
                }
                else if(abs(m)>p&&m<0){
                    y++;
                }
            }
            else{
                if(abs(m)<p&&m>0){
                    y++;
                }
                else if(abs(m)>p&&m<0){
                    x++;
                }
            }
        }
    }
    if(x>0){
        x+=y;
    }
    cout << x+1;
    return 0;
}



minmni
5小时前
#include<iostream>
#include<cstdio>
using namespace std;
bool flag[10];
int a[10];
int n;
void f(int k){
    if(k>=n){
        for(int i=1;i<=n;i++){
            if(i!=1){
                cout << ' ';
            }
            cout << a[i];
        }
        cout << endl;
        return ;
    }
    for(int i=1;i<=n;i++){
        if(!flag[i]){
            flag[i]=true;
            a[k+1]=i;

            f(k+1);

            flag[i]=false;
            a[k+1]=0;
        }
    }
    return ;
}
int main(){
    cin >> n;
    f(0);
    return 0;
}



minmni
6小时前
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[20];
void f(int k,int m){
    for(int i=m+1;i<=n;i++){
        a[k+1]=i;
        f(k+1,i);
    }
    for(int i=1;i<=k;i++){
        if(i!=1){
            cout << ' ';
        }
        cout << a[i];
    }
    cout << endl;
    return ;
}
int main(){
    cin >> n;
    f(0,0);
    return 0;
}


活动打卡代码 AcWing 796. 子矩阵的和

minmni
6小时前
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int a[1005][1005]={0};
    int n,m,q;
    cin >> n >> m >> q;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            int p;
            cin >> p;
            a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+p;
        }
    }
    while(q--){
        int x1,y1,x2,y2;
        cin >> x1 >> y1 >> x2 >> y2;
        cout << a[x2][y2]-a[x1-1][y2]-a[x2][y1-1]+a[x1-1][y1-1] << endl;
    }
    return 0;
}


活动打卡代码 AcWing 795. 前缀和

minmni
6小时前
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int n,m;
    int s[100005];
    cin >> n >> m;
    s[0]=0;
    for(int i=1;i<=n;i++){
        int q;
        cin >> q;
        s[i]=s[i-1]+q;
    }
    while(m--){
        int q,p;
        cin >> q >> p;
        cout << s[p]-s[q-1] << endl;
    }
    return 0;
}


活动打卡代码 AcWing 790. 数的三次方根

minmni
1天前
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    double n;
    cin>>n;
    double l=-30,r=30;
    while((r-l)>=0.00000001){
        double mid = (l+r)/2.0;
        if(mid*mid*mid>=n){
            r=mid;
        }
        else{
            l=mid;
        }
    }
    printf("%.6lf",l);
    return 0;
}


活动打卡代码 AcWing 789. 数的范围

minmni
1天前
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int n,q;
    int a[100005];
    cin >> n >> q;
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    while(q--){
        int p;
        cin >> p;
        int l=0,r=n-1;
        while(l<r){
            int mid=l+r >> 1;
            if(a[mid]>=p){
                r=mid;
            }
            else{
                l=mid+1;
            }
        }
        int left=l;
        if(a[left]==p){
            l=0,r=n-1;
            while(l<r){
                int mid=l+r+1 >> 1;
                if(a[mid]<=p){
                    l=mid;
                }
                else{
                    r=mid-1;
                }   
            }
            printf("%d %d\n",left,l);
        }
        else{
            printf("-1 -1\n");
        }
    }
    return 0;
}


活动打卡代码 AcWing 95. 费解的开关

minmni
15天前
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

int a[5][5];
int xx[5]={0,0,0,1,-1};
int yy[5]={0,1,-1,0,0};
int mi=50;


void turn(int x,int y){
    for(int i=0;i<5;i++){
        int x1=x+xx[i];
        int y1=y+yy[i];
        if(x1>=0&&x1<5&&y1>=0&&y1<5){
            a[x1][y1]=!a[x1][y1];
        }
    }
    return ;
}

void g(int num){
    int b[5][5];
    memcpy(b,a,sizeof( a));

    for(int i=0;i<4;i++){
        for(int j=0;j<5;j++){
            if(!a[i][j]){
                turn(i+1,j);
                num++;
                if(num>6){
                    memcpy(a,b,sizeof( a));
                    return ;
                }
            }
        }
    }

    bool flag=true;
    for(int i=0;i<5;i++){
        if(!a[4][i]){
            flag=false;
            break;
        }
    }
    if(flag){
        if(num<mi){
            mi=num;
        }
    }

    memcpy(a,b,sizeof( a));
    return ;

}

void f(int beg,int num){

    for(int i=beg;i<5;i++){
        turn(0,i);
        f(i+1,num+1);   //不能用num++,因为num++是先使用现在的num,在进行+1操作
        turn(0,i);
    }

    g(num);

    return ;

}


int main(){
    int n;
    cin >> n;
    while(n--){
        int m;
        for(int i =0 ;i<5;i++){
            scanf("%d",&m);
            for(int j=4;j>=0;j--){
                a[i][j]=m%10;
                m/=10;
            }
        }
        f(0,0);
        if(mi<=6) cout<<mi;
        else cout << -1;

        cout<<endl;
        mi=50;
    }

    return 0;
}