头像

Bamboo丶Gamom

No.1 Middle School in Chong Qing, China




离线:14小时前



/**
 * @param {string} str
 * @param {number} n
 * @returns {string}
 */
var leftRotateString= function(str, n) {
    return str.substr(n,str.length-n)+str.substr(0,n);
};


新鲜事 原文

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAASsJTYQAAAAASUVORK5CYII=


活动打卡代码 AcWing 321. 棋盘分割

#include<bits/stdc++.h>
using namespace std;
const int N=18,M=10;
int n,m=8;
int s[M][M];
double f[M][M][M][M][N];
const double inf = 1e9;
double x;
double get(int a,int b,int c,int d){
    double sum=s[c][d]-s[c][b-1]-s[a-1][d]+s[a-1][b-1]-x;
    return sum*sum/n;
}
double dfs(int x,int y,int dx,int dy,int k){
    double &v=f[x][y][dx][dy][k];
    if(v>=0) return v;
    if(k==1) return v=get(x,y,dx,dy);
    v=inf;
    for(int i=x;i<dx;i++){
        v=min(v,dfs(x,y,i,dy,k-1)+get(i+1,y,dx,dy));
        v=min(v,dfs(i+1,y,dx,dy,k-1)+get(x,y,i,dy));
    }
    for(int i=y;i<dy;i++){
        v=min(v,dfs(x,y,dx,i,k-1)+get(x,i+1,dx,dy));
        v=min(v,dfs(x,i+1,dx,dy,k-1)+get(x,y,dx,i));
    }
    return v;
}
int main(){
    cin>>n;
    for(int i=1;i<=m;i++) for(int j=1;j<=m;j++){
        cin>>s[i][j];
        s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
    }
    memset(f,-1,sizeof f);
    x=(double) s[m][m]/n;
    printf("%.3lf",sqrt(dfs(1,1,8,8,n)));
}


活动打卡代码 AcWing 1113. 红与黑

复制代码到粘帖板
#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,cx=0,cy=0;
char a[1001][1001];
//void print(){
//  for(int i=1;i<=n;i++){
//      for(int j=1;j<=m;j++){
//          cout<<((char)a[i][j]);
//      }
//      cout<<endl;
//  }
//}
void doit(int i,int j) {
    cnt++;
    a[i][j]='#';
    if(a[i][j-1]=='.' && j>1) { //左
        doit(i,j-1);
    }
    if(a[i][j+1]=='.' && j<m) { //右
        doit(i,j+1);
    }
    if(a[i-1][j]=='.' && i>1) { //上
        doit(i-1,j);
    }
    if(a[i+1][j]=='.' && i<n) { //下
        doit(i+1,j);
    }
};

int main() {
    while(true) {
        cin>>m>>n;//横向 纵向
        if(m==0 && n==0){
            break;
        }
        memset(a,0,sizeof(a));
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=m; j++) {
                cin>>a[i][j];
                if(a[i][j]=='@') {
                    cx=i;
                    cy=j;
                }
            }
        }
        doit(cx,cy);
        cout<<cnt<<endl;
        cnt=0;
    }
    return 0;
}


活动打卡代码 AcWing 1112. 迷宫

#include<bits/stdc++.h>
using namespace std;
const int N = 540;
int n;
char s[N][N];
bool ans=0,flag[N][N];
int startx,starty,endx,endy;
int thisway[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
bool check(int x,int y){
    if(x<1 || y<1 || x>n || y>n || s[x][y]=='#' || flag[x][y]) return false;
    return true;
}
void dfs(int x,int y,int step){
    if(s[x][y]=='#') return;
    flag[x][y]=true;
    if(x==endx && y==endy){
        ans=true;
        return;
    }
    for(int i=0;i<4;i++){
        int dx=x+thisway[i][0];
        int dy=y+thisway[i][1];
        if(check(dx,dy)){
            dfs(dx,dy,step+1);
        }
    }
}
void teprint(){
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
        cout<<setw(3)<<flag[i][j];
        cout<<endl;
    }
}
int main(){
    int k;
    cin>>k;
    while(k--){
        memset(flag,0,sizeof flag);
        cin>>n;
        ans=false;
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){
            cin>>s[i][j];
        }
        cin>>startx>>starty>>endx>>endy;
        startx++,starty++,endx++,endy++;
        dfs(startx,starty,1);
        //teprint();
        cout<<(ans?"YES":"NO")<<endl;
    }
}



