头像

lovely_fcukh

為什麼不用fuck呢?可能就是機房同學的一絲人性將c和u調換了位置,我可憐的一年一次的洛谷更改用戶名次數就這麼被消耗了……




离线:7小时前


最近来访(673)
用户头像
AcWing2010
用户头像
163.com
用户头像
L_B_L
用户头像
落月成孤倚灬
用户头像
垫底抽風
用户头像
太雪菜
用户头像
泉绮
用户头像
cpy2010
用户头像
小郑同学
用户头像
acwing_gza
用户头像
Jill.
用户头像
做事要有遗逝感
用户头像
Katyusha
用户头像
tamsl3skafut
用户头像
yxc的小迷妹
用户头像
markless_yjy
用户头像
听雨.
用户头像
闻天语
用户头像
Andy2035
用户头像
Hacker_King

新鲜事 原文

lovely_fcukh
8小时前
电脑的卡终于从我的底线反复横跳变成了我无法忍受,它成功即将成为我第一个要**格式化**的电脑


新鲜事 原文

lovely_fcukh
11小时前
请问我不和英雄玩耍是不是我就可以不写作业
图片


新鲜事 原文

基本上所有人都在黑坤坤 你们有什么资格去黑坤坤 态度到底真心对待他过没 美好的梦想就这样被打击 坤坤努力练习了两年半,你们却去黑他·-·你们有本事不要用手坤也不要吃他的蛋·-·


新鲜事 原文

老师上课让我们扣一二三四还有理解,这也太难扣了!!!
图片



重交一遍简体中文的,可能繁体字没人看得懂

我把这道题设为中等是因为我不想提交简单题解·-·
对了,我写完以后感觉虽然很简单,在洛谷上也才黄题,但是由于这么多种方法也不是一下就能想到,我还是把难度设为了困难·-·

特别说一点,结尾有彩蛋!!!

小小声:写这篇题解真的很不容易,懂我的意思吧qwq
题目大意:
给定一些导弹,拦截系统第一次能拦截任意位置的导弹,而第二颗导弹开始只能拦截上一个大于等于导弹的位置的导弹。求最多可以拦截多少颗导弹和需要几个系统才可以拦截所有的导弹。


这道题在acwing上还是小数据,可是在洛谷上确实很大的。我们现讲一下 dp 做法
方法1:
时间复杂度: $O(n^2)$
空间复杂度: $O(n)$
思路:
对于每一颗导弹,我们从第一颗到第 $i-1$ 颗开始枚举 $j$ 。如果第j颗导弹的位置大于第i颗导弹,代表拦截系统可以把这一课导弹也拦截了。由此我们可以列出状态转移方程: $f[i]=max(f[i],f[j]+1);$ 意思就是第 $i$ 颗导弹最多可以拦截到 $f[i]$ 和 $f[j]+1$ 的最大值个导弹。否则如果第 $j$ 个导弹不能一块拦截第 $i$ 个导弹,那么就等于要多一个拦截系统,我们定义 $g[i]=max(g[i],g[j+1])$ 的意思就是拦截到第 $i$ 个导弹需要的系统个数与拦截到第 $j$ 个导弹加上多开的的一系统取最大值,就能求出需要多少个系统才能把到第 $i$ 导弹全部拦截完。最后我们对每个 $f[i]$ 于每个 $g[i]$ 取个最大值输出即可。
Code:

#include<iostream>
using namespace std;
int n,a[50005],f[50005],g[50005],ans,ma;
int main(){
    while(cin>>a[++n]);
    for(int i=1;i<=n;i++){
        g[i]=1;
        for(int j=1;j<i;j++)
            if(a[j]>=a[i])f[i]=max(f[i],f[j]+1);else g[i]=max(g[i],g[j]+1);
        ans=max(ans,f[i]);ma=max(ma,g[i]);
    }cout<<ans<<endl<<ma;
    return 0;
}

