Skip to content

實作二

b965. 2. 矩陣轉換(2016/3)

程式碼
#include<bits/stdc++.h>
using namespace std;
#define N 555
#define nn "\n"
#define int long long
//---------------------------------------------------

int v[N][N];
//---------------------------------------------------
#undef int
int main(){
#define int long long
//---------------------------------------------------
//istringstream cin("6 7 3 \
3 2 2 1 \
1 6 1 2 \
1 3 2 5");
    int n,m,k;
    cin>>n>>m>>k;
    for(int ii=0;ii<k;ii++){
        int a,b,c,d;
        cin>>a>>b>>c>>d;

        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(abs(a-i)+abs(b-j)<=c){
                    v[i][j]+=d;
                }
            }
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<v[i][j]<<" ";
        }cout<<nn;
    }
    return 0;
//---------------------------------------------------
}

c295. APCS-2016-1029-2最大和(2016/10)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define stop system("pause");
int v[30][30];
int f[30];
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
//    istringstream cin("3 2 \
1 5 \
6 4 \
1 1");
//    istringstream cin("4 3 \
6 3 2 \
2 7 9 \
4 7 1 \
9 5 3");
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>v[i][j];
        }
    }
    int ans=0;
    int isn=0;
    for(int i=0;i<n;i++){
        int ma=0;
        for(int j=0;j<m;j++){
            ma=max(ma,v[i][j]);
        }
        ans+=ma;
        f[i]=ma;
    }
//    for(int i=0;i<n;i++){
//        cout<<f[i];
//    }
    cout<<ans<<"\n";
    int p=0;
    for(int i=0;i<n;i++){
        if(ans%f[i]==0){

            if(p==1){
                cout<<" ";
            }
            cout<<f[i];
            p=1;

            isn=1;
        }
    }
    if(isn==0){
        cout<<-1;
    }
    return 0;
}

c291. APCS 2017-0304-2小群體(2017/3)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define stop system("pause");
#define N 50001
int v[N];
bool vis[N];
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    // istringstream cin("10 \
4 7 2 9 6 0 8 1 5 3");
    cin.tie(0);
    // istringstream cin("3 \
0 2 1");
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>v[i];
    }
    int ans=0;
    for(int i=0;i<n;i++){
        if(vis[i]){
            continue;
        }
        int f=i;
        // cout<<"i: "<<i<<"\n";
        vis[i]=true;
        
        while(!vis[v[f]]){
            vis[v[f]]=true;
            f=v[f];
            
            // cout<<"f: "<<f<<"\n";
        }
        ans++;
    }
    cout<<ans;
    return 0;
}
"難不會考"

難、不會考! c462. apcs 交錯字串 (Alternating Strings)(2017/10)

程式碼

o(n)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define stop system("pause");
#define N 200001

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    // istringstream cin("1 aBBdaaa");
    // istringstream cin("3 DDaasAAbbCC");
    // istringstream cin("2 aafAXbbCDCCC");
    // istringstream cin("3 DDaaAAbbCC");
    int k;
    string s;
    cin>>k;
    cin>>s;
    int n=s.size();
    int v[N];
    vector<int>vv;
    for(int i=0;i<n;i++){
        if('a'<=s[i] && s[i]<='z'){
            v[i]=0;
        }
        else{
            v[i]=1;
        }
    }
    int sum=1;
    for(int i=1;i<n;i++){
        
        if(v[i-1]==v[i]){
            sum++;
        }
        else{
            vv.push_back(sum);
            sum=1;
        }
        if(i==n-1){
            vv.push_back(sum);
        }
    }
    n=vv.size();
    int l=0;
    sum=0;
    int ans=0;
    for(int r=0;r<n;r++){
        if(vv[r]==k){
            sum++;
            int p=0;
            if(l-1>=0 && vv[l-1]>k)p++;
            if(r+1<n && vv[r+1]>k)p++;
            if(sum+p>ans){
                ans=sum+p;
            }
        }
        else{
            l=r+1;
            sum=0;
        }
    }
    ans*=k;
    if(s.size()==1 && k==1){
        ans=1;
    }
    cout<<ans;
    return 0;
}

O(n^2)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define stop system("pause");
int v[100001];
int k;
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    // istringstream cin("1 \
aBBdaaa");
    // istringstream cin("3 \
DDaasAAbbCC");
    // istringstream cin("2 \