#include<bits/stdc++.h>
using namespace std;
const int N=18,M=10;
int n,m=8;
int s[M][M];
double f[M][M][M][M][N];
const double inf = 1e9;
double x;
double get(int a,int b,int c,int d){
    double sum=s[c][d]-s[c][b-1]-s[a-1][d]+s[a-1][b-1]-x;
    return sum*sum/n;
}
double dfs(int x,int y,int dx,int dy,int k){
    double &v=f[x][y][dx][dy][k];
    if(v>=0) return v;
    if(k==1) return v=get(x,y,dx,dy);
    v=inf;
    for(int i=x;i<dx;i++){
        v=min(v,dfs(x,y,i,dy,k-1)+get(i+1,y,dx,dy));
        v=min(v,dfs(i+1,y,dx,dy,k-1)+get(x,y,i,dy));
    }
    for(int i=y;i<dy;i++){
        v=min(v,dfs(x,y,dx,i,k-1)+get(x,i+1,dx,dy));
        v=min(v,dfs(x,i+1,dx,dy,k-1)+get(x,y,dx,i));
    }
    return v;
}
int main(){
    cin>>n;
    for(int i=1;i<=m;i++) for(int j=1;j<=m;j++){
        cin>>s[i][j];
        s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
    }
    memset(f,-1,sizeof f);
    x=(double) s[m][m]/n;
    printf("%.3lf",sqrt(dfs(1,1,8,8,n)));
}


新鲜事 原文

# 403 Forbidden ------ nginx/1.10.3 (Ubuntu)



一定要初始化~

不开long long建祖宗~

#include<bits/stdc++.h>
using namespace std;
vector<int> f[101][101];
long long w[101];
vector<int> add(vector<int> a,vector<int>b){
    vector<int> c;
    int t=0;
    for(int i=0;i<a.size()||i<b.size();i++){
        if(i<a.size()) t+=a[i];
        if(i<b.size()) t+=b[i];
        c.push_back(t%10);
        t/=10;
    }
    if(t>0) c.push_back(t);
    return c;
}
vector<int> mul(vector<int> a,long long b){
    vector<int> c;
    long long t=0;
    for(int i=0;i<a.size()||t;i++){
        if(i<a.size()){
            t+=a[i]*(long long)b;
        }
        //cout<<":"<<t<<endl;
        c.push_back(t%10);
        t/=10;
    }
    return c;
}
vector<int> min_v(vector<int> a,vector<int> b){
    if(a.size()<b.size()){
        return a;
    }
    if(a.size()>b.size()){
        return b;
    }
    for(int i=a.size()-1;i>=0;i--){
        if(a[i]>b[i]) return b;
        else if(a[i]<b[i]) return a;
    }
    return a;
}
int main(){
    //memset(f,0x3f,sizeof f);
    int n;
    cin>>n;
    //vector<int> a = vector<int>(1,3);
    //int b=5;
    //vector<int> c = mul(a,b);
    //for(int i=c.size()-1;i>=0;i--) cout<<c[i];
    //cout<<endl;
    for(int i=1;i<=n;i++){
        cin>>w[i];
    }

    for(int len=3;len<=n;len++){
        for(int l=1;l+len-1<=n;l++){

            int r=l+len-1;
            f[l][r]=vector<int>(55,1);
            for(int k=l+1;k<=r-1;k++){
                vector<int> t;
                t.clear();
                t.push_back(w[l]);
                t=mul(t,w[k]);
                t=mul(t,w[r]);
                t=add(t,f[l][k]);
                t=add(t,f[k][r]);
                f[l][r]=min_v(f[l][r],t);

            }
        }
    }

    for(int i=f[1][n].size()-1;i>=0;i--)
        cout<<f[1][n][i];
    cout<<endl;
}


新鲜事 原文

Acw
图片


新鲜事 原文

ACWing
图片