题意:链接 方法: DP 解析: 第一眼搜索题,复杂度不同意dfs,并且牛的数量太多不能bfs,迭代更不可能,A*不会估价.可能记忆化? 等等记忆化我还搜个毛线- 直接改成DP就好了. 状态非常好想非常easy,可是这个路径简直-.丧心病狂! f[i][j][k]表示横向走了(i-31),纵向走了(j-31)用了k次的最大值. 所以我们要预处理map[i][j]表示横向走到(i-31),纵向走到(j-31),这么一下对答案的贡献. 然后我就要吐槽了.这个题假设你不处理一些奇怪的点,比方走到坐标为…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1605 题意: 平面直角坐标系中,有n个点,m个标记(坐标范围1~1000). 你可以发出口令,让所有点整体向东.南.西.北四个方向中的任意一个方向移动,口令分别记作'E','S','W','N'. 每当一个点碰到一个标记,则答案+1.(保证初始时没有点在标记上) 你最多可以发出t次口令. 问你答案最大是多少,并输出字典序最小的口令序列. 题解: 表示状态: dp[i][j][k] = m…
标题好长&&我是权限狗,汪汪! 题没看懂的我以为这是一道极难滴题目...然后,然后我就看懂题了. 数据少给了一个条件K <= 30...(没这条件还做个鬼...) f[k, i, j]表示走了k步,x方向移动i,y方向移动j的最大被拯救牛的数量,然后方程就很好写了,略之. (其实是太烦了,不想写) 真是一道很烦的题目...不仅预处理很烦,转移很烦,连输出解也很烦... /*********************************************************…
题目 1621: [Usaco2008 Open]Roads Around The Farm分岔路口 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 561  Solved: 407 [Submit][Status] Description     约翰的N(1≤N≤1,000,000,000)只奶牛要出发去探索牧场四周的土地.她们将沿着一条路走,一直走到三岔路口(可以认为所有的路口都是这样的).这时候,这一群奶牛可能会分成两群,分别沿着接下来的两条…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1621 题意: 约翰的N(1≤N≤1,000,000,000)只奶牛要出发去探索牧场四周的土地. 她们将沿着一条路走,一直走到三岔路口(可以认为所有的路口都是这样的). 这时候,这一群奶牛可能会分成两群,分别沿着接下来的两条路继续走. 如果她们再次走到三岔路口,那么仍有可能继续分裂成两群继续走. 奶牛的分裂方式十分古怪:如果这一群奶牛可以精确地分成两部分,这两部分的牛数恰好相差K(1≤K≤…
模拟就行--讲道理这个时间复杂度为啥是对的??? #include<iostream> #include<cstdio> using namespace std; int k,n; int dfs(int v) { if(v<=k) return 1; if((v-k)%2==0) return (dfs((v-k)/2)+dfs((v+k)/2)); else return 1; } int main() { scanf("%d%d",&n,&a…
1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec  Memory Limit: 162 MB Description 混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S_i <= 25,000). 奶牛为她们的编号感到骄傲, 所以每一头奶牛都把她的编号刻在一个金牌上, 并且把金牌挂在她们宽大的脖子上. 奶牛们对在挤奶的时…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1616 题意: 有一个n*m的网格. '.'表示平坦的草地,'*'表示挡路的树(不能走). 有一只奶牛,第0秒时在(r1,c1),第t秒时在(r1,c2). 它每一秒钟都会向上下左右任一方向走一格,不会停留不动. 问你在这t秒钟内,奶牛可能的移动路径数. 题解: 表示状态: dp[i][j][k]:表示在第k秒,走到了位置(i,j)时的方案数. 找出答案: ans = dp[r2][c2]…
设up[i][j]为第i位升序为j的最小修改数,down为降序 #include<iostream> #include<stdio.h> using namespace std; int n,a[30005],up[30005][4],down[30005][4]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); up[i][…
写了个bfs发现MLE了... 设f[t][i][j]为在t时刻走到(i,j)的方案数,转移和bfs一样 #include<iostream> #include<cstdio> using namespace std; const int N=105,dx[]={1,-1,0,0},dy[]={0,0,-1,1}; int n,m,T,f[20][N][N],x1,y1,x2,y2; char c[N][N]; inline bool ok(int x,int y) { retur…