头像

Vilsy

郑州大学




离线:28天前


活动打卡代码 AcWing 1209. 带分数

Vilsy
5个月前
#include<iostream>
#include<algorithm>
using namespace std;
const int N=20;
int g[N];
bool st[N];
int n,a,b,c;
long long res=0;
int get(int a,int b){
    int ans=0;
    for(int i=a;i<=b;i++){
        ans=ans*10+g[i];
    }
    return ans;
}
void dfs(int u){
    if(u>9){
        for(int i=1;i<8;i++){
            for(int j=i+1;j<9;j++){
               a=get(1,i);
               b=get(i+1,j);
               c=get(j+1,9);
               if((long long)n*c==a*c+(long long)b) res++;
            }
        }
    }
    for(int i=1;i<=9;i++){
        if(!st[i]){
            g[u]=i;
            st[i]=true;
            dfs(u+1);
            st[i]=false;
        }
    }
}
int main(){
    cin>>n;
    dfs(1);
    cout<<res<<endl;
    return 0;
}



Vilsy
5个月前
#include<iostream>
#include<algorithm>
using namespace std;
const int N=30;
int g[N];
bool st[N];
int n,m;
void dfs(int u,int start){
    if(u+n-start<m) return ;
    if(u>m){
        for(int i=1;i<=m;i++) cout<<g[i]<<" ";
        cout<<endl;
        return ;
    }
    for(int i=start;i<=n;i++){
        if(!st[i]){
            st[i]=true;
            g[u]=i;
            dfs(u+1,i+1);
            st[i]=false;
        }
    }
}
int main(){
    cin>>n>>m;
    dfs(1,1);
    return 0;
}


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

Vilsy
5个月前
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=6;
char g[N][N],cy[N][N];
int dx[5]={0,-1,0,1,0},dy[5]={1,0,-1,0,0};
void turn(int x,int y){
    for(int i=0;i<5;i++){
        int a=x+dx[i],b=y+dy[i];
        if(a<0||a>=5||b<0||b>=5) continue;
        g[a][b]^=1;
    }
}
int main(){
    int t;
    cin>>t;
    while(t--){
        for(int i=0;i<5;i++) cin>>g[i];
        int res=10;
        for(int op=0;op<32;op++){
            int step=0;
            memcpy(cy,g,sizeof g);
            for(int i=0;i<5;i++){
                if(op>>i&1){
                    step++;
                    turn(0,i);
                }
            }
            for(int i=0;i<4;i++){
                for(int j=0;j<5;j++){
                    if(g[i][j]=='0'){
                        step++;
                        turn(i+1,j);
                    }
                }
            }
            bool black=false;
            for(int i=0;i<5;i++){
                if(g[4][i]=='0'){
                    black=true;
                    break;
                }
            }
            if(!black) res=min(res,step);
            memcpy(g,cy,sizeof g);
        }
        if(res>6) cout<<"-1"<<endl;
        else cout<<res<<endl;

    }
    return 0;
}


活动打卡代码 AcWing 717. 简单斐波那契

Vilsy
5个月前
#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a=0;int b=1;
    int c;
    for(int i=0;i<n;i++){
        cout<<a<<" ";
        c=a+b;
        a=b;b=c;
    }
    cout<<endl;
    return 0;
}



Vilsy
5个月前
#include<iostream>
using namespace std;
const int N=15;
int state[N];
bool st[N];
int n;
void dfs(int u){
    if(u>n){
        for(int i=1;i<=n;i++) cout<<state[i]<<" ";
        cout<<endl;
        return ;
    }
    for(int i=1;i<=n;i++){
        if(st[i]==false){
            state[u]=i;
            st[i]=true;
            dfs(u+1);
            st[i]=false;
        }
    }
}
int main(){
    cin>>n;
    dfs(1);
    return 0;
}



Vilsy
5个月前
#include<iostream>
using namespace std;
const int N=20;
int st[N];
int n;
void dfs(int u){
    if(u>n){
        for(int i=1;i<=n;i++){
            if(st[i]==1) cout<<i<<" ";

        }
        cout<<endl;
        return ;
    }
    st[u]=1;
    dfs(u+1);
    st[u]=0;
    st[u]=2;
    dfs(u+1);
    st[u]=0;
}
int main(){
    cin>>n;
    dfs(1);
    return 0;
}