aafAXbbCDCCC");
    // istringstream cin("3 \
DDaaAAbbCC");
    cin>>k;
    string s;
    cin>>s;
    int n=s.size();
    // for(int i=0;i<n;i++){
    //     cout<<s[i];
    // }cout<<"\n";
    for(int i=0;i<n;i++){
        if('a'<=s[i] && s[i]<='z'){
            v[i]=-1;
        }
        else{
            v[i]=1;
        }
    }
    int ans=0;
    for(int i=0;i<n;i++){
        int f=v[i];
        int sum=0;
        int t=0;

        for(int j=i;j<n;j++){
            if(v[j]!=f){
                break;
            }
            t++;
            if(t==k){
                sum+=k;
                t=0;
                f*=-1;
            }
        }
        ans=max(ans,sum);
    }
    cout<<ans;
return 0;
}

難、不會考! e294. APCS 類似題 - 小崴的新發現(2018/6)


d007: 習題 Q-1-8. 子集合的和 (2018/10)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define stop system("pause");
int n,m;
int v[30];
int ans;
void d(int i,int sum){
    if(sum<=m)ans=max(ans,sum);
    if(i==n || sum>m)return;
    d(i+1,sum+v[i]);
    d(i+1,sum);
    return;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>v[i];
    }
    d(0,0);
    cout<<ans;
    return 0;
}
"難不會考"

難、不會考! 紅白彩帶(2019/2)


e287. 機器人的路徑(2019/6)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define stop system("pause");
int v[1000][1000];
int ans=0;
int n,m;
int x,y;
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>m;
    int mi=INT_MAX;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>v[i][j];
            if(v[i][j]<mi){
                mi=v[i][j];
                x=i,y=j;
            }
        }
    }
    for(int i=0;i<=n+1;i++){
        v[i][0]=0;
        v[i][m+1]=0;
    }
    for(int j=0;j<=m+1;j++){
        v[0][j]=0;
        v[n+1][j]=0;
    }
    ans+=v[x][y];
    int a[4]={0,-1,0,1};
    int b[4]={-1,0,1,0};
    v[x][y]=0;
    while(1){
        int mi=INT_MAX;
        int mix=-1;
        int miy=-1;
        for(int i=0;i<4;i++){
            if(v[x+a[i]][y+b[i]]<mi && v[x+a[i]][y+b[i]]!=0){
                mi=v[x+a[i]][y+b[i]];
                mix=x+a[i];
                miy=y+b[i];
            }
        }
        if(mix==-1&&miy==-1)break;
        ans+=v[mix][miy];
        v[mix][miy]=0;
        x=mix,y=miy;
    }
    cout<<ans;
    return 0;
}

h027. 202001_2 矩陣總和(2020/1)

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

signed main(){
//    istringstream cin("3 3 5 5 2 \
1 2 1 \
2 4 2 \
2 4 5 \
1 2 1 2 3 \
2 4 2 4 2 \
2 4 2 3 5 \
3 2 4 2 0 \
3 2 4 5 5");

    int n,m,nn,mm,t,ans=0,mi=LONG_LONG_MAX;

    cin>>n>>m>>nn>>mm>>t;

    int v[101][101]={};
    int vv[101][101]={};

    int sum=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>v[i][j];
            sum+=v[i][j];
        }
    }
    for(int i=0;i<nn;i++){
        for(int j=0;j<mm;j++){
            cin>>vv[i][j];
        }
    }


//    cout<<sum<<"\n";

//    for(int i=0;i<nn;i++){
//        for(int j=0;j<mm;j++){
//            cout<<vv[i][j];
//        }cout<<"\n";
//    }


//    cout<<"\n";


    for(int i=0;i<nn-n+1;i++){
        for(int j=0;j<mm-m+1;j++){
            int ssum=0;
            int d=0;
            for(int k=i;k<i+n;k++){
                for(int l=j;l<j+m;l++){
                    ssum+=vv[k][l];
                    if(v[k-i][l-j]!=vv[k][l]){
                        d++;
                    }
//                    cout<<vv[k][l];
                }
//                cout<<"\n";
            }
//            cout<<"ssum: "<<ssum<<"\n";
//            cout<<"d: "<<d<<"\n";
            if(d<=t){
                ans++;
                mi=min(mi,abs(ssum-sum));
            }
        }
    }


    cout<<ans<<"\n";

    if(mi==LONG_LONG_MAX){
        cout<<-1;
    }
    else{
        cout<<mi;
    }





    return 0;
}

