![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
其他算法
文章平均质量分 74
code_beauty
豆瓣:
http://www.douban.com/people/43788804/
展开
-
一些调试用的代码
写完程序,希望能够自己出一些数据,并且知道程序的运行时间,今天我整理了一些方法。三个方面:运行.exe文件统计时间获取随机数以上都会的就可以关网页了。1.运行.exe文件最方便的就是用system()函数了,直接传进.exe的文件名(要带上".exe"),就可以运行了。2.统计时间用到函数clock(),在头文件中特别注意CLOCKS_PER_SEC是一个宏,表示一秒钟有多少个单位。既int begin = clock();//..... do somethingint end = clock();原创 2010-06-26 20:22:00 · 411 阅读 · 0 评论 -
七夕夜游 题解
<br />http://www.rqnoj.cn/Problem_559.html<br /> <br />题目大意:给出一个图。要求出对于任意(i,j),由i经过k-1条边到j的最小值。<br /> <br />数据规模:对于100%的数据:N <= 50, K <= 1000000<br /> <br />因为k的规模比较大,所以用普通的递推来做就不行了。但是这题要求必须走k条边。那么求出一个走过k/2条边的最小花费。对于(i,j)枚举中点 c[i][j] = min{ c[i][k] + c[k][原创 2010-10-17 12:13:00 · 518 阅读 · 0 评论 -
RMQ 区间最值问题
<br />rmq:指区间最值问题。就是给你一个数列,然后不断地询问在区间[a,b]中的最大值/最小值是什么。<br /> <br />可以看例题:<br />tyvj 的 1297题<br /> <br />数据规模:<br />40%的数据:1<=n,p<=1,000<br />100%的数据:1<=n<=50,000 1<=p<=20,000<br />n是数列大小,p是询问数<br /> <br />对于这类问题:<br />1.朴素算法:遍历区间[a,b]找最值 O(np)<br /> <b原创 2010-10-06 15:42:00 · 496 阅读 · 0 评论 -
高精度除法
求 M/N 的商的整数部分。M/N = AM = N * A + res(余数)A可以用二进制表示M = N * ( 2^p1 + 2^ p2+ ... +2^pk ) + res所以设 t[i] = N * 2^i从高到低 如果 M > t[i]M -= t[i]ans += 2^i直到M #include using namespace std;const int _DEF_MAXSIZE = 300;const int _DEF_ZS = 300; //指数 2^300int原创 2010-10-04 22:12:00 · 445 阅读 · 0 评论 -
大数加法类
<br />写了一个大数加法类。内部计算是10000进制的,能省些空间,但是输出的时候要注意补0<br /> <br />这个版本的代码只支持正数相加。<br /> <br />#include <iostream>using namespace std;struct _cBigNum{ const static int def_size = 20; const static int def_jw = 10000; //10000进一 int cvNum[def_size];原创 2010-09-02 22:43:00 · 356 阅读 · 0 评论 -
二分法的简单正确实现
<br />二分法的思想很简单,应用很强大,但是如果没有注意,在平常实现的时候(特别是第一次实现),很容易出问题。似乎某本书上说过能够一次正确实现二分法的程序员不多。<br /> <br />其实我第一次写的时候也没正确实现。后来被指点了一个简单的实现方法。<br /> <br />就以我为例。写二分是这样的<br /> <br />int l = 0,r = top,mid;while( l < r ){ mid = ( l + r ) / 2; if( judge( mid原创 2010-08-26 10:37:00 · 398 阅读 · 0 评论 -
堆排序与快速排序效率比较
快排的平均效率是NlogN,堆排也是。但是快排会退化,而推排似乎最坏情况下也是NlogN。所以想比较比较快排我没有自己写,而是用了qsort()函数。堆排我是自己写的,优化过一次,也只是把36s降到30s测试数据是随即生产的,规模在10000000(一千万)。一共十组,共二十个输入输出文件,总大小为1.05G现在发代码了... 先是快排的:#include #include using namespace std;const int _DEF_SIZE = 10000000; //1000w原创 2010-08-21 10:26:00 · 1500 阅读 · 2 评论 -
脱括号变号
<br /> <br />对一个只含大写英文字母,"+","-","(",")'的表达式,其中单个大些字母表示变量,进行如下处理:去掉表达式中的全部括号,并对“+”,“-”进行相应的变号,最后得到一个与所给表达式等价且长度最短的表达式。不判错<br />如 (-A)-((-B)-(-C))<br />得 -A+B-C<br /> <br />这一题上我发了较多的时间,应该都是因为编程上的失误吧。<br /> <br />因为一个括号为的符号影响的是接在其后的一整个括号内的符号。如果是符号,我要改变的是这个括原创 2010-06-22 12:10:00 · 942 阅读 · 0 评论 -
最小和 --- 求一类数字区间问题
先看题目:1.N个数排成一排,你可以任意选择连续的若干个数,算出它们的和。问该如何选择才能使得和的绝对值最小。如:N=8时,8个数如下:1 2 3 4 5 6 7 8-20 90 -30 -20 80 -70 -60 125如果我们选择1到4这4个数,和为20,还可以选择6到8这3个数,和为-5,|-5|=5,该方案获得的和的绝对值最小。输入格式:第一行输入N,表示数字的个数。接下来N行描述这N个数字。输出格式:第一行输出一个整数,表示最小绝对原创 2010-07-25 14:29:00 · 1080 阅读 · 0 评论 -
再解“书的复制” 二分答案+贪心
<br />去福州夏令营的时候,老师说了一句话令我印象深刻:<br /> <br />如果题目要找最大值中的最小值或者最小值中的最大值,大多能用二分+贪心来做。<br /> <br />我就想起了书的复制这道题,要我们求所有人花费时间的最大值最小。<br /> <br />二分答案的条件是答案是有序的。<br /> <br />比如这道题,如果我们给他一个时间让他判断这个时间内能不能把书复制完。我们从小到大试答案,那么他一定是 "不能 不能 不能.....能 能 能“<br /> <br />有一原创 2010-07-24 15:03:00 · 529 阅读 · 0 评论 -
数的计算
<br />早上考语文,比较郁闷。作文还有两行到800字,结果时间到了。哎...... 没看表啊<br /> <br />下午考政治,开卷,现在没什么事干。找题简单的来做。<br /> <br />题目描述:<br /> <br />我们要求找出具有下列性质数的个数(包含输入的自然数n):<br /><br />先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:<br />1.不作任何处理;<br />2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;<br />3.加上数原创 2010-07-09 12:50:00 · 348 阅读 · 0 评论 -
二分图的最大匹配---匈牙利算法[转]
from:http://imlazy.ycool.com/post.1603708.html什么是二分图,什么是二分图的最大匹配,这些定义我就不讲了,网上随便都找得到。二分图的最大匹配有两种求法,第一种是最大流(我在此假设读者已有网络流的知识);第二种就是我现在要讲的匈牙利算法。这个算法说白了就是最大流的算法,但是它跟据二分图匹配这个问题的特点,把最大流算法做了简化,提高了效率。匈牙利算法其实很简单,但是网上搜不到什么说得清楚的文章。所以我决定要写一下。最大流算法的核心问题就是找增广路径(augment p原创 2010-11-09 21:58:00 · 453 阅读 · 0 评论