方法2:贪心
时间复杂度:$O(n)$ 至 $O(n*(n+1)/2)$
空间复杂度:$O(n)$
思路:
由于我们发现dp在洛谷上A不了,所以我们可以将做法改为队列。首先我们定义一个变量 $c$ 表示总共可以拦截 $c$ 个导弹。枚举 $1~n$ 每个导弹,如果这个导弹可以被之前的每一颗导弹都拦截,那么我们的 $c$ 加一,把 $a[i]$ 放到 $f[c]$ 中。否则就用它更新不能拦截它的第一个位置上。
の需要多少个拦截系统呢,我们只需要将能拦截改为不能拦截即可。就是判读语句和可以拦截相反,这样就可以求出需要的拦截系统的数量。
Code:

#include<iostream>
using namespace std;
int n,a[50005],f[50005],c;
int main(){
    while(cin>>a[++n]);
    for(int i=1;i<n;i++){
        int j=1;
        while(j<=c&&a[i]<=f[j])j++;
        if(j>c)f[++c]=a[i];
        else f[j]=a[i];
    }
    cout<<c<<endl;
    c=0;
    for(int i=1;i<n;i++){
        int j=1;
        while(j<=c&&a[i]>f[j])j++;
        if(j>c)f[++c]=a[i];
        else f[j]=a[i];
    }
    cout<<c;
    return 0;
}

方法3:二分优化方法2
前置氵氵氵:
其实方法三才是能在洛谷上过得,但是我提交时发现速度似乎有点慢,然后去看了一下记录,方法三……居然是最慢的?
QQ截图20221202132525.png
比方法1整整慢了1ms,比不优化前慢了13ms。不过不伤大雅,虽然方法三在acwing里慢了一些,但是确是三个方法中唯一一个能在洛谷AC的。
时间复杂度:$O(n)$ 至 $O(nlogn)$
空间复杂度:$O(n)$
思路:
代码只是比方法二简洁了一点。求最多能拦截多少个导弹,如果这个导弹可以被当前最低的导弹拦截,那么直接加进去。否则二分,对,我们可以发现我们那个寻找第一个不能拦截它的导弹的操作很像二分,所以直接用二分查找就行了。而需要多少个导弹拦截系统同理,直接反过来就行了。对了,补充一点,因为如果不设初始值,那么导弹的高度就永远大于我们数组的第 0 个值。所以我们的导弹数量 $f[0]=1e9$ 极大值,の系统数量 $f[0]=-1e9$ 极小值。
Code:

#include<iostream>
#define int long long
using namespace std;
int n,a[500005],f[500005],c,x;
signed main(){
    while(cin>>x)a[++n]=x;
    f[0]=1e17;
    for(int i=1;i<=n;i++){
        if(a[i]<=f[c])f[++c]=a[i];
        else{
            int l=1,r=c;
            while(l<r){
                int mid=l+r>>1;
                if(f[mid]<a[i])r=mid;
                else l=mid+1;
            }
            f[l]=a[i];
        }
    }
    cout<<c<<endl;
    c=0;
    f[0]=-1e17;
    for(int i=1;i<=n;i++){
        if(a[i]>f[c])f[++c]=a[i];
        else{
            int l=1,r=c;
            while(l<r){
                int mid=l+r>>1;
                if(f[mid]>=a[i])r=mid;
                else l=mid+1;
            }
            f[l]=a[i];
        }
    }
    cout<<c;
    return 0;
}

最后浪费大家0.114514ms的时间啰嗦一句:本来我是不想求赞的,但是看在我我写了1个小时这么辛苦,能不能给个赞鼓励一下QWQ,谢谢大家Thanks♪(・ω・)ノ

彩蛋(20分钟)保证主函数只有下划线、逗号和括号!!!优雅,太优雅了!!!!!!!