f580. 2. 骰子(2020/7)

#include<bits/stdc++.h>
using namespace std;
#define int long long
int v[21][3][3]={};
int n,m;
void out(){
    for(int i=0;i<n;i++){
        for(int j=0;j<3;j++){
            for(int k=0;k<3;k++){
                cout<<v[i][j][k]<<" ";
            }cout<<"\n";
        }cout<<"\n";
    }
    cout<<"-----------------------\n";
    return;
}
void r(int x){
    int temp;
    temp=v[x][1][0];
    v[x][1][0]=v[x][2][2];
    v[x][2][2]=v[x][1][2];
    v[x][1][2]=v[x][1][1];
    v[x][1][1]=temp;

    return;
}
void f(int x){
    int temp;
    temp=v[x][0][1];
    v[x][0][1]=v[x][2][2];
    v[x][2][2]=v[x][2][1];
    v[x][2][1]=v[x][1][1];
    v[x][1][1]=temp;

    return;
}
void sw(int x,int y){
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            swap(v[x][i][j],v[y][i][j]);
        }
    }

    return;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
//    istringstream cin("1 2 \
1 -2 \
1 -1");
//    istringstream cin("3 3 \
2 -1 \
3 -2 \
3 1");
    cin>>n>>m;
    for(int i=0;i<n;i++){
        v[i][0][1]=3;
        v[i][1][0]=5;
        v[i][1][1]=1;
        v[i][1][2]=2;
        v[i][2][1]=4;
        v[i][2][2]=6;
    }
    for(int i=0;i<m;i++){
        int x,y;
        cin>>x>>y;
        x--;y--;
        if(y==-2){
            f(x);
        }
        else if(y==-3){
            r(x);
        }
        else{
            sw(x,y);
        }
//        out();
    }
    for(int i=0;i<n;i++){
        cout<<v[i][1][1]<<" ";
    }
    return 0;
}

f313. 2. 人口遷移(2020/10)

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

int v[60][60]={};
int n,m,k,w;

void out(){
    for(int i=0;i<n+2;i++){
        for(int j=0;j<m+2;j++){
            cout<<v[i][j]<<" ";
        }cout<<"\n";
    }
    return;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

//    istringstream cin("2 3 4 1 \
10 2 -1  \
5 -1 2");

    cin>>n>>m>>k>>w;
    for(int i=0;i<n+2;i++){
        for(int j=0;j<m+2;j++){
            v[i][j]=-1;
        }
    }
    for(int i=1;i<n+1;i++){
        for(int j=1;j<m+1;j++){
            cin>>v[i][j];
        }
    }
    for(int t=0;t<w;t++){
        int vv[60][60]={};
        for(int i=1;i<n+1;i++){
            for(int j=1;j<m+1;j++){
                if(v[i][j]==-1)continue;
                int g=v[i][j]/k;
                if(v[i+1][j]!=-1){
                    vv[i][j]-=g;
                    vv[i+1][j]+=g;
                }
                if(v[i-1][j]!=-1){
                    vv[i][j]-=g;
                    vv[i-1][j]+=g;
                }
                if(v[i][j+1]!=-1){
                    vv[i][j]-=g;
                    vv[i][j+1]+=g;
                }
                if(v[i][j-1]!=-1){
                    vv[i][j]-=g;
                    vv[i][j-1]+=g;
                }
            }
        }
        for(int i=1;i<n+1;i++){
            for(int j=1;j<m+1;j++){
                v[i][j]+=vv[i][j];
            }
        }
    }
    int ma=LONG_LONG_MIN,mi=LONG_LONG_MAX;
    for(int i=1;i<n+1;i++){
        for(int j=1;j<m+1;j++){
            if(v[i][j]>ma && v[i][j]!=-1){
                ma=v[i][j];
            }
            if(v[i][j]<mi && v[i][j]!=-1){
                mi=v[i][j];
            }
        }
    }
    cout<<mi<<"\n"<<ma;
    return 0;
}

f606. 2. 流量(2021/1)

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

int n,m,k;
int mi=LONG_LONG_MAX;
int q[60][60];

