• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
tmeteorj
Nothing is so big that it is impossible to get over, and hurt only serves to make us stronger. 没有什么事是大到无法战胜的,痛苦也只会让我们变得更加坚强。
博客园 | 首页 | 新随笔 | 新文章 | 联系 | 订阅 订阅 | 管理
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 21 下一页

2012年9月27日

POJ 1848
摘要: 题意:给定一棵树,要添加一些边,不能是重边,不能是自环,让它的每一个结点都恰好属于一个环,求最少添加的边数。题解:树形dp:dp[now][0]为以now为根的子树完成题目要求添加的最少边。 dp[now][1]为除开now这个结点后它的子树满足题目要求所需要的最少边。 dp[now][2]为now和它的某一个孩子形成至少长度为2的链所需要添加的最少边,未涉及到的点均已满足题目要求。 转移方程:dp[now][1]=sum(dp[k][0]),k为now的孩子。 dp[now][2]=sum(dp[k][0])-dp[i][0]+min(dp[i]... 阅读全文
posted @ 2012-09-27 18:21 tmeteorj 阅读(546) 评论(0) 推荐(0)
 
POJ 3272
摘要: 题意:n个点m条边的有向图,从所有入度为0的点出发到达n,问所有可能路径中,经过的某条路的最大次数是多少。边全是由标号小的到标号大的。题解:正向走一遍,记录到达某点的路径总数,反向走一遍,记录某点出发到终点的总情况数。枚举每条边,求边对应两点所记录的两个信息之积的最大值。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=5005; 6 typedef long long ll; 7 int he 阅读全文
posted @ 2012-09-27 16:56 tmeteorj 阅读(440) 评论(0) 推荐(0)
 
 

2012年9月26日

POJ 3279
摘要: 题意:黑白的板,每次选择一个十字形翻转(十字板内黑白互换,若是边界则不管),求最小将原图变为全白的策略。题解:枚举第一行翻转情况,2^c,然后验证,由于第一行确定了,后面就可以跟着确定了。View Code 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 int map[20][20]; 6 int hit[20][20],ahit[20][20]; 7 int ans,r,c; 8 const int inf=1<<30; 阅读全文
posted @ 2012-09-26 21:19 tmeteorj 阅读(1781) 评论(0) 推荐(0)
 
POJ 2657
摘要: 题意:有长度为n的环,环上有m个坏点,目标在z位置,从1出发,每次跳k步,最后到达z,问最小的k是多少。题解:1、暴力枚举,我没试过,但有人这样过了。 2、考虑目标z,假设跳了m圈,最后跳到z,则有(z-1+m*n)≡0 (mod k),如果(z-1)%k==0,直接检验小于z的坏点是否会猜到,否则,m*n≡(z-1)%k (mod k),用模线性方程可以求出m,考虑坏点,分为两类,一类坏点的坐标小于z,人会从上面跨过m+1次,另一类坏点坐标大于z,人会从上面跨过m次。 对于任意一个坏点a,如果在某一次踩在了它上面,就存在(a-1)*(a-1+n)*(a-1+2*n)*(a-1+3... 阅读全文
posted @ 2012-09-26 20:53 tmeteorj 阅读(219) 评论(0) 推荐(0)
 
POJ 1252
摘要: 题意:给6种不同面额硬币,求组成[1,100]中数的平均需要硬币与最多需要硬币数,可以通过减法获得,比如有1、4两种硬币,凑成3可以用4-1两个硬币完成,而不是1+1+1三个硬币。题解:背包问题,由于可以减,还需要反过来dp一遍,值得注意的是上界需要设成2000才行。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int dp[2050]; 6 void update(int v) 7 { 8 if(v>0) 阅读全文
posted @ 2012-09-26 19:38 tmeteorj 阅读(318) 评论(0) 推荐(0)
 
POJ 1240
摘要: 题意:给定一颗多叉树(<=20)的先序和后序遍历结果,求这种树共有多少。题解:考虑产生相同先序遍历和后序遍历的两种树,S和T,他们每个相同结点对应的孩子数目应该相等,因为假如S某个结点有s个孩子,他们在先序和后序遍历中的顺序是一致的,要想两棵树先序遍历与后序遍历一致,则他们每一个结点的孩子都应该有这种特点。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long ll; 6 ll c[ 阅读全文
posted @ 2012-09-26 18:51 tmeteorj 阅读(388) 评论(0) 推荐(0)
 
POJ 2887
摘要: 题意:在字符串中插入字符,问第i个字符是谁题解:块状链表,不知为什么splay超时= =!View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 const int maxn=1005000; 7 int bs,top; 8 struct Block 9 {10 int size,next;11 char s[3000];12 void push_back(char ch)13 阅读全文
posted @ 2012-09-26 11:23 tmeteorj 阅读(362) 评论(0) 推荐(0)
 
 

2012年9月25日

POJ 2227
摘要: 题意:一个矩形区域,高低起伏,求最多储水量。(边界不能储水)题解:先将边界装入优先队列中(高度越小越优先),并标记为已访问。看队首元素四周未访问过的点,1、如果该点不比队首低,则将它加入队列,标记为已访问,即它变成了新的边界。2、该点比队首低,意味着该点可以储水,更新ans值,同时将它加入队列中,但是它的高度为原队首元素的高度,即以它为边界的点不能超过这个高度,同时将该点标记为已访问。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<que 阅读全文
posted @ 2012-09-25 21:18 tmeteorj 阅读(715) 评论(0) 推荐(0)
 
POJ 1509
摘要: 题意:将字符串第i位开始的字串提到前面形成A[i],求n个这种串中字典序最小的串的i。题解:1、暴力可以水过。。 2、最小表示法,具体参见IOI2003论文《最小表示法在字符串循环同构问题中的应用》。View Code 1 #include<cstdio> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 int main() 6 { 7 int T; 8 for(scanf("%d",&T),getchar();T;T--) 9 {10 char 阅读全文
posted @ 2012-09-25 19:42 tmeteorj 阅读(426) 评论(0) 推荐(0)
 
POJ 3257
摘要: 题意:牛要建立长为n的云霄飞车,可以有m个事件点,每个事件设计4个变量,即从a点开始,长为b,给牛f的开心值,要花费c元。牛总共有b元,它们想从0开始,一直经历事件点到最后,使得开心值最大,求此值。题解:对每个事件点建立一条边,同时用dp[i][j]代表第i个点话费了j的钱所能得到的最大开心值,然后用类似dijiskra的算法,从0到n-1开始松弛,再从dp[n][..]中选一个最大的即可。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namesp 阅读全文
posted @ 2012-09-25 19:15 tmeteorj 阅读(239) 评论(0) 推荐(0)
 
 
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 21 下一页

公告


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3