活动打卡代码 AcWing 843. n-皇后问题

Vilsy
10个月前
//c++
#include<iostream>
using namespace std;
const int N=20;
int n;
char g[N][N];
bool col[N],dg[N],udg[N];
void dfs(int u){
    if(u==n){
        for(int i=0;i<n;i++) cout<<g[i]<<endl;
        cout<<endl;
        return ;
    }
    for(int i=0;i<n;i++){
        if(!col[i]&&!dg[i-u+n]&&!udg[i+u]){
            g[u][i]='Q';
            col[i]=dg[i-u+n]=udg[i+u]=true;
            dfs(u+1);
            g[u][i]='.';
            col[i]=dg[i-u+n]=udg[i+u]=false;


        }
    }
}
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++) g[i][j]='.';
    }
    dfs(0);
    return 0;
}
//java
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt();
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++) g[i][j]='.';
        dfs(0);
        sc.close();
    }    
    static final int N=20;
    static int n;
    static char[][] g=new char[N][N]; 
    static boolean[] col=new boolean[N],dg=new boolean[N],udg=new boolean[N];
    static void dfs(int u){
        if(u==n){
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++)
                    System.out.print(g[i][j]);
                System.out.println();

            }
            System.out.println();
            return;
        }
        for(int i=0;i<n;i++){
            if(!col[i]&&!dg[i+u]&&!udg[i-u+n]){
                g[u][i]='Q';;
                col[i]=dg[i+u]=udg[i-u+n]=true;
                dfs(u+1);
                g[u][i]='.';
                col[i]=dg[i+u]=udg[i-u+n]=false;
            }
        }
    }
}


活动打卡代码 AcWing 844. 走迷宫

Vilsy
10个月前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=110;
int n,m;
typedef pair<int,int> PII;
int g[N][N],d[N][N];
queue<PII> q;
int bfs(){
    memset(d,-1,sizeof d);
    d[0][0]=0;
    q.push({0,0});
    int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
    while(q.size()){
        auto t=q.front();
        q.pop();
        for(int i=0;i<4;i++){
            int x=t.first+dx[i],y=t.second+dy[i];
            if(x>=0&&x<n&&y>=0&&y<m&&g[x][y]==0&&d[x][y]==-1){
                d[x][y]=d[t.first][t.second]+1;
                q.push({x,y});
            }
        }
    }
    return d[n-1][m-1];
}
int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++) cin>>g[i][j];
    }
    cout<<bfs()<<endl;
    return 0;
}


活动打卡代码 AcWing 842. 排列数字

Vilsy
10个月前
//c++
#include<iostream>
using namespace std;
const int N=10;
int n;
int path[N];
void dfs(int u,int state){
    if(u==n){
        for(int i=0;i<n;i++){
            cout<<path[i]<<" ";
        }
        cout<<endl;
    }
    for(int i=0;i<n;i++){
        if(!(state>>i&1)){
            path[u]=i+1;
            dfs(u+1,state+(1<<i));
        }
    }
}
int main(){
    cin>>n;
    dfs(0,0);
    return 0;
}
//java
import java.util.*;
public class Main{
    static int n=0;
    static int N=10;
    static int[] path=new int[N];
    static boolean[] b=new boolean[N];
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt();
        dfs(0);
        sc.close();
    }
    public static void dfs(int u){
        if(u==n){
            for(int i=0;i<n;i++){
                System.out.print(path[i]+" ");
            }
            System.out.println();
            return;
        }
        for(int i=0;i<n;i++){
            if(!b[i]){
                path[u]=i+1;
                b[i]=true;
                dfs(u+1);
                b[i]=false;
            }
        }
    }
}



活动打卡代码 AcWing 125. 耍杂技的牛

Vilsy
10个月前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
typedef long long LL;
typedef pair<int,int> PII;
PII cow[N];
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        int s,w;
        cin>>w>>s;
        cow[i]={w+s,w};
    }
    sort(cow,cow+n);
    LL res=-2e9,sum=0;
    for(int i=0;i<n;i++){
        auto w=cow[i].second,s=cow[i].first-cow[i].second;
        res=max(res,sum-s);
        sum+=w;
    }
    cout<<res<<endl;
    return 0;
}