首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Codeforces #154 div 二

2012-12-15 
Codeforces #154 div 2这次比赛。很坑。。只能这么说。。A题一直TLEWA。这么水的一题。居然搞了那么久。后来才发现

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。还没看。。


热点排行