上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 57 下一页

2011年7月22日

poj 3272 Cow Traffic

摘要: // 题意: 求出由入度为0的源点到汇点的所有路径中使用最频繁那条边总共使用的次数// 思路: 设f[i] 为入度为0的源点到节点i的路径条数, g[i] 为节点i到汇点N的路径条数// 枚举每条边(s为始点,t为终点),所有边的f[s]*g[t]的最大值即为答案#include<iostream> //拓扑排序#include<deque>using namespace std;#define MAXN 5002int n,m,table[MAXN][MAXN],side[50002][2];int f[MAXN],g[MAXN],in[MAXN],out[MAXN] 阅读全文

posted @ 2011-07-22 23:07 sysu_mjc 阅读(254) 评论(0) 推荐(0) 编辑

poj 3260 The Fewest Coins

摘要: /*题意:John带了n种币值Vi的确定数量Ci的硬币,而shopkeeper的硬币无限多.给出T,求John支付的硬币数目加上售货员找零的硬币数目的最小值。如果无法支付T,输出-1 支付时硬币数量有限制,为多重背包问题. 找零时硬币数量无限制,为完全背包问题*/#include<iostream> //多重背包和完全背包using namespace std; int main() { int n,t,euro[110],num[110],dp[30000],maxn; cin>>n>>t; int mx=0; for(int i=1;i<=n;++ 阅读全文

posted @ 2011-07-22 23:06 sysu_mjc 阅读(224) 评论(0) 推荐(0) 编辑

poj 3080 Blue Jeans

摘要: #include <iostream> //KMP+枚举#include<string>using namespace std;#define len 60char str[10][100],base[100]; int next[100]; void get_next(char B[],int t) //B[1]--B[t]{ next[1]=0; int j=0; for(int i=2;i<=t;++i) { while(j>0&&B[j+1]!=B[i]) j=next[j]; if(B[j+1]==B[i]) j=j+1; next 阅读全文

posted @ 2011-07-22 23:03 sysu_mjc 阅读(146) 评论(0) 推荐(0) 编辑

poj 3041 Asteroids

摘要: // 题意:N*N矩阵,有一些格子里有小行星,一颗炮弹能够消灭掉矩阵中一行或一列的全部小行星,// 问消灭掉所有小行星所需的最小炮弹数目。// 思路:令集合X和集合Y分别表示矩阵的行和列,将矩阵每一行看成集合X的点,每一列看成集合Y的点,// 如果第i行第j列有小行星则将Xi和Yj连一条边,这样就构成一个二分图,// 题目就是求二分图的最小覆盖点数(即最少的行和列),转化成二分图的最大匹配数#include<iostream> //求二分图的最小覆盖点数#include<cstring>using namespace std;int n;int edge[510][51 阅读全文

posted @ 2011-07-22 23:02 sysu_mjc 阅读(122) 评论(0) 推荐(0) 编辑

poj 3013 Big Christmas Tree

摘要: View Code #include<iostream> #include<deque>using namespace std;#define maxn 50002const __int64 inf=(__int64)1<<63-1; struct Edge { int v; int weight; int next;}Vertex[4*maxn]; int head[maxn],curr;int cases,v,e,i,j,edge[maxn][3],w[maxn];void add_edge(int s,int t,int w) //新增结点不用申请空间 阅读全文

posted @ 2011-07-22 23:01 sysu_mjc 阅读(179) 评论(0) 推荐(0) 编辑

poj 2704 Pascal's Travels

摘要: /*题意:在一个N×N的底盘上,每一格有一个非负整数,表示在那一格可以向右或向下走几步。问每次只能向右或向下走,从左上角的格子走到右下方的格子有多少种不同的方案。dp[i][j]表示到从左上角到(i,j)的方案数dp[i][j]+=(dp[i][u])+(dp[v][j]),1<=u<j, 1<=v<i,如果(i,u)能走到(i,j), (v,j)能走到(i,j)*/#include<iostream> //DP#include<cstring>using namespace std;char table[40][40];long lo 阅读全文

posted @ 2011-07-22 22:59 sysu_mjc 阅读(128) 评论(0) 推荐(0) 编辑

poj 2882 Food Cubes

摘要: //sicily3 1114. Food Cubes//一立方体,给出某些填充的三维点,求有多少孔穴 //要注意孔的定义:A hole is a continuous empty space surrounded by food cubes in all six directions.//如果某区域与边界相临,那么它不能算做是孔.宽搜遍历时会忽略掉这种特殊情况,得到的孔数目比答案要多//方法是扩大边界, 题意:all between 1 and 100 inclusive,所以可以扩大到 0-101。最后得到的孔的数目减去 1 即为答案//为什么扩大边界后只要减去 1 就可以了,分两种情况讨论 阅读全文

posted @ 2011-07-22 22:59 sysu_mjc 阅读(165) 评论(0) 推荐(0) 编辑

poj 2689 Prime Distance

摘要: //先建立素数表,再用这些素数去筛掉[L,U]区间内的合数#include <iostream> //线性筛素数#include<cmath>using namespace std; #define maxn 46341 //floor(sqrt(double(INT_MAX))+0.5)=46341bool isPrime[maxn+1]; int prime[10000],cnt; void makePrime() //快速线性筛法建立素数表 { memset(isPrime,true,sizeof(isPrime)); cn... 阅读全文

posted @ 2011-07-22 22:58 sysu_mjc 阅读(140) 评论(0) 推荐(0) 编辑

poj 2663 Tri Tiling

摘要: #include<iostream> //DP, 与sicily4 1121. Tri Tiling 完全相同#include<stdio.h>using namespace std;int dp[31]={1}; //0的时候就是不放置,是1...int main(){ for(int i=2;i<=30;i+=2) { dp[i]=3*dp[i-2]; //在3x2矩阵中可以有3种放置方法,表示[i-2,i]不与前面相连接,单独拼凑成 for(int j=0;j<=i-4;j+=2) dp[i]+=2*dp[j]; //当j=i-4,i-6...时,表示 阅读全文

posted @ 2011-07-22 22:57 sysu_mjc 阅读(132) 评论(0) 推荐(0) 编辑

poj 2632 Crashing Robots

摘要: #include<iostream> //简单模拟题,千万要注意所给表格的x,y轴表示法与一般的相反using namespace std;char ch,action;int pos[100000][2],dir[100000],vis[102][102];int k,a,b,x,y,n,m,d,robot,repeat;int main(){ cin>>k; while(k--) { cin>>a>>b>>n>>m; memset(vis,0,sizeof(vis)); for(int i=1;i<=n;++i) 阅读全文

posted @ 2011-07-22 22:56 sysu_mjc 阅读(136) 评论(0) 推荐(0) 编辑

上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 57 下一页

导航