上一页 1 ··· 5 6 7 8 9 10 下一页
摘要: 这题想了很久,是经典的动态规划问题,感觉有点难度,在网上看了很多讨论。 看了动态规划还要好好加强。#include <iostream>using namespace std;int main(){ long i,j,k,l,n,m,t1,maxf,count; long p[210],d[210],f[210],s[210]; long can[30]; long res[30][1000],from[30][1000]; count=0; cin>>n>>m; while(n!=0 || m!=0) { count++... 阅读全文
posted @ 2010-11-27 19:56 yangleo 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 这题很简单,直接贴AC代码了#include <iostream>#include <string.h>#define MAXN 10000using namespace std;int num[MAXN];int dnum(int i){ int sum = i; int temp; while (i > 0) { temp = i%10; sum += temp; i = (i-temp)/10; } return sum;}int main(){ int i,j; for (i = 0;i<MAXN;i++) { num[i] = 1; } for ( 阅读全文
posted @ 2010-11-27 16:24 yangleo 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 在输入的同时,进行一次DP,计算出从左到右的最大值,并把它保存在数组dp的对应的下标元素中,这样之后,对于下标为i的元素,它其中保存的便是前面所有元素可能的最大连续和。再从右到左进行一次DP,计算从右到左的最大连续和。假设此时已经算到下标为i的元素,那么将sum+dp[i-1]与ans进 行比较,将ans取较大者。最后当i到2的时候ans中的值即为所求的最大值。#include <iostream>using namespace std;int dp[100001],num[100001];const int MINNUM = -99999999;int main(){ int c 阅读全文
posted @ 2010-11-27 15:31 yangleo 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 这题很简单,但由于审题不清WA了很多次,太不应该Any non-alphabetical character should remain the same, and all alphabetical characters will be upper case.即只要不是字母就不变,如下写法错误if(*it == ' ' || *it == ',') continue;另外,对C++ String的使用中如何将空格也输入也是一个难点,getline不太好用,这里用了一个C的string作为中间量,借助C函数gets完成#include <iostream&g 阅读全文
posted @ 2010-11-26 17:06 yangleo 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用=进行赋值操作,==进行比较,+做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,我们必须包含头文件<string>。如下:#include<string>//注意这里不是string.hstring.h是C字符串头文件1.声明一个C++字符串声明一个字符串变量很简单:stringS 阅读全文
posted @ 2010-11-26 16:07 yangleo 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 此题把题意弄懂后就很容易,S顺时针走,E逆时针走,确定一个分割点该处两人相遇时途经的客人数之和相等,直接枚举。#include <iostream>using namespace std;//s顺时针走,e逆时针走,问他们在哪里相遇时路径上面经过的数字之和相等//直接用枚举法int main(){ int table[32]; int n,sum1,sum2,i,j; while(cin>>n,n!=0){ for (i = 1;i <= n;i++) cin>>table[i]; for (i = 1;i <= n;i++) { sum1 = 阅读全文
posted @ 2010-11-25 23:22 yangleo 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 首先自己练习了一下实现dijkstra算法,可以把dj算法与prim算法对比记忆,要理解pre数组、min数组、V标记数组的含义!//单源最短路径,dijkstra算法,邻接阵形式,复杂度O(n^2)//求出源s到所有点的最短路经,传入图的顶点数n,(有向)邻接矩阵mat//返回到各点最短距离min[]和路径pre[],pre[i]记录s到i路径上i的父结点,pre[s]=-1//可更改路权类型,但必须非负!//可以把dj算法与prim算法对比记忆,要理解pre数组、min数组、V标记数组的含义!#include <iostream>#define MAXN 200#define 阅读全文
posted @ 2010-11-25 22:30 yangleo 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 做算法和作技术哪个难? 都很难, 没有可比性. 但是算法做得好的可以转行做技术, 技术做得好的想转行做算法却很困难.我是08年下半年将近期末的时候加入华理ACM队的. 我高中的时候没有编程经验, 数学也不好, 高考数学刚及格. 因为第二工业大学的网络工程专业的分数是最低的, 所以就比较巧合地步入了计算机行业. 大一有一门C++课程, 当时我在第一次上机的时候就深深的被C++迷住了. C++是一门极其优美的语言, 相比于高中计算机课上一笔带过的VB, 我最喜欢C++的花括号. 因为学校比较差, 周围的学生没几个专心读书的, 所以对于一个稍微想要学点东西的学生来说, 这样的学校里的硬件资源就显得异 阅读全文
posted @ 2010-11-24 23:26 yangleo 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 入门其实有两种方法:1 自己看竞赛书,看别人的程序等等。2 上题库(如:pku和zju)做题。第一种可以较为系统的学到东西,但是时间久了就会无聊,而且长久实践不足,编程能力永远得不到真正的提高。第二种虽然看着自己AC很兴奋,看着自己的帐号排名提高很开心,但是学习不系统,对较深的知识学习不足,总停留在做简单题的份上。 最好的方法就是两种方法相结合。作为入门者还是要以多看简单竞赛书多看题目和程序为主(例如:《信息奥赛辅导教材》、《基本算法稿》、《06暑假培训》和《基本算法C++》,都在“初级入门学习”文件夹中),这个学习时间占70%,同时也要有30%的时间上题库做题。毕竟理论学习要和实践相结合.. 阅读全文
posted @ 2010-11-24 23:23 yangleo 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 此题求牛从起点到终点路径中最大权值最小的那条路径,将Floyd算法稍作修改即可,注意此题输入输出处理不当可能引起超时,一般scanf及printf更节省时间。#include <iostream>#include <cstdio>#define MAX_VEX 305#define MAX_WEI 1000005using namespace std;int A[MAX_VEX][MAX_VEX];//用cin,cout会超时int main(){ int N,M,T,i,j,k,h; int s,e,w; //cin>>N>>M>> 阅读全文
posted @ 2010-11-24 22:48 yangleo 阅读(182) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 下一页