signed main(){
    cin>>n>>m>>k;

    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>q[i][j];
        }
    }
    for(int i=0;i<k;i++){
        int v[60][60]={};
        for(int j=0;j<n;j++){
            int s;
            cin>>s;
            for(int k=0;k<m;k++){
                v[s][k]+=q[j][k];
            }
        }

        int sum=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<m;j++){
                if(i==j){
                    sum+=v[i][j]*1;
                }
                else{
                    if(v[i][j]>1000){
                        sum+=1000*3+(v[i][j]-1000)*2;
                    }
                    else{
                        sum+=v[i][j]*3;
                    }
                }
            }
        }
        mi=min(mi,sum);
    }
    cout<<mi;
    return 0;
}

g276. 2. 魔王迷宮(2021/9)

約O(n^3)
#include <bits/stdc++.h>
using namespace std;
#define int long long

int v[200][200];
int b[600][4];
int die[600];
int n,m,k;

void outv(){
    cout<<"\nv:  ";
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<v[i][j]<<" ";
        }cout<<"\n";
    }
//    cout<<"--------\n";
    return;
}

void outb(){
    cout<<"\n";
    for(int i=0;i<k;i++){
        if(die[i]==1){
            continue;
        }
        cout<<i<<": ";
        for(int j=0;j<4;j++){

            cout<<b[i][j]<<" ";
        }cout<<"\n";
    }
    cout<<"--------\n";

    return;
}

void put(){
    for(int i=0;i<k;i++){
        if(die[i]==1){
            continue;
        }
        int x=b[i][0];
        int y=b[i][1];
        int d=die[i];
//        printf("k,x,y:%d %d %d\n",k,x,y);
        v[x][y]=1;
    }
    return;
}

void mov(){
    for(int i=0;i<k;i++){
        if(die[i]==1){
            continue;
        }
        if(b[i][0]+b[i][2]>=0 && b[i][0]+b[i][2]<n){
            b[i][0]+=b[i][2];
        }
        else{
            die[i]=1;
        }

        if(b[i][1]+b[i][3]>=0 && b[i][1]+b[i][3]<m){
            b[i][1]+=b[i][3];
        }
        else{
            die[i]=1;
        }
    }
    return;
}

void tnt(){
    int prtnt[200][200]={};

    for(int i=0;i<k;i++){
        if(die[i]==1)continue;

        if(v[b[i][0]][b[i][1]]==1){
            die[i]=1;
            prtnt[b[i][0]][b[i][1]]=1;
        }
    }

    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(prtnt[i][j]==1){
                v[i][j]=0;
            }
        }
    }

    return;
}

int alldie(){
    for(int i=0;i<k;i++){
        if(die[i]==0)return 0;
    }
    return 1;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
//    istringstream cin("1 6 3 \
0 0 0 0 \
0 2 0 -1 \
0 4 0 2");
//    istringstream cin("5 5 2 \
0 0 3 2 \
0 0 2 3");
    cin>>n>>m>>k;
    for(int i=0;i<k;i++){
        for(int j=0;j<4;j++){
            cin>>b[i][j];
        }
    }
    int w=4;
    while(!alldie()){
        put();
//        outv();

//        outb();
        mov();
//        outb();
        tnt();
//        outv();
//        outb();
    }
    int ans=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(v[i][j]==1)ans++;
        }
    }
    cout<<ans;
    return 0;
}
約O(n^4)
#include <bits/stdc++.h>
using namespace std;
#define int long long 

int v[200][200];
int b[600][4];
int die[600];
int n,m,k;

void outv(){
    cout<<"\nv:  ";
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<v[i][j]<<" ";
        }cout<<"\n";
    }
//    cout<<"--------\n";
    return;
}

void outb(){
    cout<<"\n";
    for(int i=0;i<k;i++){
        if(die[i]==1){
            continue;
        }
        cout<<i<<": ";
        for(int j=0;j<4;j++){

            cout<<b[i][j]<<" ";
        }cout<<"\n";
    }
    cout<<"--------\n";

    return;
}

void put(){
    for(int i=0;i<k;i++){
        if(die[i]==1){
            continue;
        }
        int x=b[i][0];
        int y=b[i][1];
        int d=die[i];
//        printf("k,x,y:%d %d %d\n",k,x,y);
        v[x][y]=1;
    }
    return;
}

