上一页 1 ··· 4 5 6 7 8 9 下一页

2013年5月30日

CodeForces #1 B. Spreadsheets

摘要: 传送门:http://codeforces.com/contest/1/problem/B类型:简单模拟,进制转换题意:对于第23行第55列,有两种描述方式:一种是R23C55一种是BC23。其中BC表示55.(A->1,Z->26,AZ->27)给出其中一种表达方式,求另一种思路:本题就是10进制和以1开始的 1-26 这特殊的 26进制 的相互转换。方法:10 to 1-26while (c) { re[p--] = (c-1)%26 + 'A'; c = (c-1)/26;}从低位到高位的顺序输出。注意 c-1,每次相当与把个位的 1-26 转换成了 0 阅读全文

posted @ 2013-05-30 01:52 ShineCheng 阅读(282) 评论(0) 推荐(0) 编辑

2013年5月20日

USACO 1.1-beads

摘要: 题意:给一个项链(首尾相连),从某个地方断开,然后两头取相同的珠子,问最多能取多少个有三种珠子:r,w,b。其中w是百变珠子,可以当成w或者r。类型:模拟思路:首先,断开的地方不会是某个连续串的中间(因为,断开在中间比断开在两头非但不会得到更好的结果,反而可能得到更差的结果)其次,bw..wb = b..b rw..wr = r..r整个程序的思路就是先压缩字符串(把相同的合并)然后处理第二个条件再次压缩,得到最终串然后枚举每个地方,模拟人去取,看能取多少个(关键是考虑好各种特殊情况。。。。恶心啊)代码:/*PROG: beadsLANG: C++*//******************** 阅读全文

posted @ 2013-05-20 15:45 ShineCheng 阅读(189) 评论(0) 推荐(0) 编辑

2013年5月19日

POJ 1042:Gone Fishing

摘要: 题意:有一排池塘,从i到i+1个池塘需要t[i]时间(我的代码里是t[i+1]), i池塘一次能抓到f[i]只鱼,每抓一次后少d[i]只,到少于等于0时,之后都为0问告诉你所有信息,求最优情况(最优情况相同时,取前面时间花的多的)类型:DP动态规划思路:状态含义:dp[i][v]为第i个池塘还有v时间时,的最优答案状态转移:那么对于池塘i,如果它有2中选择1:其实没到过池塘i2:到了池塘i并停留k时间当然,如果要求必须到,那么第一个选择忽略。初始化:对于所有i=1,那么所有时间都用来停留在i特殊:如果必须到达当前,然而所给的时间少于从上一个池塘来到这个池塘的时间,则IMPOSSIBLE(注意, 阅读全文

posted @ 2013-05-19 23:52 ShineCheng 阅读(239) 评论(0) 推荐(0) 编辑

H.High String

摘要: 原题:Description:We define the srting which can satisfy the following conditions as High String:1)The string only contains six kinds of characters: A,B,C,D,E and F;2)cont(A) = count(b), count(c) = cont(D),and count(E) = count(F). count(X) means the number of character X in the string;3) Except the str 阅读全文

posted @ 2013-05-19 22:33 ShineCheng 阅读(223) 评论(0) 推荐(0) 编辑

2013年5月18日

USACO 1.1-friday

摘要: 题意:计算1900年后N年内(1900~1900+n-1)所有月的13号是星期几的个数思路:简单模拟易错点:当年不算。如算1906年时,这年有365天是不能算的当年闰年影响条件:当年是闰年,对当年天数有影响,还得保证月份>2经验:模拟题,最好用最简单的方式去做。。或者,全部先想清楚再做。代码:简单方式/*PROG: fridayLANG: C++*/#include <cstdio>#include <cstring>#include <cstdlib>int yearday[410], monthday[13] = {0,31,28,31,30,31 阅读全文

posted @ 2013-05-18 11:14 ShineCheng 阅读(146) 评论(0) 推荐(0) 编辑

2013年5月15日

POJ 1141:Brackets Sequence

