CSU 2166: 卖萌表情(2018湖南省赛)

xiaoxiao2021-03-01  32

传送门

这题需要确定每种表情的2种形式的优先级,然后直接遍历一遍矩阵即可。

两种表情是第二个形式的优先级高

/* 通过 ^ ^ ^ 和 ^ ^ ^ 可以确定第一种 v v v v v v 通过 和 可以确定第二种 > < < > > < < > > < < > */ #include<bits/stdc++.h> #define fuck(x) cout<<#x<<" "<<x<<endl; using namespace std; char mp[1005][1005]; int main() { int n,m,ans; while(scanf("%d %d",&n,&m)!=EOF) { ans=0; for(int i=0;i<=n+5;i++) for(int j=0;j<=m+5;j++) mp[i][j]=0; for(int i=1;i<=n;i++) scanf("%s",mp[i]+1); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(mp[i][j]=='^') { if(mp[i+1][j-1]==mp[i+1][j+1]&&mp[i+1][j+1]=='v') { ans++; mp[i][j]=mp[i+1][j-1]=mp[i+1][j+1]=0; ///fuck(i); ///fuck(j); ///cout<<2<<endl; } else if(mp[i][j+2]=='^'&&mp[i+1][j+1]=='v') { ans++; mp[i][j]=mp[i][j+2]=mp[i+1][j+1]=0; ///fuck(i); ///fuck(j); ///cout<<1<<endl; } } else if(mp[i][j]=='<') { if(mp[i-1][j+1]=='>'&&mp[i+1][j+1]=='>') { ans++; mp[i][j]=mp[i-1][j+1]=mp[i+1][j+1]=0; ///fuck(i); ///fuck(j); ///cout<<3<<endl; } else if(mp[i+1][j+1]=='>'&&mp[i+2][j]=='<') { ans++; mp[i][j]=mp[i+1][j+1]=mp[i+2][j]=0; } } } printf("%d\n",ans); } return 0; } /********************************************************************** Problem: 2166 User: leon_ Language: C++ Result: AC Time:48 ms Memory:3008 kb **********************************************************************/

 

转载请注明原文地址: https://www.6miu.com/read-4150212.html

最新回复(0)