#include<iostream>
#define int long long
#define _ int
#define __ using
#define ___ namespace
#define ____ std
#define _____ n
#define ______ a
#define _______ f
const int N=500005,M=0,T=1e9,P=1;
#define ________ N
#define _________ c
#define __________ x
#define ___________ main
#define ____________ while
#define _____________ signed
#define ___________________________________________(a) cin>>a
#define ______________ M
#define _______________ T
#define ________________ P
#define _________________ for
#define __________________ i
#define ___________________ if
#define ____________________ else
#define _____________________ l
#define ______________________ r
#define _______________________ mid
#define _______________________________(a) cout<<a<<endl;
#define _______________________________________________(a,b) a=b
#define _________________________________________________(a,b) a<=b?1:0
#define __________________________________________________(a,b) a<b?1:0
#define ___________________________________________________(a,b) a>=b?1:0
#define ____________________________________________________(a,b) a>b?1:0
#define ______________________________________________________(a) ++a
#define ________________________________________________________(a,b) a+b
#define __________________________________________________________(a,b) a>>b
#define _______________________________________________________________(a) -a
#define _________________________________________________________________ return
__ ___ ____;
_ _____,______[________],_______[________],_________,__________;
_____________ ___________(){
    ____________(___________________________________________(__________))_______________________________________________(______[______________________________________________________(_____)],__________);
    _______________________________________________(_______[______________],_______________);
    _________________(_ _______________________________________________(__________________,________________);_________________________________________________(__________________,_____);______________________________________________________(__________________)){
        ___________________(_________________________________________________(______[__________________],_______[_________]))_______________________________________________(_______[______________________________________________________(_________)],______[__________________]);
        ____________________{
            _ _______________________________________________(_____________________,________________),_______________________________________________(______________________,_________);
            ____________(__________________________________________________(_____________________,______________________)){
                _ _______________________________________________(_______________________,__________________________________________________________(________________________________________________________(_____________________,______________________),________________));
                ___________________(__________________________________________________(_______[_______________________],______[__________________]))_______________________________________________(______________________,_______________________);
                ____________________ _______________________________________________(_____________________,________________________________________________________(_______________________,________________));
            }
            _______________________________________________(_______[_____________________],______[__________________]);
        }
    }
    _______________________________(_________);
    _______________________________________________(_________,______________);
    _______________________________________________(_______[______________],_______________________________________________________________(_______________));
    _________________(_ _______________________________________________(__________________,________________);_________________________________________________(__________________,_____);______________________________________________________(__________________)){
        ___________________(____________________________________________________(______[__________________],_______[_________]))_______________________________________________(_______[______________________________________________________(_________)],______[__________________]);
        ____________________{
            _ _______________________________________________(_____________________,________________),_______________________________________________(______________________,_________);
            ____________(__________________________________________________(_____________________,______________________)){
                _ _______________________________________________(_______________________,__________________________________________________________(________________________________________________________(_____________________,______________________),________________));
                ___________________(___________________________________________________(_______[_______________________],______[__________________]))_______________________________________________(______________________,_______________________);
                ____________________ _______________________________________________(_____________________,________________________________________________________(_______________________,________________));
            }
            _______________________________________________(_______[_____________________],______[__________________]);
        }
    }
    _______________________________(_________);
    _________________________________________________________________ ______________;
}

优雅,太优雅了!!!如此优雅的题解能不能给个赞再走呀~~




我把這道題設為中等是因為我不想提交簡單題解·-·
對了,我寫完以後感覺雖然很簡單,在洛谷上也才黃題,但是由於這麼多種方法也不是一下就能想到,我還是把難度設為了困難·-·

特別說一點,結尾有彩蛋!!!

題目大意:
給定一些導彈,攔截系統第一次能攔截任意位置的導彈,の第二顆導彈開始只能攔截上一個大於等於導彈的位置的導彈。求最多可以攔截多少顆導彈和需要幾個系統才可以攔截所有的導彈。


