POJ 2134

这道题屡交屡错,什么鬼!!!!明明就是一个简单的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;
}

  

转载于:https://www.cnblogs.com/jie-dcai/p/4295975.html

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值