![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 73
muximuxi_kgsecond
这个作者很懒,什么都没留下…
展开
-
HDU 3335 Divisibility
题目大意:在给出的一堆数当中找出最多的sum个数,使得sum个数两两不能整除思路:其实还是空袭的意思,派最少的几个人可以把全部街道拿下,在这里就是最少可以把全部的数划分几个集合, 然后再在每个集合里面抽取一个数,即是有几个集合就是最后不能整除的数的个数,其实空袭那里也有最小划分的关系,最小划分就是那几条街道,虽然说路径覆盖数有很多,但是如果问到在街道随意挑出一些人来,问这些人最多有几个不能相互转载 2012-10-30 14:46:19 · 463 阅读 · 0 评论 -
大数(高精度)加减乘除取模
#include #include using namespace std;inline int compare(string str1, string str2){if(str1.size() > str2.size()) //长度长的整数大于长度小的整数return 1;else if(str1.size() return -1;elseretu转载 2012-10-31 08:13:38 · 3696 阅读 · 0 评论 -
网络最大流问题算法小结
通过 USACO 4.2.1 Ditch 学习一下最大流算法 。可惜它给的测试数据几乎没有任何杀伤力,后面测试时我们采用 DD_engi 写的程序生成的加强版数据。总体上来说,最大流算法分为两大类:增广路 (Augmenting Path) 和预流推进重标号 (Push Relabel) 。也有算法同时借鉴了两者的长处,如 Improved SAP 。本篇主要介绍增广路类算法,思想、复杂度及实转载 2012-10-31 08:14:32 · 413 阅读 · 0 评论 -
哈夫曼树 模型 应用
1) 用于最佳判断过程。 在考查课记分时往往把百分制转换成优( x>=90 )、良 (80<x<90) 、中 (70<=x80) 、及格 (60<=x<70) 、不及格 (x<60) 五个等级。若不考虑学生考试分数的分布概率,程序判定过程很容易写成图 6.23(a) 所示的方法。我们知道,一般来讲学生考分大多分布在 70 至 80 分之间,从图 6.23(a) 可看出这种情的 x 值要比较转载 2012-10-31 08:10:54 · 480 阅读 · 0 评论 -
printf输出格式大全
以下整理资料来自百度百科以及Wayne Pollock的外文文章:http://wpollock.com/CPlus/PrintfRef.htm用 法: int printf(const char *format,[argument]); format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type 规定数据输出转载 2012-10-31 08:11:07 · 627 阅读 · 0 评论 -
ACM STL的应用
STL| 全排列函数next_permutationSTL 中专门用于排列的函数(可以处理存在重复数据集的排列问题)头文件:#include using namespace std;调用: next_permutation(start, end);注意:函数要求输入的是一个升序排列的序列的头指针和尾指针.用法:// 数组int a[N];sort(a, a+转载 2012-10-31 08:11:45 · 3049 阅读 · 2 评论 -
利用MetaProducts Inquiry 制作离线版网页chm电子书
系统环境:windows 7软件环境:MetaProducts Inquiry 、EasyChm本次结果:chm电子书格式的离线版网页近期由于要做个离线版网页的电子书,找了很多软件。对于离线浏览软件,有很多很经典,例如:Teleport Ultra、Website.Extractor等等,自己使用起来很不方便,主要是网页下载不全(对于本次要下载的php网页),大概是由于自己使用不来,特转载 2012-10-31 08:12:14 · 448 阅读 · 0 评论 -
ACM经典书籍推荐~~
学计算机的人是幸福的,因为在这个领域中有如此多的通俗易懂(相对来说)的经典好书,你需要做的只是坚持把它们一本一本读下去而已。在这里列出一些我看过或者准备看的算法书籍,以供参考。1. CLRS 算法导论算法百科全书,只做了前面十几章的习题,便感觉受益无穷。 2. Algorithms 算法概论短小精悍,别据一格,准经典之作。一个坏消息: 同算法导论,该书没有习题答案。好消息:习题很经典,难度转载 2012-10-31 08:12:34 · 1499 阅读 · 0 评论 -
《挑战编程:程序设计竞赛训练手册》- 题解(第一章 - 第八章)
PC = Programming Challenges (http://www.programming-challenges.com/)UVa = University of Valladolid Online Judge(http://uva.onlinejudge.org/)第一章:入门PC/UVa 题号: 110101/100 The 3n+1 problem (3n转载 2012-10-31 08:12:44 · 1289 阅读 · 0 评论 -
线段树 进一步了解
从简单说起,线段树其实可以理解成一种特殊的二叉树。但是这种二叉树较为平衡,和静态二叉树一样,都是提前已经建立好的树形结构。针对性强,所以效率要高。这里又想到了一句题外话:动态和静态的差别。动态结构较为灵活,但是速度较慢;静态结构节省内存,速度较快。接着回到线段树上来,线段树是建立在线段的基础上,每个结点都代表了一条线段[a , b]。长度为1的线段成为元线段。非元线段都有两个子结点,左结点代表转载 2012-10-31 08:12:59 · 310 阅读 · 0 评论 -
欧几里德算法及其扩展算法
一、欧几里德算法1、欧几里德算法概述: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质: gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|) 2、欧几里得算法的公式表述 gcd(a,b)=gcd(b,a转载 2012-10-31 08:13:50 · 558 阅读 · 0 评论 -
ELF Hash Function(哈希表处理字符串)
[cpp] view plaincopyprint?01.C/C++ code [cpp] view plaincopyprint?01.unsigned int ELFHash( char * str) 02.{ 03. unsigned int hash = 0 ; 04. unsigned int x = 0 ; 0转载 2012-11-01 08:07:47 · 489 阅读 · 0 评论 -
POJ1088 滑雪
/*题目大意:给出一个二维矩阵,每个元素代表一个告诉,让求一个最长路径,满足高度是递减的。记忆化搜索,其实本质是DP,对每个点有:height[i][j]=max{height[i-1][j],height[i][j-1],height[i+1][j],height[i][j+1]}+1,一个点被求过之后不重复计算。*/#include #include using转载 2012-11-01 08:07:55 · 267 阅读 · 0 评论 -
矩阵乘法与线性递推式
一切递推皆可矩阵乘法,一切DP皆可背包!学过线性代数的人肯定都知道矩阵乘法,在acm中矩阵乘法往往是用来快速求递推式的第n项,而且经常是与快速幂联系在一起使用。下面举几个例子,简单题就不贴代码了:Hdu1575(Tr A):题意:Tr A表示方阵A的迹(主对角线元素之和),求Tr(Ak) % 9973。算法:直接用矩阵快速幂。Poj3233(Matrix Power S转载 2012-11-01 08:08:15 · 760 阅读 · 0 评论 -
模拟退火算法
一. 爬山算法 ( Hill Climbing )介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能转载 2012-11-01 08:08:25 · 435 阅读 · 0 评论 -
STL map中key为结构体的用法
最近在使用stl中的map容器时,碰到key为结构体的情况,总结如下,以便提醒自己。我的使用情景是,我需要根据不同的比例尺、道路类型这两个参数获取到对应的道路宽度,由于我是使用map解决这个问题的,自然而然的就以比例尺、道路类型这两个参数为key,道路宽度为value,建立的key如下:1 typedef struct tagRoadKey 2 {3 int nType转载 2012-11-01 12:10:43 · 507 阅读 · 0 评论 -
一位ACMer过来人的心得
刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?我想说下我的理解。很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,我转载 2012-12-22 10:07:24 · 346 阅读 · 0 评论 -
3个背包模板
#include int dp[120005];int V,v;//01背包, c表示花费, w表示价值void bag01(int c,int w) { for(v=V;v>=c;v--) if(dp[v] dp[v]=dp[v-c]+w;}//完全背包,c表示花费, w表示价值void bagall(int c,int w) { for(转载 2013-01-06 15:59:00 · 286 阅读 · 0 评论 -
STL--map
STL中map用法详解说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂。本人水平有限,不当之处,望大家辅正。一.Map概述Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,转载 2012-10-31 08:14:57 · 284 阅读 · 0 评论 -
图论500题
=============================以下是最小生成树+并查集======================================【HDU】1213 How Many Tables 基础并查集★1272 小希的迷宫 基础并查集★1325&&poj1308 Is It A Tree? 基础并查集★1856 More is better 基础并查集★转载 2012-10-31 08:14:44 · 648 阅读 · 0 评论 -
POJ3258-River Hopscotch
大致题意:一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L。河中有n块石头,每块石头到S都有唯一的距离问现在要移除m块石头(S和E除外),每次移除的是与当前最短距离相关联的石头,要求移除m块石头后,使得那时的最短距离尽可能大,输出那个最短距离。解题思路:经典的二分,理解题意就不怎么难了 (其实编程不难,要理解转载 2012-10-30 14:53:34 · 228 阅读 · 0 评论 -
POJ 2594 Treasure Exploration
题目大意:点可以重复覆盖的最小路径覆盖思路:求之前来一次floyd,说实在的,这家伙第一次被我排上用场(没有质量,就出数量)program:转载出处:http://hi.baidu.com/%BA%BA%BD%AD%C8%CC%D5%DF/blog/item/cb41fa3bf98e4f2e96ddd848.html#include//#include#include转载 2012-10-30 14:54:50 · 301 阅读 · 0 评论 -
POJ 2060 Taxi Cab Scheme
题目大意:就是给出的哥们的车程表,求最少出几辆的士就可以搞定任务思路:这里最关键的地方是建图,如果做完任务A还可以做任务B,那么就可以把任务A和任务B(当做节点)连接起来直到全部,所以这里建图的执行次数是任务的个数的平方。相当于空袭那道题,就是把出发点和终点连接起来,在这里变成任意的2任务而已(没有质量,就出数量)转载出处:http://blog.sina.com.cn/s/blo转载 2012-10-30 14:55:47 · 405 阅读 · 0 评论 -
POJ3273 Monthly Expense (二分统计)+二分查找基础例子
二分边界小结:凡是浮点数二分则都是low=mid,high=mid;整数二分的时候视情况。求相等关键值最大下标时,那么相等的时候就是修改low,所以把相等的情况和大于的情况放在一起;求相等关键值最小下标的时候,那么相等的时候就是修改high,所以此时把相等的情况和小于的情况放在一起。题意:给定连续的n天(1这题让我联想到了曾经笔试中遇到的一道题,题意如下:【说是有n个站点,每个转载 2012-10-30 14:57:34 · 416 阅读 · 0 评论 -
POJ1840 哈希表
转载出处:http://blog.csdn.net/lyy289065406/article/details/6647387题目大意:求在给出方程系数的条件下的解的总数。思路:把其中3个拿出来枚举的执行次数还勉强可接受:100W次。//Memory Time//49188K 532MS #includeusing namespace std;short hash[250转载 2012-10-30 14:58:38 · 383 阅读 · 0 评论 -
POJ3349 哈希表
题目大意:就是在给出的雪花当中判断有没有至少一样的一对雪花。思路:在10W片雪花中直接比较雪花明显不可,但是经过哈希之后可以边插入边比较。//Memory Time //16696K 3766MS #includeusing namespace std;const __int64 prime=999983; // 10n内最大的素数(本题n=10W)class{转载 2012-10-30 14:59:23 · 371 阅读 · 0 评论 -
HDU 1151 Air Raid
题目大意:就是在单向 的街道上,问要有几个士兵才能把所有的街道的交叉点(节点)访问完,因题目说是无环图(the town's streets form no cycles)所以可以用最小路径覆盖来做思路:因为是有向无环图,所以求以最少的人来访问全部的交叉点,就可以用最小路径覆盖做,做法:把出发点和终点都拆成2个节点,利用出发点和终点进行匹配(数组的含义,因为是以所有的交叉口的数目来开数组的),转载 2012-10-30 14:48:42 · 369 阅读 · 0 评论 -
POJ1905 Expanding Rods
大致题意:一根两端固定在两面墙上的杆 受热弯曲后变弯曲求前后两个状态的杆的中点位置的距离解题思路:几何和二分的混合体如图,蓝色为杆弯曲前,长度为L红色为杆弯曲后,长度为sh是所求依题意知S=(1+n*C)*L又从图中得到三条关系式;(1) 角度→弧度公式 θr = 1/2*s(2) 三角函数公式 sinθ= 1/2*L转载 2012-10-30 14:51:08 · 252 阅读 · 0 评论 -
指针的引用
创建链表的时候用的到Csdn问1int ival = 1024; int *pi = &ival; int *&ptrVal2 = pi; 最后这一句它说是指向指针的引用,左看右看也没看明白, 哪个给我解释下,谢谢!回复:引用就是给一个变量起一个别名. 指向指针的引用, 就是给一个指针变量起一个别名... ptrVal2 就相当于pi了..对pt转载 2012-10-30 15:04:12 · 483 阅读 · 0 评论 -
美妙优雅的sscanf
来自百度百科:头文件: #include返回值: 成功则返回参数数目,失败则返回0,错误原因存于errno中。说明: sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。 第一个参数可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t转载 2012-10-31 08:11:22 · 263 阅读 · 0 评论 -
STL几个(set map vector string)用法
string使用总结1.初始化string s0;string s1("hello");string s2(5, 'a'); //s2 = aaaaa;string s3(s1); // s3 = hellochar str[100] = "aaaaabbbbbaaaaaaaaaaaaaaaaa";string s4(str, 5); //s4 = aaaa转载 2012-10-31 08:11:34 · 556 阅读 · 0 评论 -
JAVA在ACM中的几点应用
输入:可以从文件中输入,也可以从控制台输入。import java.io.BufferedInputStream;import java.io.File;import java.util.Scanner;public class Demo { public static void main(String[] args) throws Exception {转载 2012-10-31 08:11:54 · 396 阅读 · 0 评论 -
HDU 1007
在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的问题是如何实现分治法中的转载 2012-10-31 08:12:22 · 353 阅读 · 0 评论 -
POJ 3252 Round Numbers
题意:求区间[start, finish]里Round Number的个数(二进制中0的个数大于等于1的个数的数称为Round Number).思路:记f(start, finish)为[start, finish]里Round Number的个数,那么要求f(start,finish),只需用f(0,finish)-f(0,start-1)即可,则问题转化为给定x,求出f(0,x).假定转载 2012-10-31 08:13:09 · 258 阅读 · 0 评论 -
POJ1850-Code
大致题意:(与POJ1496基本一致)输出某个str字符串在字典中的位置,由于字典是从a=1开始的,因此str的位置值就是在str前面所有字符串的个数+1规定输入的字符串必须是升序排列。不降序列是非法字符串不要求用循环输入去输入若干组字符串,但若输入非法字符串则输出0,且结束程序,这是和POJ1496最猥琐的区别,很多同学只注意到规定str的长度不同,以为把str数组长度改一下直接复制转载 2012-10-31 08:13:20 · 359 阅读 · 0 评论 -
任意进制间的转换
任意进制间的转换(2~36进制)上次写的2~9进制转换到10进制,因为都是整型的,处理输出输入都比较方便,这次来个比较普遍的。要用数组存储要转换的数字,结果返回整型的十进制数。函数如下:/************************************************************************//* a是要转换的数,bit是原本的进制(2~36)转载 2012-10-31 08:14:20 · 386 阅读 · 0 评论 -
N皇后问题的两个最高效的算法
N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。一、 求解N皇后问题是算法中回溯法应用的一个经典案例 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 在现实中,有很多问题往往需要转载 2013-05-16 10:21:09 · 1090 阅读 · 0 评论