這道題在acwing上還是小數據,可是在洛谷上確實很大的。我們現講一下 dp 做法
方法1:
時間複雜度: $O(n^2)$
空间复杂度: $O(n)$
思路:
對於每一顆導彈,我們從第一顆到第 $i-1$ 顆開始枚舉 $j$ 。如果第j顆導彈的位置大於第i顆導彈,代表攔截系統可以把這一課導彈也攔截了。由此我們可以列出狀態轉移方程: $f[i]=max(f[i],f[j]+1);$ 意思就是第 $i$ 顆導彈最多可以攔截到 $f[i]$ 和 $f[j]+1$ 的最大值個導彈。否則如果第 $j$ 個導彈不能一塊攔截第 $i$ 個導彈,那麼就等於要多一個攔截系統,我們定義 $g[i]=max(g[i],g[j+1])$ 的意思就是攔截到第 $i$ 個導彈需要的系統個數與攔截到第 $j$ 個導彈加上多開的的一系統取最大值,就能求出需要多少個系統才能把到第 $i$ 導彈全部攔截完。最後我們對每個 $f[i]$ 於每個 $g[i]$ 取個最大值輸出即可。
Code:

#include<iostream>
using namespace std;
int n,a[50005],f[50005],g[50005],ans,ma;
int main(){
    while(cin>>a[++n]);
    for(int i=1;i<=n;i++){
        g[i]=1;
        for(int j=1;j<i;j++)
            if(a[j]>=a[i])f[i]=max(f[i],f[j]+1);else g[i]=max(g[i],g[j]+1);
        ans=max(ans,f[i]);ma=max(ma,g[i]);
    }cout<<ans<<endl<<ma;
    return 0;
}

方法2:贪心
時間複雜度:$O(n)$ 至 $O(n*(n+1)/2)$
空間複雜度:$O(n)$
思路:
由於我們發現dp在洛谷上A不了,所以我們可以將做法改為隊列。首先我們定義一個變量 $c$ 表示總共可以攔截 $c$ 個導彈。枚舉 $1~n$ 每個導彈,如果這個導彈可以被之前的每一顆導彈都攔截,那麼我們的 $c$ 加一,把 $a[i]$ 放到 $f[c]$ 中。否則就用它更新不能攔截它的第一個位置上。
の需要多少個攔截系統呢,我們只需要將能攔截改為不能攔截即可。就是判讀語句和可以攔截相反,這樣就可以求出需要的攔截系統的數量。
Code:

#include<iostream>
using namespace std;
int n,a[50005],f[50005],c;
int main(){
    while(cin>>a[++n]);
    for(int i=1;i<n;i++){
        int j=1;
        while(j<=c&&a[i]<=f[j])j++;
        if(j>c)f[++c]=a[i];
        else f[j]=a[i];
    }
    cout<<c<<endl;
    c=0;
    for(int i=1;i<n;i++){
        int j=1;
        while(j<=c&&a[i]>f[j])j++;
        if(j>c)f[++c]=a[i];
        else f[j]=a[i];
    }
    cout<<c;
    return 0;
}

方法3:二分優化方法2
前置氵氵氵:
其實方法三才是能在洛谷上過得,但是我提交時發現速度似乎有點慢,然後去看了一下記錄,方法三……居然是最慢的?
QQ截图20221202132525.png
比方法1整整慢了1ms,比不優化前慢了13ms。不過不傷大雅,雖然方法三在acwing里慢了一些,但是確是三個方法中唯一一個能在洛谷AC的。
時間複雜度:$O(n)$ 至 $O(nlogn)$
空間複雜度:$O(n)$
思路:
代碼只是比方法二簡潔了一點。求最多能攔截多少個導彈,如果這個導彈可以被當前最低的導彈攔截,那麼直接加進去。否則二分,對,我們可以發現我們那個尋找第一個不能攔截它的導彈的操作很像二分,所以直接用二分查找就行了。の需要多少個導彈攔截系統同理,直接反過來就行了。對了,補充一點,因為如果不設初始值,那麼導彈的高度就永遠大於我們數組的第 0 個值。所以我們的導彈數量 $f[0]=1e9$ 極大值,の系統數量 $f[0]=-1e9$ 極小值。
Code:

#include<iostream>
#define int long long
using namespace std;
int n,a[500005],f[500005],c,x;
signed main(){
    while(cin>>x)a[++n]=x;
    f[0]=1e17;
    for(int i=1;i<=n;i++){
        if(a[i]<=f[c])f[++c]=a[i];
        else{
            int l=1,r=c;
            while(l<r){
                int mid=l+r>>1;
                if(f[mid]<a[i])r=mid;
                else l=mid+1;
            }
            f[l]=a[i];
        }
    }
    cout<<c<<endl;
    c=0;
    f[0]=-1e17;
    for(int i=1;i<=n;i++){
        if(a[i]>f[c])f[++c]=a[i];
        else{
            int l=1,r=c;
            while(l<r){
                int mid=l+r>>1;
                if(f[mid]>=a[i])r=mid;
                else l=mid+1;
            }
            f[l]=a[i];
        }
    }
    cout<<c;
    return 0;
}

最後浪費大家0.114514ms的時間啰嗦一句:本來我是不想求讚的,但是看在我我寫了1個小時這麼辛苦,能不能給個讚鼓勵一下QWQ,謝謝大家Thanks♪(・ω・)ノ

彩蛋(20分鐘)保證主函數只有下劃線、逗號和括號!!!優雅,太優雅了!!!!!!!

#include<iostream>
#define int long long
#define _ int
#define __ using
#define ___ namespace
#define ____ std
#define _____ n
#define ______ a
#define _______ f
const int N=500005,M=0,T=1e9,P=1;
#define ________ N
#define _________ c
#define __________ x
#define ___________ main
#define ____________ while
#define _____________ signed
#define ___________________________________________(a) cin>>a
#define ______________ M
#define _______________ T
#define ________________ P
#define _________________ for
#define __________________ i
#define ___________________ if
#define ____________________ else
#define _____________________ l
#define ______________________ r
#define _______________________ mid
#define _______________________________(a) cout<<a<<endl;
#define _______________________________________________(a,b) a=b
#define _________________________________________________(a,b) a<=b?1:0
#define __________________________________________________(a,b) a<b?1:0
#define ___________________________________________________(a,b) a>=b?1:0
#define ____________________________________________________(a,b) a>b?1:0
#define ______________________________________________________(a) ++a
#define ________________________________________________________(a,b) a+b
#define __________________________________________________________(a,b) a>>b
#define _______________________________________________________________(a) -a
#define _________________________________________________________________ return
__ ___ ____;
_ _____,______[________],_______[________],_________,__________;
_____________ ___________(){
    ____________(___________________________________________(__________))_______________________________________________(______[______________________________________________________(_____)],__________);
    _______________________________________________(_______[______________],_______________);
    _________________(_ _______________________________________________(__________________,________________);_________________________________________________(__________________,_____);______________________________________________________(__________________)){
        ___________________(_________________________________________________(______[__________________],_______[_________]))_______________________________________________(_______[______________________________________________________(_________)],______[__________________]);
        ____________________{
            _ _______________________________________________(_____________________,________________),_______________________________________________(______________________,_________);
            ____________(__________________________________________________(_____________________,______________________)){
                _ _______________________________________________(_______________________,__________________________________________________________(________________________________________________________(_____________________,______________________),________________));
                ___________________(__________________________________________________(_______[_______________________],______[__________________]))_______________________________________________(______________________,_______________________);
                ____________________ _______________________________________________(_____________________,________________________________________________________(_______________________,________________));
            }
            _______________________________________________(_______[_____________________],______[__________________]);
        }
    }
    _______________________________(_________);
    _______________________________________________(_________,______________);
    _______________________________________________(_______[______________],_______________________________________________________________(_______________));
    _________________(_ _______________________________________________(__________________,________________);_________________________________________________(__________________,_____);______________________________________________________(__________________)){
        ___________________(____________________________________________________(______[__________________],_______[_________]))_______________________________________________(_______[______________________________________________________(_________)],______[__________________]);
        ____________________{
            _ _______________________________________________(_____________________,________________),_______________________________________________(______________________,_________);
            ____________(__________________________________________________(_____________________,______________________)){
                _ _______________________________________________(_______________________,__________________________________________________________(________________________________________________________(_____________________,______________________),________________));
                ___________________(___________________________________________________(_______[_______________________],______[__________________]))_______________________________________________(______________________,_______________________);
                ____________________ _______________________________________________(_____________________,________________________________________________________(_______________________,________________));
            }
            _______________________________________________(_______[_____________________],______[__________________]);
        }
    }
    _______________________________(_________);
    _________________________________________________________________ ______________;
}