void mov(){
    for(int i=0;i<k;i++){
        if(die[i]==1){
            continue;
        }
        if(b[i][0]+b[i][2]>=0 && b[i][0]+b[i][2]<n){
            b[i][0]+=b[i][2];
        }
        else{
            die[i]=1;
        }

        if(b[i][1]+b[i][3]>=0 && b[i][1]+b[i][3]<m){
            b[i][1]+=b[i][3];
        }
        else{
            die[i]=1;
        }
    }
    return;
}

void tnt(){
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(v[i][j]==0)continue;
//            printf("v[i][j]: %d %d\n",i,j );
            int tntt=0;
            for(int kk=0;kk<k;kk++){
                if(die[kk]==1)continue;
                if(b[kk][0]==i && b[kk][1]==j){
                    die[kk]=1;
//                    printf("die: %d\n",kk );
                    tntt=1;
                }
            }
            if(tntt==1)v[i][j]=0;
        }
    }
    return;
}

int alldie(){
    for(int i=0;i<k;i++){
        if(die[i]==0)return 0;
    }
    return 1;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
//    istringstream cin("1 6 3 \
0 0 0 0 \
0 2 0 -1 \
0 4 0 2");
//    istringstream cin("5 5 2 \
0 0 3 2 \
0 0 2 3");
    cin>>n>>m>>k;
    for(int i=0;i<k;i++){
        for(int j=0;j<4;j++){
            cin>>b[i][j];
        }
    }
    int w=4;
    while(!alldie()){
        put();
//        outv();

//        outb();
        mov();
//        outb();
        tnt();
//        outv();
//        outb();
    }
    int ans=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(v[i][j]==1)ans++;
        }
    }
    cout<<ans;
    return 0;
}

需要很細心! g596. 2. 動線安排(2021/11)


需要很細心!h082. 2. 贏家預測(2022/1)

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int v[1001][5]= {};
int vv[1001][5]= {};
int it=0;
int temp[1001][5]= {};
void outv() {
    cout<<"{";
    for(int i=0; i<n; i++) {
        cout<<v[i][0]<<",";
    }
    cout<<"}";
    cout<<"{";
    for(int i=0; i<n; i++) {

        cout<<v[i][1]<<",";
    }
    cout<<"}";
    cout<<"{";
    for(int i=0; i<n; i++) {

        cout<<v[i][2]<<",";
    }
    cout<<"}";
    cout<<"{";
    for(int i=0; i<n; i++) {

        cout<<v[i][3]<<",";
    }
    cout<<"}";
    cout<<"{";
    for(int i=0; i<n; i++) {

        cout<<v[i][4]<<",";
    }
    cout<<"}";
    cout<<"\n-------------\n";
    return;
}
void outvv() {
    cout<<"{";
    for(int i=0; i<it; i++) {
        cout<<vv[i][0]<<",";
    }
    cout<<"}";

    cout<<"{";
    for(int i=0; i<it; i++) {

        cout<<vv[i][1]<<",";
    }
    cout<<"}";
    cout<<"{";
    for(int i=0; i<it; i++) {

        cout<<vv[i][2]<<",";
    }
    cout<<"}";

    cout<<"{";
    for(int i=0; i<it; i++) {

        cout<<vv[i][4]<<",";
    }
    cout<<"}";
    cout<<"\n-------------\n";
    return;
}
signed main() {
//    istringstream cin("4 1 \
    4 2 5 3 \
    2 5 1 5 \
    1 2 3 4");
//    istringstream cin("4 5 \
    4 1 5 3 \
    6 5 1 6 \
    4 1 3 2");
    cin>>n>>m;
    for(int i=0; i<n; i++) {
        cin>>temp[i][1];
    }
    for(int i=0; i<n; i++) {
        cin>>temp[i][2];
    }
    for(int i=0; i<n; i++) {
        cin>>v[i][0];
    }
//  outv();
    for(int i=0; i<n; i++) {
//        printf("(%lld,%lld)\n",i+1,v[i][0]-1+1);
        v[i][1]=temp[v[i][0]-1][1];
        v[i][2]=temp[v[i][0]-1][2];
    }
//  outv();
    int w=10;
    while(n>1) {
        for(int i=0; i<n-1; i+=2) {
            int a=v[i][1];
            int b=v[i][2];
            int c=v[i+1][1];
            int d=v[i+1][2];
//            printf("(%lld,%lld):a*b=%lld c*d=%lld\n",v[i][0],v[i+1][0],a*b,c*d);
            if(a*b>=c*d) {
                a=v[i][1]+(v[i+1][1]*v[i+1][2])/(2*v[i][2]);
                b=v[i][2]+(v[i+1][1]*v[i+1][2])/(2*v[i][1]);
                c=v[i+1][1]+v[i+1][1]/2;
                d=v[i+1][2]+v[i+1][2]/2;
                v[i][1]=a;
                v[i][2]=b;
                v[i+1][1]=c;
                v[i+1][2]=d;
//                printf("1w a=%lld,b=%lld,c=%lld,d=%lld\n",a,b,c,d);
                v[i][3]=1;
                v[i+1][3]=-1;
                v[i+1][4]++;
            } else {
//                printf("2w a=%lld,b=%lld,c=%lld,d=%lld\n",a,b,c,d);
//                printf("2w (a*b)/(2*c)=%lld\n",(a*b)/(2*c));
                a=v[i][1]+v[i][1]/2;
                b=v[i][2]+v[i][2]/2;
                c=v[i+1][1]+(v[i][1]*v[i][2])/(2*v[i+1][2]);
                d=v[i+1][2]+(v[i][1]*v[i][2])/(2*v[i+1][1]);

                v[i][1]=a;
                v[i][2]=b;
                v[i+1][1]=c;
                v[i+1][2]=d;
//                printf("2w a=%lld,b=%lld,c=%lld,d=%lld\n",a,b,c,d);
                v[i][3]=-1;
                v[i][4]++;
                v[i+1][3]=1;
            }
        }
        it=0;
        for(int i=0; i<n; i++) {
            if(v[i][3]==1) { //win
                for(int j=0; j<5; j++) {
                    vv[it][j]=v[i][j];

                }
                it++;
            }
        }
        for(int i=0; i<n; i++) {
            if(v[i][3]==0) { //pe
                for(int j=0; j<5; j++) {
                    vv[it][j]=v[i][j];

                }
                it++;
            }
        }
        for(int i=0; i<n; i++) {
            if(v[i][3]==-1 && v[i][4]!=m) { //los
                for(int j=0; j<5; j++) {
                    vv[it][j]=v[i][j];

                }
                it++;
            }
        }
        for(int i=0; i<it; i++) {
            for(int j=0; j<5; j++) {
                v[i][j]=vv[i][j];
            }
            v[i][3]=0;
        }
        n=it;
        it=0;
    }
    cout<<v[0][0];
}

