2011年3月16日

hdoj 1254 推箱子 bfs嵌套

摘要: 这题一边听着歌,一边做,结果相当悲剧。WA了无数次。。。。看来BFS写得还是要规范点,这样细节上才能减少出错。#include <iostream>#include <cmath>#include <queue>using namespace std;struct Position { int x, y;};struct Status { Position person, box; int deep;}_s;int mp[10][10], n, m;int dir[4][2] = { 1, 0, 0, -1, -1, 0, 0, 1 };Status per 阅读全文
posted @ 2011-03-16 21:51 CrazyAC 阅读(211) 评论(0) 推荐(0) 编辑
2011年3月14日

dfs拼木棒,剪枝

摘要: hdoj 1455Sticks这题对dfs效率要求比较高,起初乱七八糟的代码果断TLE了。一般来说,dfs时能判断的尽量在上层进行判断,不要带到下层去判断。而且在这题中,如果相连的同样长的小棒不再同样搜索,这点很重要~~~~~~~#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int num[70], n, g_sum, len;bool mark[70];bool dfs( int deep, int po 阅读全文
posted @ 2011-03-14 22:04 CrazyAC 阅读(327) 评论(0) 推荐(0) 编辑

dfs + 回溯

摘要: hdoj 1426 Sudoku Killer数独#include <iostream>using namespace std; struct Node { int x, y;}ns[85]; int cntSum, ca=1;int mp[10][10]; bool init() { int i, j; char ch[5]; cntSum = 0; for( i=0; i<9; ++i ) { for( j=0; j<9; ++j ) { if( scanf( "%s", ch ) == EOF ) return 0; ... 阅读全文
posted @ 2011-03-14 19:17 CrazyAC 阅读(295) 评论(0) 推荐(0) 编辑

双向BFS

摘要: hdoj 1401Solitaire棋盘上有四个棋子,给你两个状态,问可否8步内将一个状态转移到另一个状态。双向BFS。偶这题写了一晚加一个下午,一开始兴致勃勃地单向BFS,当TLE后才发现状态总数估计错误了,应该是(4*4)^8。以后这样的错误要避免撒~~~~然后判重时用 int mark[8][8][8][8][8][8][8][8],一交,超内存了,再次悲剧。其实这样的话内存耗费是(8^8)*4/1024 = 65536K,明显要超的~~~~~ #include <iostream>#include <queue>#include <algorithm> 阅读全文
posted @ 2011-03-14 16:05 CrazyAC 阅读(1933) 评论(0) 推荐(0) 编辑
2011年3月13日

大数模版

摘要: /* * $File: test.cpp * $Date: Wed Feb 09 13:22:29 2011 +0800 * $Author: Zhou Xinyu <zxytim@gmail.com> * * a simple High precision integer implementation */#include <cstdio>#include <cstring>#include <cctype>#include <cmath>#include <algorithm>#include <cassert& 阅读全文
posted @ 2011-03-13 12:13 CrazyAC 阅读(229) 评论(0) 推荐(0) 编辑
2011年3月12日

扩展欧几里得

摘要: hdoj 1576 A/B(A/B)%C = (A*B^-1)%C = (A%C)*(B^-1)%C用扩展欧几里得求出B的逆元B^-1//x是a mod b的乘法逆元,y是b mod a的乘法逆元inline int extend_gcd( int a, int b, int &x, int &y ) { int tp, r; if( b == 0 ) { x = 1; y = 0; return a; } r = extend_gcd( b, a%b, x, y ); tp = x; x = y; y = tp - a / b * y; return r;}AC代码:#inc 阅读全文
posted @ 2011-03-12 21:58 CrazyAC 阅读(299) 评论(0) 推荐(0) 编辑

Dinic

摘要: hdoj 1569 & hdoj 1565 方格取数1. 最小点权覆盖集=最小割=最大流2. 最大点权独立集=总权-最小点权覆盖集将格子黑白染色,然后求最小割。#include <iostream>#include <cstring>using namespace std;/*==================================================*\| Dinic 最大流 O(V^2 * E)| INIT: ne=2; head[]置为0; addedge()加入所有弧;| CALL: flow(n, s, t);\*======= 阅读全文
posted @ 2011-03-12 10:14 CrazyAC 阅读(540) 评论(0) 推荐(0) 编辑
2011年3月11日

Fold_Fulkerson

摘要: hdoj 1532Drainage Ditches每次bfs找到一个增广路径,然后根据路径添加反向弧,得到残余网络。直到找不到增广路径。#include <iostream>#include <vector>#include <queue>using namespace std;const int inf = 210000000;int n, m, mp[202][202], P[202];vector<int> vec[202];void init() { int i, j, a, b, c; for( i=0; i<=m; ++i ) 阅读全文
posted @ 2011-03-11 13:17 CrazyAC 阅读(287) 评论(0) 推荐(0) 编辑
2011年3月8日

ACM之java

摘要: 输入,格式输出代码1:import java.math.*;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner cin=new Scanner (System.in); BigInteger a,b,temp; int i,j,n,m,t; t=cin.nextInt(); for(i=1;i<=t;++i){ n=cin.nextInt(); ... 阅读全文
posted @ 2011-03-08 15:37 CrazyAC 阅读(518) 评论(0) 推荐(0) 编辑
2011年3月7日

[转]树形DP题集

摘要: 转载自 以太论最终编辑 以太论树形DP http://acm.hdu.edu.cn/showproblem.php?pid=2196向下搜一遍,向上搜一遍http://acm.hdu.edu.cn/showproblem.php?pid=1561 对每一个节点进行一次背包,好题啊,两个DP树形和背包结合的http://acm.hdu.edu.cn/showproblem.php?pid=1011这道是当年省赛的压轴题,但是感觉和上一道差不多,一样的难度,唯一不同的就是这个是无向图(我由于思维惯性拿来当单向图作,纠结了好久。。。) 树形+背包+临街表下边是从天涯空间里找出来的练习http://a 阅读全文
posted @ 2011-03-07 19:22 CrazyAC 阅读(1517) 评论(0) 推荐(0) 编辑