BFS... 我连水题都不会写了QAQ ------------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<queue>   #define rep( i , n ) for( int i = 0 ; i…
题目 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 Time Limit: 5 Sec  Memory Limit: 64 MB Description 考虑一个 N x N (1 <= N <= 100)的有1个个方格组成的正方形牧场.有些方格是奶牛们不能踏上的,它们被标记为了'x'.例如下图: . . B x .. x x A .. . . x .. x . . .. . x . . 贝茜发现自己恰好在点A处,她想去B处的盐块舔盐.缓慢而且笨拙的动物…
洛谷的数据毒啊 把(i,j,k)作为一个点spfa,表示点(i,j)朝向k方向,然后向四个方向转移即可 #include<iostream> #include<cstdio> #include<queue> using namespace std; const int N=105,inf=1e9,dx[]={-1,1,0,0},dy[]={0,0,-1,1}; int n,sx,sy,tx,ty,dis[N][N][5]; char a[N][N]; bool v[N]…
1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 383  Solved: 196[Submit][Status][Discuss] Description 考虑一个 N x N (1 <= N <= 100)的有1个个方格组成的正方形牧场.有些方格是奶牛们不能踏上的,它们被标记为了'x'.例如下图: . . B x .. x x A .. . . x .. x .…
http://www.lydsy.com/JudgeOnline/problem.php?id=1644 这和原来一题用dp来做的bfs很像啊orz.. 我们设f[i][j][k]代表i,j这个点之前的方向过来的拐弯数 那么 f[fx][fy][i]=min(f[x][y][j]+1) 当i!=j f[fx][fy][i]=min(f[x][y][j]) 当i=j #include <cstdio> #include <cstring> #include <cmath>…
Description 考虑一个 N x N (1 <= N <= 100)的有1个个方格组成的正方形牧场.有些方格是奶牛们不能踏上的,它们被标记为了'x'.例如下图: . . B x . . x x A . . . . x . . x . . . . . x . . 贝茜发现自己恰好在点A处,她想去B处的盐块舔盐.缓慢而且笨拙的动物,比如奶牛,十分讨厌转弯.尽管如此,当然在必要的时候她们还是会转弯的.对于一个给定的牧场,请你计算从A到B最少的转弯次数.开始的时候,贝茜可以使面对任意一个方向.…
背包dp.. -------------------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream>   #define rep( i , n ) for( int i = 0 ; i < n ; ++i ) #define clr(…
1708: [Usaco2007 Oct]Money奶牛的硬币 Description 在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统的货币系统中,硬币的面值通常是1,5,10,20或25,50,以及100单位的货币,有时为了更方便地交易,会发行面值为2单位的硬币. 奶牛们想知道,对于一个给定的货币系统,如果需要正好凑出一定数量的钱,会有多少种不同的方法.比如说,你手上有无限多个面值为{1,2,5,10,...}的硬币,并且打算凑…
Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩弹游戏设备(类乎于真人版CS). Bessie把她们玩游戏草坪划成了N * N(1 <= N<= 100)单位的矩阵,同时列出了她的 K (1 <= K <= 100,000)个对手在草地上的位置.然后她拿着这张表来找你,希望你能帮她计算一个数据. 在这个游戏中,奶牛可以用一把弹珠枪向8个方向中的任意一个射出子弹.8个方向分别是:正北,正南,正东,正西,以及夹在这4个正方向之间的45°角:东北,…
k是1e5范围的,吗? 注意到n只有100,这意味着k去重之后之后n^2,也就是1e4! 然后就可以愉快的n^4枚举了,枚举每个格子,再枚举每个敌人,如果当前格子射不到敌人则退出,否则满足所有敌人则ans++ #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=105; int n,m,tot,ans; bool v[N][N]; struct…