分析:暴力的方法是非常顯然的,從起點走一次,從終點走一次,路徑相交的點即為所求,但是這樣存圖都很難存下,而且如果資料極端可能要求r*c次,時間空間都受不了.如果不需要記錄整張圖,並且一次能移動很多步就好了,標程用了樹狀陣列+set,我不是很懂,只能打乙個暴力了.
暴力:
#include #includestd:#include
#include
using
namespace
std;
const
int maxn = 10010
;const
int dx = ;
const
int dy = ;
intn, m, a, b, ansx, ansy, cnt;
bool
vis[maxn][maxn]; //512m的記憶體這陣列應該是極限了.
int
a[maxn][maxn];
struct
node
e[maxn];
bool
cmp(node a, node b)
void
solve1()
}}void
solve2()
x += dx[dir], y +=dy[dir];
if (x > n || y > m || x < 1 || y < 1
)
return
; }
}int
main()
for (int i = 1; i <= b; i++)
solve1();
if (ansx == n && ansy == m + 1
)
solve2();
if (cnt == 0
)
sort(e + 1, e + 1 +cnt, cmp);
printf(
"%d %d %d\n
", cnt, e[1].x, e[1
].y);
}return0;
}
#include#include#include
#include
using
namespace
std;
#define rep(i,n) for (int i=0;i#define pb push_back
#define mk make_pair
#define x first
#define y second
#define tree int t,int l,int r
#define left t*2,l,mid
#define right t*2+1,mid+1,r
#define m int mid=l+r>>1
const
int n=1000005
;typedef pair
pr;typedef vector
int,pr> >seq;
seta[n],b[n]; seq f1,g1,f2,g2; int case,n,m,r,c,x,y,ll,rr,c[n]; long
long
ans;
intget(int x)
void add(int x,int v)
void ins(int side)
bool track(int x,int y,int d,seq &f,seq &g)
else
}else
else}}
}void work(seq &f,seq &g)
}while (jj;
}int
main()
track(r,c+1,2
,f2,g2);
ans=0,x=r+1
,work(f1,g2),work(f2,g1);
if (ans) printf("
%lld %d %d\n
",ans,x,y); else puts("-1"
); }
return0;
}
(暴力碾標算)NOIP模擬賽 宗教儀式
乙個模式串,乙個文字串,現定義最大失配值為k 求文字中最大失配值 k的長度為len 模式串 的字串個數 失配值 當前字串中與模式串不同的字元個數 暴力,加乙個跳出剪枝,居然過了?include include include define rii register int i define rij ...
noip模擬賽 密碼
表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...
NOIP模擬賽 老師
題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...