摘要: 题意:定义合法串为(),[]以及他们的并列组合如()[],()(),或嵌套组合如([]),(())。 其实正常理解就好~然后给你一个串,让你求出把它改对后的最短合法串。类型:DP动态规划思路:当我拿到一个字符i, 那么在一种最优结果中,它只有这么两种结果:要么和某个字符匹配,要么不匹配。定义状态:dp[i][j]为 i到j的子串中 所能做到的最大匹配数符号数。最大匹配符号数说明:如(([))]] 如果这么匹配(([))]] 数量为2, 而这样匹配 (([))]] 数量为4。易知后者也是最大的,所以这个子串最大匹配符号数为4.状态转移:首先特判:若i所在字符与j所在字符能匹配(() 或 []). 阅读全文

posted @ 2013-05-15 17:11 ShineCheng 阅读(125) 评论(0) 推荐(0) 编辑

2013年5月13日

POJ 2479:Maximum sum

摘要: 题意:告诉你一些数字 ,让你在其中找出两段,使得这两段数字累加的和最大。Hint:如给你的数字是 10 1 -1 2 2 3 -3 4 -4 5 -5 则答案是 13。因为In the sample, we choose {2,2,3,-3,4} and {5}, then we can get the answer.类型:DP动态规划思路:My思路:(本思路过于奇葩,脑血拴心脏病患者请不要阅读)把所有的相关的条件都表示成状态,然后写出状态之间转移的方程所以我本题弄的状态十分恶心。。。dp[i][j][k]表示从第0个数到第i个数,(j==0?包含:不包含)其本身的(k==0?单区间:双区间) 阅读全文

posted @ 2013-05-13 18:38 ShineCheng 阅读(142) 评论(0) 推荐(0) 编辑

2013年5月10日

HDU 1203:I NEED A OFFER!

摘要: 首先想明白怎么计算概率,就是计算他的逆事件,也就是算失败概率然后用1减然后很自然的得到递推式dp[v] = min(dp[v], dp[v-c[i]]*(1-w[i])dp[v]状态的值表示当前状态下的失败概率注意dp数组初始化为1附代码HDU 1203:I NEED A OFFER!/************************************************************************* > File Name: hdu1203.cpp > Author: Shine > Created Time: 2013-05... 阅读全文

posted @ 2013-05-10 14:48 ShineCheng 阅读(164) 评论(0) 推荐(0) 编辑

HDU 2546 饭卡

摘要: 类型:01背包策略就是把最大的留起来,剩下的尽量去买到5块钱,最后用最大的买。留最大不用说。尽量买到5块钱就是一个背包问题。即 背包容量为m-5每个物品的容量=价值=菜的价格特殊判断:如果m < 5直接输出就可以证明策略正确性:假设最后买的不是最大的,设为b.最大的设为a. 其他设为C有(C+a)这个组合尽量买到5块钱 + b > (C+b)->5块钱 + a1: C+a <= m-5则 C+b <=m-5此时 C+a+b = C+b+a 假设不成立2: C+a > m-5则假设Ci + a 是其尽量买到5块钱的最优组合因为 Ci+b < m-5 (C 阅读全文

posted @ 2013-05-10 10:10 ShineCheng 阅读(166) 评论(0) 推荐(0) 编辑

2013年5月9日

POJ 3670 Eating Together

摘要: 之前一直不过,最后的过的思路如下:dp[i][j]表示的含义是 到第i位,最高为j的子序列的最长长度。递推式:dp[i][1] = dp[i-1][1] + (a[i] == 1?1:0);dp[i][2] = max(dp[i][1], dp[i-1][2]) + (a[i]==2?1:0);dp[i][3] = max3(dp[i][1], dp[i][2], dp[i-1][3]) + (a[i]==3?1:0)高度为1的,最长只能为之前的,加上本身(如果本身是1则可加,否则不行)(1111_)高度为2的,为刚才算出的 高1序列最长 与 之前高2序列最长 的最大值 再视情况包含本身。(. 阅读全文

posted @ 2013-05-09 12:44 ShineCheng 阅读(139) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 下一页

导航