i400. 2. 字串解碼(2022/6)

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

int n,m;
int v[200][200]={};
string s;
string ans;

string sub(int l,int r){
    string re;
    for(int i=l;i<=r;i++){
        re+=s[i];
    }

    if(r<0){
        return "";
    }

    return re;
}

string asub(int l,int r){
    string re;
    for(int i=l;i<=r;i++){
        re+=ans[i];
    }

    return re;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
//    istringstream cin("1 5 \
10110 \
CABAD");
//    istringstream cin("3 6 \
111110 \
101101 \
000000 \
RETYWQ");
    cin>>n>>m;
    string c;
    for(int i=0;i<n;i++){
        cin>>c;
        for(int j=0;j<m;j++){
            v[i][j]=c[j]-'0';
        }
    }
    cin>>s;
    for(int i=n-1;i>=0;i--){
        int sum=0;
        for(int j=m-1;j>=1;j--){
            int vv=v[i][j];
            sum+=vv;
            if(vv==0){
                ans=s[j]+ans;
                s=sub(0,s.size()-2);
            }
            else{
                ans=ans+s[j];
                s=sub(0,s.size()-2);
            }
        }
        if(v[i][0]==0){
            ans=s[0]+ans;
        }
        else{
            ans=ans+s[0];
        }
        sum+=v[i][0];
        s=ans;
        int sn=s.size();
        if(sn==2){
            s=asub(1,1)+asub(0,0);
        }
        if(sn>2){
            if(sum&1){//odd
                if(sn%2==1){//01234
                    s=asub(sn/2+1,sn-1)+s[sn/2]+asub(0,sn/2-1);
                }
                else{//0123
                    s=asub(sn/2,sn-1)+asub(0,sn/2-1);
                }
            }
        }
        ans="";
    }
    cout<<s;
    return 0;
}

j123. 2. 運貨站(2022/10)

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

