摘要: POJ 3756 Chess Game核心算法 dp分析:graph[i]记录在格子i处前进的步数stop[i]标记在格子i处是否停一次dp[i][j]表示第j部到达格子i的概率则 初始化下dp[0][0]=1;若已知dp[i][j],现在掷骰子得点数为k,移动到格子curto = i+k;如果格子curto处为暂停,则将当前概率加至dp[curto][i+2]处否则,curto 首先根据graph[curto]信息移动,将概率加至相应位置dp[curto][i+1]即可 ans = sum(dp[n][i]*i)(i=0,1,2,...N)PS:当ans = 0时输出Impossible!# 阅读全文
posted @ 2011-01-25 15:27 AndreMouche 阅读(410) 评论(0) 推荐(0) 编辑
摘要: POJ 1761 Easy Task大意:给你n条提交问题的信息,每条信息包含提交时间,提交队伍,提交题目编号,是否AC信息,统计这n条信息,要求输出每个问题的信息,包括题号,提交次数,平均提交次数,平均提交时间PS:1.某一队伍一旦AC了某一道题后,过后再提交该题的信息不计入统计 2.只对已经AC的队伍进行统计,即提交次数 = SUM(已AC的队伍的总共提交次数),不对未AC的队伍进行统计 分析: 1.用map存储队伍信息,编号 2.用accept[i][j]表示第j支队伍是否AC问题i 3.用actime[i][j]表示第j支队伍共提交问题i的次数 4.用node保存一个问题的信息,包括解 阅读全文
posted @ 2011-01-25 11:19 AndreMouche 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 核心算法:01背包解题思路: 首先按颜色对衣服进行归类,即将相同颜色的衣服放在同一类中对于某一种颜色的所有衣服所需要的最少时间,相当于将这堆衣服按时间分为两推,使得这两堆衣服所需要的时间尽可能的接近。对于每堆衣服建模: 假设当前这堆衣服一个人洗的时间为sum, 令mid = sum/2; 问题转化为,(1)有背包容量为mid,现在要从这堆衣服中选取衣服,使得总容量尽可能接近于mid 继续转化..(2)背包容量为mid,某件衣服的重量为wi,价值也为wi,计算所能达到的最大价值 dp[mid], 那么问题(2)中的dp[mid]相当于问题(1)中最接近于mid的那个容量,故原问题中这堆衣服所需要 阅读全文
posted @ 2011-01-24 22:37 AndreMouche 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 字典序问题 Time limit: 1000MS Memory limit: 32768K Total Submit: 574 Accepted: 193 在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26 个小写英文字母组成A={a,b,…,z}。该字母表产生的升序字符串是指字符串中字母按照从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1次。例如,a,b,ab,bc,xyz等字符串都是升序字符串。现在对字母表A 产生的所有长度不超过6 的升序字符串按照字典序排列并编码如下。 1 2 … 26 27 28 … a b … z ab ac …对于任.. 阅读全文
posted @ 2010-12-31 11:08 AndreMouche 阅读(1420) 评论(0) 推荐(1) 编辑
摘要: 统计数字问题 Time limit: 1000MS Memory limit: 32768K Total Submit: 617 Accepted: 135 一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,…,9。给定表示书的总页码的10 进制整数n (1≤n≤10^9) 。计算书的全部页码中分别用到多少次数字0,1,2,…,9。每个文件只有1 行,给出表示书的总页码的整数n。输出文件共有.. 阅读全文
posted @ 2010-12-31 11:04 AndreMouche 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 硬币找钱问题Time Limit:1000MS Memory Limit:65536KTotal Submit:3 Accepted:1 Description 设有6 种不同面值的硬币,各硬币的面值分别为5 分,1 角,2 角,5 角,1 元,2元。现要用这些面值的硬币来购物和找钱。购物时可以使用的各种面值的硬币个数存于数组Coins[1:6]中,商店里各面值的硬币有足够多。在1次购物中希望使用最少硬币个数。例如,1 次购物需要付款0.55 元,没有5 角的硬币,只好用2*20+10+5 共4 枚硬币来付款。如果付出1 元,找回4 角5 分,同样需要4 枚硬币。但是如果付出1.05 元(1 阅读全文
posted @ 2010-12-25 11:03 AndreMouche 阅读(4061) 评论(0) 推荐(0) 编辑
摘要: 金币阵列问题问题描述:有m´ n(m#includeconstint inf =99999;constint N =101;int a[N][N],b[N][N],temp[N][N]; //a存储初始矩阵,b为目标状态矩阵int n,m;int need;//需要变换次数void ChangeL(int x,int y)//变换列{ if(x==y)return; int i; for(i=1;i<=n;i++) { int tt=temp[i][y]; temp[i][y]=temp[i][x]; temp[i][x]=tt... 阅读全文
posted @ 2010-12-24 21:45 AndreMouche 阅读(1087) 评论(0) 推荐(0) 编辑