Codeforces #154 div 2
这次比赛。很坑。。只能这么说。。
A题一直TLE+WA。这么水的一题。居然搞了那么久。后来才发现得加上
#include <iostream>#include <cstdio>#include <algorithm>#include <string>#include <cmath>#include <cstring>#include <queue>#include <set>#include <vector>#include <stack>#include <map>#include <iomanip>#define PI acos(-1.0)#define Max 2005#define inf 1<<28#define LL(x) (x<<1)#define RR(x) (x<<1|1)#define FOR(i,s,t) for(int i=(s);i<=(t);++i)#define ll long long#define mem(a,b) memset(a,b,sizeof(a))using namespace std;#define mp(a,b) make_pair(a,b)int a[1000];int sx,sy,ex,ey;bool vis[200][100005];int mx[4]= {0,0,1,-1};int my[4]= {1,-1,0,0};int n;int bfs(){ queue<pair<pair<int ,int >,int > >q; q.push(mp(mp(sx,sy),0)); vis[sx][sy]=1; while(!q.empty()) { int x=q.front().first.first; int y=q.front().first.second; int step=q.front().second; q.pop(); if(x==ex&&y==ey) { cout<<step<<endl; return 0; } for(int i=0; i<4; i++) { int tx=x+mx[i]; int ty=y+my[i]; if(tx==0)tx=1; else if(tx>=n+1)tx=n; if(ty>a[tx]+1)ty=a[tx]+1; else if(ty<=0)ty=1; if(!vis[tx][ty]) { vis[tx][ty]=1; q.push(mp(mp(tx,ty),step+1)); } } }}void solveC(){ freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%d",&n); mem(vis,0); for(int i = 1 ; i <= n; i ++) { scanf("%d",&a[i]); } scanf("%d%d%d%d",&sx,&sy,&ex,&ey); bfs();}int main(){ solveC(); return 0;}D,差一点啊,没时间了。马上写出来贴上去
E。还没看。。