关闭

poj 1313 Booklet Printing 模拟水题

//poj 1314 //sep9 #include using namespace std; const int MAXN=128; struct Page{ int front1,front2; int back1,back2; }pages[MAXN]; int n; void print(int x) { if(x>n) printf(" Blank"); else printf...
阅读(111) 评论(0)

poj 1769 Minimizing maximizer 单点更新线段树

//poj 1769 //sep9 #include using namespace std; const int MAXN=100012; const int MAXX=9999999; int n,m; int minv[MAXN*4]; void build(int l,int r,int k) { minv[k]=MAXX; if(l==r) ret...
阅读(78) 评论(0)

poj 2286 The Rotation Game 迭代加深搜索

//poj 2286 //sep9 #include using namespace std; int move[8][9]={{0,2,6,11,15,20,22}, {1,3,8,12,17,21,23}, {10,9,8,7,6,5,4}, {19,18,17,16,15,14,13}, {23,21,17...
阅读(102) 评论(0)

poj 1180 Batch Scheduling dp斜率优化

题意:        设dp[i]=min dp[j]+(S+sumT[i]-sumT[j])*F[i]  1 分析:        dp[i]=min (S+sumT[i])*sumF[i]+dp[j]-sumT[j]*F[i],由于F[i]随i减小单增,sumT[j]随i减小单增,按照i从N到1倒推dp[i]满足单调队列优化的条件dp[i]=S(i)+min{fj(i)|i 代码: ...
阅读(81) 评论(0)

poj 3155 Hard Life 最大密度子图

//poj 3155 //sep9 #include #include using namespace std; const int MAXN=512; const int MAXM=20000; const double MAX=1e7; typedef double cap_type; struct Edge { int v,nxt; ca...
阅读(141) 评论(0)

poj 1022 Packing Unit 4D Cubes 搜索

//poj 1022 //sep9 #include using namespace std; const int MAXN=128; const int MAX_INDEX=1024; int g[MAXN][MAXN][10]; int vis[MAXN],map[MAX_INDEX],minx[4],maxx[4],x[4]; int cases,n,cnt; void dfs(int...
阅读(90) 评论(0)

poj 1033 Defragment 模拟+递归

//poj 1033 //sep9 #include using namespace std; const int MAXN=10024; int a[MAXN],vis[MAXN],N,K; int zero_pos,flag; void dfs(int i) { if(a[i]==i||a[i]==0) return; if(vis[a[i]]==1){ printf("%d %...
阅读(120) 评论(0)

poj 2440 DNA 递推在模下存在循环节

题意和分析:        题意都是废话,用动态规划列个方程化下简,最后也是这题有意思的地方是求a(n)=a(n-1)+a(n-3)+a(n-3) 在模2005下的值。        你可能会说,这个简单啊,弄个数组,搞个for循环就行啊,没错,但这是O(n)。能快点么?        嗯,那用矩阵相乘表示递推,在乘法矩阵结合律的保证下幂运算加速足够快了吧?嗯,是快不少,但这是O(logn)...
阅读(142) 评论(0)

poj 2138 Travel Games 搜索+自动机水题

//poj 2138 //sep9 #include using namespace std; const int MAXN=1024; const int MAXL=80; int n,ecnt; struct edge{ char s[MAXL+4]; bool exist; int nxt; }first,e[MAXN+4]; int head[MAXL+4]; bool judg...
阅读(113) 评论(0)

poj 1145 Tree Summing 栈+模拟

题意: 给一个数a和一棵带权树T,判断T根到叶子的若干路径的权和中是否有和a相等的。 分析:        栈用来表达式求值有两种办法,一是将表达式转为后序再求值,二是利用单调符号栈一次扫描。单调符号栈一次扫描法求值时维护单调符号栈(栈中总是优先级低的符号在下,‘(’在栈外优先级最高,栈中优先级最低,‘)’在栈外优先级最低,不可能出现在栈中)。先搞清楚表达式求值的单调符号栈一次扫描法这题就容...
阅读(119) 评论(0)

poj 1966 Cable TV Network 无向图最小割

//poj 1966 //sep9 #include #include using namespace std; const int MAXN=512; const int MAXM=20000; struct Edge { int v,nxt,f; }e[MAXM],e_copy[MAXM]; queue que; int src,sink; int g[MAXN],dist[MAX...
阅读(76) 评论(0)

poj 1040 Transportation 深搜剪枝

//poj 1040 //sep9 #include using namespace std; int n,m,order_num,ans; struct Order{ int s,t,num,val; }orders[32]; int passengers[16],most_earn[32]; void dfs(int cur,int sum_value) { if(cur>=ord...
阅读(114) 评论(0)

poj 1815 Friendship 求字典序最小的最小割

题意: 拆点后是求无向图字典序最小的最小割。 分析:        设有边e(u,v),则下面三点等价:        1:e可以作为割边(最小割集不唯一)。        2:去掉e后最小割值变小。        3:残量网络中不存在u到v的增广路。        所以从编号小的边开始,判断该边可不可能是割边,如果可能,把这条边去了,退流。如果不可能,保持原状,处理下一条边。 代...
阅读(230) 评论(0)

poj 1176 Party Lamps 模拟

//poj 1176 //sep9 #include #include #include using namespace std; const int MAXN=128; int N,C,limit[MAXN],tmp[MAXN]; string pass_string[20]; string get_string() { string res; for(int i=0;i<N;++i...
阅读(238) 评论(0)

poj 1120 A New Growth Industry 模拟

//poj 1120 //sep9 #include using namespace std; const int SIZE=20; int D[SIZE+4],mat[SIZE+4][SIZE+4],sum[SIZE+4][SIZE+4]; int dx[4]={0,0,-1,1}; int dy[4]={-1,1,0,0}; char ch[4]={'.','!','X','#'}; int...
阅读(117) 评论(0)
460条 共31页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:224707次
    • 积分:6712
    • 等级:
    • 排名:第3895名
    • 原创:460篇
    • 转载:0篇
    • 译文:0篇
    • 评论:19条
    最新评论