優雅,太優雅了!!!如此優雅的題解能不能給個讚再走呀~~



新鲜事 原文

曾经的xxs,都成为czs了……



这就是一道披着紫皮的红,看得懂也别给赞

本来我最近闲得无聊,去找一些紫色的大模拟氵题,找到了这道难度不高码量又小的题
刚开始60分一直调不出来,老师一个指点就AC了(感谢老师),AC记录我就不放了

思路:
我们先找到每一个蛇头,然后dfs寻找蛇身,将蛇身下标加入数组。然后进行每一步操作(操作按编号一次进行),操作内,如果下一步这条蛇不会die,我们继续判断,如果这条蛇下一步是一个食物,那么直接偷懒将食物改成蛇头,原先的蛇头改成蛇身,然后将食物的下标加入到数组内。否则蛇向前进一步,我的思路是将蛇尾改为食物,蛇头改为蛇身,将蛇身的每一个部位的下标更新为它前面那个部位的下标,最后更新蛇头位置并在地图上标记。不过这里要注意一点,如果只有蛇头没有蛇身则不用将原先的蛇头改为蛇身,不然会每一次在地图上都多一个蛇身。最后排个序输出即可。

Code:

//没压,我真没压,这怎么叫压行 
#include<bits/stdc++.h>
using namespace std;
int n,m,k,l,cnt,p[205][205];//行数、列数、每条蛇的操作数、蛇的数量、剩余食物总数 
char c[205][205],s[25][105];//地图、操作方向 
struct o{
    struct t{
        int x,y;//蛇的所有部位的行数与列数 
    }ak[205];
    int l,nb;//蛇的长度、蛇的编号
}a[25];
void dfs(int x,int y){
    p[x][y]=1;
    if(c[x+1][y]=='#'&&!p[x+1][y])a[l].ak[++a[l].l]={x+1,y},dfs(x+1,y);//记录此时的坐标,往下继续搜 
    if(c[x][y+1]=='#'&&!p[x][y+1])a[l].ak[++a[l].l]={x,y+1},dfs(x,y+1);//同上,往右继续搜
    if(c[x-1][y]=='#'&&!p[x-1][y])a[l].ak[++a[l].l]={x-1,y},dfs(x-1,y);//同上,往上继续搜 
    if(c[x][y-1]=='#'&&!p[x][y-1])a[l].ak[++a[l].l]={x,y-1},dfs(x,y-1);//同上,往左继续搜 
}
void dfs4(int snb,int x){ 
    c[a[snb].ak[a[snb].l].x][a[snb].ak[a[snb].l].y]='.';//将蛇尾改为路
    if(a[snb].l>1)c[a[snb].ak[1].x][a[snb].ak[1].y]='#';//如果这条蛇有蛇身,那么蛇头改为蛇身 
    for(int i=a[snb].l;i>=2;i--)a[snb].ak[i]=a[snb].ak[i-1];//此时蛇的这个部位移动到了它前一个部位的位置 
    if(x==1)a[snb].ak[1].x--;//如果是1向上走 
    if(x==2)a[snb].ak[1].x++;//如果是2向下走 
    if(x==3)a[snb].ak[1].y--;//如果是3向左走 
    if(x==4)a[snb].ak[1].y++;//如果是4向右走 
    c[a[snb].ak[1].x][a[snb].ak[1].y]='@';//更新蛇头 
}
void dfs5(int snb,int x,int y){
    for(int i=1;i<=a[snb].l;i++)c[a[snb].ak[i].x][a[snb].ak[i].y]='&';//将这条蛇改为食物 
    a[snb].l=0;//将这条蛇的长度清零 
}
void dfs2(int snb,int x,int y,char zt){
    if(zt=='W'&&c[x-1][y]!='#'&&c[x-1][y]!='@'&&x-1>0){
        if(c[x-1][y]=='&'){//如果下一步是食物,将食物设为蛇头,原先的蛇头设为蛇身,蛇的长度加1
            c[x][y]='#',c[x-1][y]='@',a[snb].l++;
            for(int i=a[snb].l;i>=2;i--)a[snb].ak[i]=a[snb].ak[i-1];
            a[snb].ak[1]={x-1,y};
        }else dfs4(snb,1);//否则蛇直接向下一步进一 
    }else if(zt=='S'&&c[x+1][y]!='#'&&c[x+1][y]!='@'&&x+1<=n){
        if(c[x+1][y]=='&'){//思路同上 
            c[x][y]='#',c[x+1][y]='@',a[snb].l++;
            for(int i=a[snb].l;i>=2;i--)a[snb].ak[i]=a[snb].ak[i-1];
            a[snb].ak[1]={x+1,y};
        }else dfs4(snb,2);//思路同上 
    }else if(zt=='A'&&c[x][y-1]!='#'&&c[x][y-1]!='@'&&y-1>0){
        if(c[x][y-1]=='&'){//思路同上 
            c[x][y]='#',c[x][y-1]='@',a[snb].l++;
            for(int i=a[snb].l;i>=2;i--)a[snb].ak[i]=a[snb].ak[i-1];
            a[snb].ak[1]={x,y-1};
        }else dfs4(snb,3);//思路同上 
    }else if(zt=='D'&&c[x][y+1]!='#'&&c[x][y+1]!='@'&&y+1<=m){
        if(c[x][y+1]=='&'){//思路同上 
            c[x][y]='#',c[x][y+1]='@',a[snb].l++;
            for(int i=a[snb].l;i>=2;i--)a[snb].ak[i]=a[snb].ak[i-1];
            a[snb].ak[1]={x,y+1};
        }else dfs4(snb,4);//思路同上 
    }else dfs5(snb,x,y);//否则就是这条蛇die了,将这条蛇的每一个身体部位包括蛇头设为食物 
}
bool f(o x,o y){
    if(x.l!=y.l)return x.l>y.l;//先按长度排序 
    return x.nb<y.nb;//长度相同按编号排序 
}
int main(){
    cin>>n>>m>>k;//输入地图行数列数还有每条蛇的操作数 
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>c[i][j];//输入地图 
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(c[i][j]=='@')a[++l].ak[++a[l].l]={i,j},a[l].nb=l,dfs(i,j);//如果搜索到蛇头,那么蛇的数量加1,记录蛇头所在的位置以及它的编号,搜索蛇的身体
    for(int i=1;i<=l;i++)for(int j=1;j<=k;j++)cin>>s[i][j];//输入每条蛇的操作 
    for(int i=1;i<=k;i++)for(int j=1;j<=l;j++)if(a[j].l)dfs2(j,a[j].ak[1].x,a[j].ak[1].y,s[j][i]);//对第j条蛇从蛇头开始每一次从编号大到小对蛇移动方向进行操作s[i][j] 
    sort(a+1,a+1+l,f);//给蛇的长度和编号排序 
    for(int i=1;i<=l;i++)cout<<a[i].l<<' '<<a[i].nb<<endl;//输出每条蛇的长度和编号 
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(c[i][j]=='&')cnt++;//如果找到食物,cnt加1 
    cout<<cnt;//输出剩余食物总数 
    return 0;
}



新鲜事 原文

二连爆冷:日本对战德国2:1胜利


新鲜事 原文

感觉acwing最大的优点就是y总的课程 而题解质量、社区环境等都需要向洛谷学习一下