http://acm.zju.edu.cn/show_problem.php?pid=2014
这些天在做DP专题,所以从HDU转战到ZJU找DP,没想到第一个就A到这道题,感觉有点变态!
这道DP花了我三天时间(资质比较差,没办法),终于搞定了,哈哈!!!
其实前几天我A的几个DP都是一个模板的,核心思想都是一个模板的。而这道题有点区别:
1、题目要求是在存钱罐里存入一定质量的钱,使得最少可以存钱
2、存钱罐必须存满
#include<stdio.h>#include<string.h>int p[10001],q[10001];int price[501],weight[...
http://acm.hdu.edu.cn/showproblem.php?pid=1203
虽然是01背包问题,但是完全可以用贪心解决此题,如果用了动态,我认为反而把简单问题麻烦化了
此解法时间效率不高,有时间再重新看看……
#include<stdio.h>int main(){ int m,n,a[1001],i,j,t; double b[1001],k[1001],t1,s; while(scanf("%d%d",&m,&n)!=EOF&&!(m==0&&n==0)) { for(i=1...
动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。比如01背包问题。
/* 一个旅行者有一个最多能用M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为P1,P2,...,Pn.若每种物品只有一件求旅行者能获得最大总价值。输入格式:M,NW1,P1W2,P2......输出格式: X */
因为背包最大容量M未知。所以,我们的程序要从1到M一个一个的试。比如,开始任选N件物品的一个。看对应M的背包,能不能放进去,如果能放进去,并且还有多的空间,则,多出来的空间里能放N-1物品中的最大价值。怎么能...
http://acm.hdu.edu.cn/showproblem.php?pid=1244
#include< stdio.h >#include< string.h >int am[ 21 ]={0}, ansum[ 1001 ]={0}, lenam[ 21 ]={0}, an[ 1001 ]={0}, sum[ 21 ][ 1001 ]={0};int main( ){ int max, i, j, max_res, n, m; while( scanf( "%d", &n ) != EOF && n ) { scanf( "%d", &m )...
http://acm.hdu.edu.cn/showproblem.php?pid=1003
#include<stdio.h>#include<string.h>int a[100001];void biggest(int w){ int i,m,r,s1,e1,s,e; r=-1000; m=0; s=1;e=1; s1=1;e1=1; for(i=1;i<=w;i++) { if(m>=0){m+=a[i];e=i;} else if(m<0){m=a[i];s=i;e=i;} if(m>r){s...
http://acm.hdu.edu.cn/showproblem.php?pid=1257
求最长不降子序列问题
#include<stdio.h>#include<string.h>int c[1001][1001];int main(){ char a[1001],b[1001]; int i,j,la,lb; while(scanf("%s %s",a,b)!=EOF) { la=strlen(a); lb=strlen(b); for(i=0;i<la;i++)c[i][0]=0; for(i=0;i<lb;i++)c[0][i]=0; for(i=1;i<=la...
http://acm.hdu.edu.cn/showproblem.php?pid=1723
#include<stdio.h>#include<string.h>int main(){ int n,m,a[31],i,j,b; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0)break; for(i=0;i<31;i++) a[i]=1; for(i=n-1;i>0;i--) { b=0; for(j=i+1;j<=n&&j-i<=m;j++) b=b+a[j]*...
大学目标:找好工作,考研,出国。
在我们林学院,成绩好最多只是多拿点奖学金,对以后没什么用的。但是,我们不像是那些重点学校,成绩好可以保研。但是,像我们这些三流学校,成绩好能怎么样呢?我们要学好英语,学好数学,在其他地方有个建树!!!
我的目标是考研,今天看了一下浙大的考研网,很有冲动考浙大了!哈哈,定好目标啊!!!
摘自:http://baike.baidu.com/view/982195.htm
功 能: 把一整数转换为字符串用 法: char *itoa(int value, char *string, int radix);详细解释:itoa是英文integer to string a(将整形数转化为一个字符串,并将值保存在a中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为几进制的数,之后在保存在a 中.作用:实现数制之间的转化比较:ltoa,其中l是long integer(长整形数)备注:该函数的头文件是"stdlib.h" 程序例...
一直很在意这次校赛的,毕竟是选拔去参加省赛的。机会难得,必须把握住啊!!!努力了将近一个学期吧,终于等到了这一天,如果不能参加省赛的话,那我之前的努力就白费了!
今天下午奋斗了五个小时,A了四道题,哈哈,比我预料的要多一道嘛!好开心!
最后名次是第五,到时候会取前六去参加省赛,不过还是要看两次的成绩的(据说还有第二次选拔)。这些天要好好准备下了,不然如果下次发挥不好的吧就要被刷了!拼了!!!
不过总的来说,校赛后感觉很轻松,上学期玩AC的时候,才在HDOJ上A了几道题就去比赛了,结果得了第八...
1、扎实的基础 数据结构、离散数学、编译原理,这些是所有计算机学科的基础,如果不掌握它们,很难写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常有必要的。 2、丰富的想像力 不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想像力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。开阔的思维对程序员来说很重...
一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路(Floyd、Dijstra(会),BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸...
qsort()用法整理
<排序都是采用的从小到大排序>
<qsort函数包含在<stdlib.h>的头文件里,strcmp包含在<string.h>的头文件里>一、对int类型数组排序int num[100];Sample:int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;}qsort(num,100,sizeof(num[0]),cmp);二、对char类型数组排序(同int类型)char word[100];Sample:int cmp( const void *a , co...
本文摘自http://hi.baidu.com/littlekid/blog/item/b36e82fb8e3c33204f4aeaa7.html
如有版权问题,请与我联系!谢谢
很多人问这个东西.我以前也看了好久,今天翻到以前学快排的时候写的练习code,基本上能覆盖绝大部分用法了.
里面有很多地方没判断相等的情况,按道理来说相等情况下应该返回0的,这个请看代码的时候注意.我尽量保证代码不出错了.
下面的这些说明和问题都是个人原创,没查什么资料,所以不保证其完全正确性,在此表示个人不对出现的问题负任何责任,大家WA了或者干吗的不要怪我,不过至少目前来说我用起来是没问题的 :)
...
选自《CSDN 社区电子杂志——C/C++杂志》
http://emag.csdn.net 2005 年1 月 总第1 期 - 93 -
本文作者:steedhorse(晨星)
printf 可能是许多程序员在开始学习C 语言时接触到的第二个函数(我猜第一个是main),说
起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf 了解多
吗?在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。
由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,
后者则直接在命令行上输出...