骇人听闻,VB遇到这现象,大家小心哇~

YXOnline已经接近尾声,为了处理一些界面的问题,测试一个C++的DLL

一个函数,用deasambling看C++的代码是没有错误的,但是到了VB,请看

b的返回值是True 不管C++和VB相互键约定True和False各对应为什么数值

这里已经是True了

但那时显示True = True 仍旧不执行第一个Msgbox

直接跳到Else

而如果省略b = True 为 If b Then 则正常通过

这是VB6第二个怪事

再F8一下就执行

啊哦

丫丫个呸!

Who the hell Microsoft think they are?

题目描述 贝茜听说了一个骇人听闻的消息:一场流星雨即将袭击整个农场,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽,届时将会对它撞到的一切东西造成毁灭性的打击。很自然地,贝茜开始担心自己的安全问题。 以 Farmer John 牧场中最聪明的奶牛的名誉起誓,她一定要在被流星砸到前,到达一个安全的地方(也就是说,一块不会被任何流星砸到的土地)。 如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不能踏上一块被流星砸过的土地。 根据预报,一共有 m m 颗流星 ( 1 ≤ m ≤ 30000 ) (1≤m≤30000) 会坠落在农场上,其中第 i i 颗流星会在时刻 t i ( 0 ≤ t i ≤ 1000 ) t i ​ (0≤t i ​ ≤1000) 砸在坐标为 ( x i , y i ) ( 0 ≤ x i ≤ 300 (x i ​ ,y i ​ ) (0≤x i ​ ≤300, 0 ≤ y i ≤ 300 ) 0≤y i ​ ≤300) 的格子里。流星的力量会将它所在的格子,以及周围 4 4 个相邻的格子都化为焦土,当然贝茜也无法再在这些格子上行走。 贝茜在时刻 0 0 开始行动,它只能在第一象限中,平行于坐标轴行动,每 1 1 个时刻中,她能移动到相邻的(一般是 4 4 个)格子中的任意一个,当然目标格子要没有被烧焦才行。如果一个格子在时刻 t t 被流星撞击或烧焦,那么贝茜只能在 t t 之前的时刻在这个格子里出现。贝西一开始在 ( 0 , 0 ) (0,0)。 请你计算一下,贝茜最少需要多少时间才能到达一个安全的格子。如果不可能到达输出 − 1 −1。 输入格式 第一行是一个整数 m m。 接下来 m m 行,每行 3 3 个整数, x i , y i , t i x i ​ ,y i ​ ,t i ​ 。 输出格式 贝茜能够到达一个安全的格子的最短时间,如果不能到达,输出 − 1 −1。 输入数据 1 4 0 0 2 2 1 2 1 1 2 0 3 5 输出数据 1 5 如果我们观察在 t = 5 t=5 时的牧场,可以发现离贝茜最近的安全的格子是 ( 3 , 0 ) (3,0)。不过由于早在第二颗流星落地时,贝茜直接跑去 ( 3 , 0 ) (3,0) 的路线就被封死了。离贝茜第二近的安全格子为 ( 4 , 0 ) (4,0),但它的情况也跟 ( 3 , 0 ) (3,0) 一样。再接下来的格子就是在 ( 0 , 5 ) ∼ ( 5 , 0 ) (0,5)∼(5,0) 这条直线上。在这些格 子中, ( 0 , 5 ) (0,5), ( 1 , 4 ) (1,4) 以及 ( 2 , 3 ) (2,3) 都能在 5 5 个单位时间内到达。#include<bits/stdc++.h> using namespace std; int nx[]={-1,1,0,0}; int ny[]={0,0,-1,1}; int m,x[30005],y[30005],t[30005],f[305][305],v[305][305],u[305][305],s=0; queue<int> q; void bfs(int a,int b){ q.push(a); q.push(b); f[a][b]=1; v[a][b]=0; while(!q.empty()){ s++; int dx=q.front(); q.pop(); int dy=q.front(); q.pop(); for(int i=0;i<4;i++){ int sx=dx+nx[i]; int sy=dy+ny[i]; for(int i=1;i<=m;i++){ if(s==t[i]){ f[x[i]][y[i]]=1; for(int j=0;j<4;j++){ f[x[i]+nx[j]][y[i]+ny[j]]=1; } } } if(sx>=0&&sy>=0&&!f[sx][sy]){ v[sx][sy]=v[dx][dy]+1; f[sx][sy]=1; q.push(sx); q.push(sy); if(u[sx][sy]!=1){ cout<<v[sx][sy]; return; } } } } cout<<-1; } int main(){ cin>>m; for(int i=1;i<=m;i++){ cin>>x[i]>>y[i]>>t[i]; u[x[i]][y[i]]=1; for(int j=0;j<4;j++){ u[x[i]+nx[j]][y[i]+ny[j]]=1; } } bfs(0,0); return 0; }
08-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值