int p[5][2][5]={
{{0,1,2,3},{0,0,0,0}},
{{0,0,0},{0,1,2}},
{{0,0,1,1},{0,1,0,1}},
{{1,1,1,0},{0,1,2,2}},
{{1,2,0,1,2},{0,0,1,1,1}}
};

int pn[5]={4,3,4,4,5};
int pw[5]={1,3,2,3,2};
int v[60][60]={};
int putp=0;
int n,m,k;

int blank(){
    int sum=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(v[i][j]==0){
                sum++;
            }
        }
    }
    return sum;
}

void output(){
    for(int i=0;i<n+3;i++){
        for(int j=0;j<m+3;j++){
            cout<<v[i][j];
        }
        cout<<"\n";
    }
    cout<<"--------------\n";
    return;
}


int canput(int x,int y,int type){
    for(int i=0;i<pn[type];i++){
        int xx=x+p[type][0][i];
        int yy=y+p[type][1][i];
        if(v[xx][yy]!=0){
            return 0;
        }
    }
    return 1;
}



int put(int x,int y,int type){
    for(int i=0;i<pn[type];i++){
        int xx=x+p[type][0][i];
        int yy=y+p[type][1][i];
//        printf("(%d,%d)(%d,%d)\n",x,y,xx,yy);
        v[xx][yy]=type+1;
    }
    return 0;
}


signed main(){
//    ios::sync_with_stdio(0);
//    cin.tie(0);


//    istringstream cin("5 6 6 \
C 1 \
A 1 \
E 0 \
E 0 \
B 0 \
A 0");
//    istringstream cin("5 4 6 \
B 0 \
B 3 \
B 1 \
B 3 \
B 1 \
B 2");


    for(int i=0;i<60;i++){
        for(int j=0;j<60;j++){
            v[i][j]=6;
        }
    }


    cin>>n>>m>>k;

    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            v[i][j]=0;
        }
    }


    for(int i=0;i<k;i++){
        char a;
        int b;

        cin>>a>>b;

        int type=a-'A';
//        printf("type: %d\n",type);

        int pux=b;
        int puy=m-pw[type];

        int w=0;

        if(canput(pux,puy,type)){
            w=1;
            while(canput(pux,puy-1,type)){
                puy-=1;
                if(puy-1<0)break;
            }
        }
        if(w==1){
            put(pux,puy,type);
            putp++;
        }





//        output();

    }

//    put(1,1,0);
//    output();
    cout<<blank()<<" "<<k-putp;




    return 0;
}

j606. 2. 造字程式(2023/1)

#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
//    istringstream cin("5 4 1 \
abcde \
2 1 3 5 4 \
5 1 2 4 3 \
4 1 2 3 5 \
3 1 4 5 2");
//    istringstream cin("4 3 4 \
abac \
4 1 3 2 \
1 2 3 4 \
2 3 4 1");
    int k,q,r;
    cin>>k>>q>>r;
    char ans[100][100];
    cin>>ans[0];
    for(int i=1;i<q+1;i++){
        for(int j=0;j<k;j++){
            int x;
            cin>>x;
            ans[i][x-1]=ans[i-1][j];
        }
    }
    for(int j=0;j<r;j++){
        for(int i=1;i<=q;i++){
            cout<<ans[i][j];
        }
        cout<<"\n";
    }
    return 0;
}

k732. 2. 特殊位置(2023/6)


m371. 2. 卡牌遊戲(2023/10)


m932. 2. 蜜蜂觀察(2024/1)


o077. 2. 電子畫布(2024/6)

程式碼
#include<bits/stdc++.h>
using namespace std;
#define N 555
#define nn "\n"
#define int long long
//---------------------------------------------------

int v[N][N];
//---------------------------------------------------
#undef int
int main(){
#define int long long
//---------------------------------------------------
//istringstream cin("6 7 3 \
3 2 2 1 \
1 6 1 2 \
1 3 2 5");
    int n,m,k;
    cin>>n>>m>>k;
    for(int ii=0;ii<k;ii++){
        int a,b,c,d;
        cin>>a>>b>>c>>d;

        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(abs(a-i)+abs(b-j)<=c){
                    v[i][j]+=d;
                }
            }
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<v[i][j]<<" ";
        }cout<<nn;
    }
//---------------------------------------------------
}

o712. 2. 蒐集寶石2024/10

程式碼

q182. 2. 字串操作2024/1

程式碼

q837. 2. 轉盤得分2025/6

程式碼