这道题屡交屡错,什么鬼!!!!明明就是一个简单的BFS,啊~!!!!!~~~~~~就是一个简单的BFS!!!!~~~~~什么鬼!!!!!!!

FUCK,在discuss里也很多人吐槽,怪不得那么少人做,什么鬼。。。为了不辜负自己写了一晚,把别人的贴过算了,什么鬼!!!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <climits>
#include <string.h>
#include <queue>
using namespace std;
bool vis[105][105][310];
struct Stat{
int pos,sec,pass_light,speed;
Stat(){}
Stat(int p,int s,int pl,int sp){pos=p,sec=s,pass_light=pl;speed=sp;}
};
queue<Stat>que;
struct traffic{
int pos,tg,tr;
int init,ts;
bool operator<(const traffic &a)const{
if(pos<a.pos) return true;
return false;
}
};
int l,n;
traffic light[110]; bool judge(Stat &t,int k){
if(light[k].init==0){
int tl=t.sec+light[k].ts+1;
tl=tl%(light[k].tr+light[k].tg);
if(tl<light[k].tr&&tl!=0){
if(t.speed==0) return true;
return false;
}
return true;
}
else{
int tl=t.sec+light[k].ts+1;
tl=tl%(light[k].tr+light[k].tg);
if(tl>=light[k].tg||tl==0){
if(t.speed==0) return true;
return false;
}
return true;
}
} int main(){
int pos,tg,tr,ts; char st;
while(scanf("%d%d",&l,&n)!=EOF){
memset(vis,false,sizeof(vis));
for(int i=1;i<=n;i++){
scanf("%d %d %d %c %d",&light[i].pos,&light[i].tg,&light[i].tr,&st,&light[i].ts);
light[i].init=st=='R'?0:1;
}
sort(light+1,light+n+1);
Stat tmp(0,0,1,0); Stat f; bool flag; int k;
vis[0][0][0]=true;
que.push(tmp);
while(!que.empty()){
f=que.front();
que.pop();
// cout<<f.pos<<" "<<f.sec<<" "<<f.speed<<endl;
if(f.pos==l&&f.speed==1){
break;
}
int pos=f.pos+f.speed;
if(pos>l) continue;
k=f.pass_light;
flag=true;
while(pos>=light[k].pos&&k<=n){
if(!judge(f,k)){
flag=false;
break;
}
k++;
}
if(flag){
for(int i=-1;i<=1;i++){
if(f.speed==0&&i==-1) continue;
tmp.pos=f.pos+f.speed;
tmp.sec=f.sec+1;
tmp.speed=f.speed+i;
tmp.pass_light=k;
if(!vis[tmp.pos][tmp.speed][tmp.sec]){
vis[tmp.pos][tmp.speed][tmp.sec]=true;
que.push(tmp);
}
}
}
}
printf("%d\n",f.sec);
while(!que.empty()) que.pop();
}
return 0;
}

  

别人的

#include <stdio.h>
#include <cstring>
typedef struct { int tg, tr, init, tc; } tralight;
typedef struct { int place, speed, time; } cmd;
tralight list[110];
int ltpos[110];
cmd queue[30010]; int now, add;
char sch[110][110][310]; int situ (tralight a, int time)
{
int t = a.tc + time;
t %= (a.tg + a.tr);
if (a.init == 0)
{
if (t >= a.tr) return 1;
else return 0;
}
else
{
if (t >= a.tg) return 0;
else return 1;
}
} int main ()
{
int l, n, i, cp, cs, ct, tp, ts, p, fl, ans; char ar[5];
scanf("%d %d", &l, &n);
memset(ltpos, -1, sizeof(ltpos));
memset(sch, 0, sizeof(sch));
for (i = 0; i < n; i++)
{
scanf("%d %d %d %s %d", &p, &list[i].tg, &list[i].tr, ar, &list[i].tc);
if (ar[0] == 'R') list[i].init = 0;
else list[i].init = 1;
ltpos[p] = i;
}
now = add = 0;
queue[add].place = 0, queue[add].speed = 0, queue[add].time = 0; add++;
sch[0][0][0] = 1;
while (now != add)
{
cp = queue[now].place, cs = queue[now].speed, ct = queue[now].time; now++;
if (cp == l && cs == 1)
{
ans = ct;
break;
}
ts = cs - 1;
if (ts < 0) ts = 0;
tp = cp + cs;
if (ltpos[cp] != -1)
{
if (situ(list[ltpos[cp]], ct) == 0 && cs != 0)
continue;
}
for (i = cp + 1, fl = 0; i < tp; i++)
{
if (ltpos[i] != -1)
{
if (situ(list[ltpos[i]], ct) == 0)
{
fl = 1;
break;
}
}
}
if (fl == 1) continue;
else if (sch[tp][ts][ct + 1] == 0)
{
queue[add].place = tp, queue[add].speed = ts, queue[add].time = ct + 1;
sch[tp][ts][ct + 1] = 1;
add++;
}
ts++;
if (sch[tp][ts][ct + 1] == 0)
{
queue[add].place = tp, queue[add].speed = ts, queue[add].time = ct + 1;
sch[tp][ts][ct + 1] = 1;
add++;
}
ts++;
if (ts > cs + 1) continue;
if (sch[tp][ts][ct + 1] == 0)
{
queue[add].place = tp, queue[add].speed = ts, queue[add].time = ct + 1;
sch[tp][ts][ct + 1] = 1;
add++;
}
}
printf("%d\n", ans);
return 0;
}

  

