上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页
2013年3月27日

uva10700 - Camel trading(无括号的表达式)

摘要: 大水题,不过我要声明一点,::uva提交系统上对long long 的标识符是lld,而不是I64d。代码如下:#include #include int num[20]; char ope[20]; long long print_min(int n) { long long tt[20], cur = 0, ans = 0; tt[0] = num[0]; for(int i = 1; i < n; i++) { if(ope[i-1]=='*') tt[cur]*=num[i]; else tt[++cur] = num... 阅读全文
posted @ 2013-03-27 17:47 Primo... 阅读(154) 评论(0) 推荐(0) 编辑

uva10340 - All in All(子序列判定)

摘要: 做到这里了,心里还有有些疑惑,这一章不是高效算法吗??为什么我做了这么多了,写的还是通用算法啊,这个题是大水题,不多说了。小经验, 在for循环中,有continue和break两类强制性命令,这两个命令我们要知道一点:for(int i = 0; i #include #define SIZE 1000000 char s[SIZE], t[SIZE]; int main () { int lens, lent; char tt; while(scanf("%s%c%s",s,&tt,t)!=EOF) { int i, j, ok; ... 阅读全文
posted @ 2013-03-27 16:34 Primo... 阅读(171) 评论(0) 推荐(0) 编辑
2013年3月26日

uva10487 - Closest Sums

摘要: 又是一个水题,但是吧,自己写的代码还是不够高效。思路,把所有的两数之和存到数组里,然后排序+二分查找。这应该是通用思路吧,反正见到老多人的代码都是跑了200+ms。后来看了一个跑了64ms的代码,我才明白,自己的代码排序很耗时的,,,,,,先贴一下自己的代码:#include #include const int M = 1000/2*(1000+1)+10; int st[M], a[1010], c; int comp(const void*a, const void *b) { return *(int*)a - *(int*)b; } int bina_search(int... 阅读全文
posted @ 2013-03-26 18:04 Primo... 阅读(135) 评论(0) 推荐(0) 编辑
2013年3月25日

uva10706 - Number Sequence

摘要: 这个题又体现了数组的妙用。不过这个题的上界结束的很巧妙。程序跑的也不长,16ms。不过不是我憋出来的,而是又作弊的看了人家的代码。。。用两个数组分别存数位长度和总长度。然后判断,最后那个取余运算也很巧妙。。。代码如下:#include #include const int M = 31268+10; using namespace std; int f[M], s[M]; int main () { for(int i = 1;; i++) { f[i] = f[i-1]+(int)(log10(i))+1; s[i] = s[i-1]+f[... 阅读全文
posted @ 2013-03-25 23:21 Primo... 阅读(143) 评论(0) 推荐(0) 编辑

uva10057 - A mid-summer night's dream

摘要: 这么水的题我还是WA了2次,,,,好了,说说我是怎么错的吧。1:忽略了每个数出现多次的情况。2:没想清楚一个数如果出现多次该怎么办。思路:加入出现a,b,c,d,e,f,g等7个数,求最小的A,我们可以把7个非负整数放到数轴上,这样就变成了找到一个A点使得此点到其他7个点的距离只和最小。这样我们就好办了,把所有的坐标排序,找到最中间的那个即可了,就是我们要找的最小的满足条件的数值,输入中出现的符合条件的数:如果n是偶数,则把mid和mid+1位置的数出现的次数加起来即可,(此处要注意这两个位置的数是否相等)如果n是奇数,则只需统计mid位置的数即可。符合条件的数的个数:还是的分情况,若偶,则m 阅读全文
posted @ 2013-03-25 20:38 Primo... 阅读(164) 评论(0) 推荐(0) 编辑
2013年3月24日

uva10341 - Solve It

摘要: 我的代码从1e-4一直改到1e-7,才AC掉,原因其实很简单,printf的取值是按照四舍五入原则的,举个例子,假如最后的区间为(0.9994,0.9995),那么第5位小数位上的数就至关重要了,无巧不成书的话,第5位小数为4,那么第六位小数又至关重要了,如小于等于4的话,那么最后的结果是0,9994,如果大于等于5的话,那么最后的结果就变成了0.9995了。所以,我们以后做这样的题目的时候要多向后精确3位或者更多。。。代码如下:#include #include int p, q, r, s, t, u; double ans(double x) { return p*exp(-... 阅读全文
posted @ 2013-03-24 21:30 Primo... 阅读(155) 评论(0) 推荐(0) 编辑
2013年2月26日

uva10001 - Garden of Eden

摘要: 题意不好理解,参考了人家的代码才看懂的题意,就是用某种编译方式,检测所给字符串是否合理,即求它的原串。两者长度一样,只不过新得的串是根据所给编译方式和左邻右舍的值来求得的。对于编译方式 rule:0其意思为:0 0 0 -->00 0 1 -->00 1 0 -->00 1 1 -->0......通俗来讲就是对于编译方式k,先把k转化为八位二进制串,8 -->0 0 0 0 1 0 0 0.。 用八位二进制串中的每个字符分别对应{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}跟详细的解 阅读全文
posted @ 2013-02-26 15:53 Primo... 阅读(148) 评论(0) 推荐(0) 编辑

vua167 - The Sultan's Successors

摘要: 很简单的八皇后题目。单纯递归筛选。。。。分别用y-x, x+y,来标识对角线,这在刘汝佳书上都有讲的。代码如下:#include int chess[8][8], lu_to_rd[14], ru_to_ld[14], l[8], max; //lu_to_rd 表示主对角线(left&up to right&down) //同理,ru_to_ld标识副对角线 void dfs(int cur, int sum) { if(cur==8) { m... 阅读全文
posted @ 2013-02-26 12:06 Primo... 阅读(152) 评论(0) 推荐(0) 编辑

uva165 - stamps(邮票)

摘要: 不得不说这道题,对我来说很难,开始的时候甚至连题意都弄不清,看了人家的代码,看懂了第一种方法,第一种方法很好理解,但是比较耗时。因为它没次递归都得算出那些值有可能出现。就是每次递归中都得包含调用递归。代码如下:#include #include int stamp[10], maxstamp[10], ans[10], max, h, k; void is_visit(int n, int cur, int sum, int *vis) { if(cur==h) return; for(int i = 0; i %3d\n",max); } return 0... 阅读全文
posted @ 2013-02-26 11:07 Primo... 阅读(228) 评论(0) 推荐(0) 编辑
2013年2月24日

连续邮资问题

摘要: 此文章来自:http://blog.csdn.net/jcwkyl/article/details/4137398王晓东老师编著的《计算机算法设计与分析》5.12节以“连续邮资问题”为例展示了回溯法的应用。讲解比较简略,对于搜索出一张新的邮票面值后如何更新最大连续邮资区间这一点没有过多的说明。以下是自己对于这一节学习的一点笔记。实际上,关于刚才所说的更新最大连续邮资区间的方法,可以归结到一种“等价类”的思想。与此相似的还有《编程之美》中“数组分割问题”的解法三,《编程之美》中“找符合条件的整数”的最后一种算法,JOJ 1903,JOJ 1278这些题目等等。以下先从头到尾把连续邮资问题复习一遍 阅读全文
posted @ 2013-02-24 12:22 Primo... 阅读(2938) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页