10 2012 档案

摘要:本题乃水题是也。dp(i)表示当前在第i格时,到达终点需要掷骰子次数的期望。dp(i)=1/6(dp(i + 1) + dp(i + 2) + dp(i + 3) + dp(i + 4)+ dp(i + 5) + dp(i + 6))+1。如果i可以直接跳到某点j,则dp(i)=dp(j)。View Code 1 #include <iostream> 2 #include <cstdio> 3 #define maxn 100010 4 using namespace std; 5 6 int next[maxn]; 7 double d[maxn]; 8 int n 阅读全文
posted @ 2012-10-22 22:02 浙西贫农 阅读(173) 评论(0) 推荐(0)
摘要:静态链表。。STL要超时。。View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #include <cstring> 5 using namespace std; 6 7 vector<int> G[50001]; 8 int dp[50001],visit[50001],head[50001]; 9 int n,k;10 struct Edge11 {12 int v;13 int next;14 }edge[50001 * 2];15 阅读全文
posted @ 2012-10-15 14:26 浙西贫农 阅读(138) 评论(0) 推荐(0)
摘要:实际上,这个题不难,状态很好写:balace[i]=max(size[j],N-size[i]),其中i是j的父节点,size[i]表示以节点i为根节点所构成子树的节点总数。一遍dfs就可以搞定。题目里给的数据是告诉你每两个节点之间有一条边,而不是父子节点关系。。。View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #define MAX 0xffffff 5 using namespace std; 6 7 vector <int> G[20001] 阅读全文
posted @ 2012-10-11 21:27 浙西贫农 阅读(167) 评论(0) 推荐(0)
摘要:View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <vector> 5 using namespace std; 6 7 int n,len; 8 char name[201][101]; 9 int dp[201][2]; 10 int special[201][2]; 11 vector <int> G[201]; 12 13 int max(int a,int b) 14 { 15 if(a > b) re 阅读全文
posted @ 2012-10-09 19:39 浙西贫农 阅读(256) 评论(0) 推荐(0)
摘要:树形DP入门啦。View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <vector> 5 using namespace std; 6 7 int n,len; 8 int dp[6001][2]; 9 int value[6001];10 bool flag[6001];11 vector <int> G[6001];12 13 int max(int a,int b)14 {15 if(a > b) retur 阅读全文
posted @ 2012-10-09 19:37 浙西贫农 阅读(153) 评论(0) 推荐(0)