
寒假练习
文章平均质量分 60
PNBB
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
寒假练习 1000 A+B
高精度加减法,用的是一个模版,不能解决前导0的问题,但是很好用。#include#include#includevoid sub(char s1[],char s2[],char t[]){ int i,j,l2,l1,k; l2 = strlen(s2); l1 = strlen(s1); if(l2 > l1){ p原创 2013-04-01 21:51:12 · 610 阅读 · 0 评论 -
寒假练习 1020 小白鼠
题目大意:给定一些瓶子,以及每个瓶子的有毒概率,现在将几个瓶子混在一起给小白鼠实验,然后要求出最少的实验次数,找到那个有毒的瓶子。 这个题目啊,看完以后呢,是不会有什么想法的,但是只要你画一下图,你就知道它要干什么,为什么?(你按题意画画就知道了),其实本题愿意就是考察最后搜索二叉树,一个较为难想的DP题,具体的话,查查算法书~ 这里就简单说一下实现吧,就是找两个最小概率的原创 2013-04-01 23:01:35 · 540 阅读 · 0 评论 -
寒假练习 1018 没有上司的聚会
树形DP的问题 题目大意:有一群人,有上下级关系,每人都有一定的欢乐值 下级不能和直接上司一同去参加聚会,要求出最终的最大的欢乐值 依照题意可以建造一颗树形结构的图(用邻接表储存,速度快) 对于某个结点x,dp[x][]表示以x为根结点的子树的最大欢乐值 那么,dp[x][0]代表x不去参加聚会所能得到的最大欢乐值原创 2013-04-01 22:44:38 · 622 阅读 · 0 评论 -
寒假练习 1014 Big Event in BIT
题目大意:有n种物品,每种物品的价格和数量已知,现在要求将这些物品分成两个集合,使两个集合的总价值的差最小。这就是典型的多重背包问题。#include#include#include//多重背包问题 int dp[250001],val[102],num[102];//dp一定要足够大 int main(){ int n,i,j,k; int s原创 2013-04-01 22:36:29 · 456 阅读 · 0 评论 -
寒假练习 1021 Pascal's Travels
题意:从map[0][0]走到map[n-1][n-1]有多少种不同的走法 要求:每次只能移动map[i][j]里面数字的距离(不多不少),而且只能向下或者向右移动 典型DP,dp[i][j]代表走到map[i][j]这个位置时候的方案数 那么状态转移方程: dp[i][j]=dp[i+map[i][j]][j]+dp[i][j+map[i][j]];原创 2013-04-01 23:04:19 · 448 阅读 · 0 评论 -
寒假练习 1002 Roman numerals
题意:就是给一个罗马数字,然后要你求出这个数字所代表的值是多少? 简简单单的字符串处理~不过是代码写的有点难看~_~#include#include#includeint main(){ char array[100000]; int cishu; int length; scanf("%d\n",&cishu);原创 2013-04-01 21:56:31 · 569 阅读 · 0 评论 -
寒假练习 1009 Number Sequence
题意:给定序列a1a2a3... 定义ai代表1234...i,现在给定位置n,求解出这个位置的数字是多少。 一开始想法简单,妄图利用几个计算就可以判断, 但是后来发现问题,对于序列a12:123456789101112,它是有15位数的,所以不能简单的通过等差数列求和来解决,因为数据量比较大,所以普通方法会超时 那么怎么办呢?这里利用到一个知识, 确定i的位数的方法,i原创 2013-04-01 22:29:26 · 500 阅读 · 0 评论 -
寒假练习 1001 Average Numbers
题意:给定一个序列,a1,a2,a3,a4,a5.....,an,求这样的序列,这个序列里面的每个值i代表原序列除了ai这个数之后的平均值==ai,如没有这样的序列,输出0;很简单的水题。#include#include#includeint main(){ int a[200002]; int b[200002]; int i,j,n,t,hu;原创 2013-04-01 21:53:24 · 517 阅读 · 0 评论 -
寒假练习 1017 To the Max
经典的DP了,跟这题打交道也有许久了,简而言之,就是求子矩阵的最大和。#include#include#includeint main(){ int a[103][103]; int b[103]; int i,j,k,p,q,n; while(~scanf("%d",&n)) { int max原创 2013-04-01 22:41:41 · 514 阅读 · 0 评论 -
寒假练习 1013 Bone Collector
题目大意:给定一定量的背包容量V,对于不同的物体,有不同的价值与容量,求所能获得的最大价值。典型的01背包问题#include#include#include#define max(a,b) a>b?a:b//DP问题 0/1背包问题 int w[1002];int c[1002];int dp[1002];int main(){ int i,j,原创 2013-04-01 22:35:11 · 497 阅读 · 0 评论 -
寒假练习 1010 Maximum Sum
题目大意:给定一个序列,求出序列的最大连续子序列的和。典型的DP,就不解释了,dp[i]代表i元素之前最大子序列和的值。#include#include#include#define min -99999999//DP问题 int sta,end;int main(){ int n,i,j,t,sum,maxsum,in,b; scanf("原创 2013-04-01 22:30:59 · 481 阅读 · 0 评论 -
寒假练习 1015 Edit Distance
这题就是算法书上的一个简单的DP题目。 题目大意:给定两个字符串:a,b 有三种改变方式: 1.加一个字符 2.删去一个字符 3.改变一个字符 每一个改变为一次操作,求出将a变为b的最小操作数 利用动态规划的思想解决。#include#include#include#define maxn 1006#原创 2013-04-01 22:38:49 · 486 阅读 · 0 评论 -
寒假练习 1012 导弹防御问题
这题题目大意很清楚,之所以一开始没做是因为理解出错。 因为导弹不能上升,所以: 第一个要求是求出某枚导弹的最多拦截个数,这个很好理解,就是求解不上升的最长子序列 第二个要求是求出最少的拦截导弹个数,因为一枚导弹发射出去后就不能上升,所以要求出需要多少枚导弹,就是求出最长上升子序列,相当于敌机是一架一架的来, 一枚导弹一经发射就不可能后退或者上升,所以为对付后来的上升原创 2013-04-01 22:33:48 · 513 阅读 · 0 评论 -
寒假练习 1008 Putting Apples
首先要感谢组合数学老师啊~不然还一直坑死在这题呢(一直想用组合数求解) 题目大意是:把n个相同的苹果放入k个相同的盒子里,可以有空盒子,问有多少种方法数? 首先分析一下这个题目的要求: 将n各相同的苹果放入k个相同的盒子里面,问有多少种方法? 最简单的理解就是使用斯特林数(组合数学来求解), 但是由于斯特林数求解方法没有显式公式,所以比较难写,原创 2013-04-01 22:16:13 · 536 阅读 · 0 评论 -
寒假练习 1007 Number Converter
题意:给定两个数子N,M,求A在B的进制情况下,表示成什么? 简单的进制转换嘛~#include#include#includeint main(){ int n, k, i, a[100]; while (scanf("%d%d", &n, &k)!=EOF) { i = 0; if原创 2013-04-01 22:12:46 · 447 阅读 · 0 评论 -
寒假练习 1006 The most frequent number
题意:给定一个序列,求出其中出现最频繁的数字。 先来一个快排,将所有的序列排列,然后遍历这个数组,得到每个数出现的次数并不断更新,最后就可以得到答案,用算法分析来看就是,快排O(n*log n) + 遍历维护O(n) = O(n * log n);#include#include#includeint cmp(const void * a, const void * b)原创 2013-04-01 22:10:07 · 569 阅读 · 0 评论 -
寒假练习 1004 Who is the Smartest Man
题意:曹操为了提高智商,与其他人对战,一开始有一个基础的IQ值,每战胜一人(即只要其IQ比这个人大),然后就可以增长2点的IQ,如果两人IQ相等,则增长1点IQ,现在问如何弄,可以获得最大的IQ值。 典型的贪心算法 先找比自己大的人比 让IQ += 2,然后再 IQ++ ; 先来一个快排 ,在找到第一个比 IQ 大的数,从这个数后 找比它大的数比 ,后又回溯就可以了。原创 2013-04-01 22:00:58 · 513 阅读 · 0 评论 -
寒假练习 1003 Exchange for Cola
题意:有一个促销活动,A个瓶盖换B个瓶子,可以借一些瓶盖,但是最后要保证能还回去,现在有N个瓶盖,问最多喝多少瓶饮料?典型的数学问题,具体推导见上图。#include int main(){ long long int N,A,B,sum; while(scanf("%lld %lld %lld",&N,&A,&B)==3) { s原创 2013-04-01 21:59:10 · 587 阅读 · 0 评论 -
寒假练习 1016 滑雪
题目大意就是说给定一个矩阵,里面的值代表这点的高度,要求只能从高处滑到低处。问最远能划多远。 简单的DP,是poj的一道题。#include#include#include#define maxn 106#define inf 9999999#define up i-1,j,map[i][j]#define down i+1,j,map[i][j]#d原创 2013-04-01 22:40:17 · 474 阅读 · 0 评论