POJ 2134的更多相关文章

  1. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  2. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  3. POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22286 ...

  4. POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Descr ...

  5. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

  6. POJ 2739. Sum of Consecutive Prime Numbers

    Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20050 ...

  7. POJ 2255. Tree Recovery

    Tree Recovery Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11939   Accepted: 7493 De ...

  8. POJ 2752 Seek the Name, Seek the Fame [kmp]

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17898   Ac ...

  9. poj 2352 Stars 数星星 详解

    题目: poj 2352 Stars 数星星 题意:已知n个星星的坐标.每个星星都有一个等级,数值等于坐标系内纵坐标和横坐标皆不大于它的星星的个数.星星的坐标按照纵坐标从小到大的顺序给出,纵坐标相同时 ...

随机推荐

  1. bzoj4034: [HAOI2015]树上操作(树剖)

    4034: [HAOI2015]树上操作 题目:传送门 题解: 树剖裸题: 麻烦一点的就只有子树修改(其实一点也不),因为子树编号连续啊,直接改段(记录编号最小和最大) 开个long long 水模版 ...

  2. Tool-杂项-建模:犀牛(3D造型软件)

    ylbtech-Tool-杂项-建模:犀牛(3D造型软件) 犀牛(Rhino)是美国Robert McNeel & Assoc.开发的PC上强大的专业3D造型软件,它可以广泛地应用于三维动画制 ...

  3. redis集群部署及常用的操作命令_01

    简单说下自己测试搭建简单的redis集群的大体步骤: 1.首先你的有6个redis(官方说最少6个,3master,3slave),可以先在一台机器上搭建,搭建到多台上应该只需要改变启动命令即可(可能 ...

  4. yii1 session

    在 Yii框架中使用session 的笔记: 首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start(),在Yii框架中,autoStart 属性缺省被设置为true,所以, ...

  5. quartz + spring 启动项目时,报错The web application [] appears to have started a thread named.........

    只是想记录自己的错误信息,下次再出现就知道怎么操作,不用再查找资料 解决办法: package com.wqq.quartz_test.schedule; import javax.servlet.S ...

  6. CentOS6.5下nginx-1.8.1.tar.gz的单节点搭建(图文详解)

    不多说,直接上干货! [hadoop@djt002 local]$ su root Password: [root@djt002 local]# ll total drwxr-xr-x. root r ...

  7. Java基础1一环境配置

    1.下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.JDK安装:直接点击下一步,直到完成.注:默认 ...

  8. 推荐10个超棒的jQuery工具 提示插件

    脚本之家 http://www.jb51.net/article/28525.htm

  9. MySQL快速创造百万测试数据

    CREATE TABLE `vote_record_memory` ( `id` INT (11) NOT NULL AUTO_INCREMENT, `user_id` VARCHAR (20) NO ...

  10. boost_1_63_0在Win10上VS2015编译

    装了个最新版的boost库,各种尝试,各种看网上的文章,然而就是没有编译成功.我真是哭晕在厕所. 最后还是自己老老实实啃官方文档.终于编出来了.下面记录下方法. 一·最简单的一种方法. 1.直接打开命 ...