自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Nicolas的博客

Yestoday you said tomorrow.

  • 博客(108)
  • 资源 (2)
  • 收藏
  • 关注

原创 P1216 [IOI1994]数字三角形 Number Triangles 计算状态转移的方法

题目:题目链接计算状态转移的方法:方法一:递推计算。时间复杂度显然是O(n*n)。递推的关键是边界和计算顺序。在多数情况下,递推法的时间复杂度是:状态总数×每个状态的决策个数×决策时间。如果不同状态的决策个数不同,需具体问题具体分析。程序如下(需注意边界处理):#include <iostream>using namespace std;const int N=1...

2019-01-31 20:09:03 283

原创 算法提高 质因数

题目链接#include <iostream>using namespace std;bool isPrime(int n){ for(int i = 2; i*i <= n; i++) if(n%i == 0) return false; return true;}int main(int argc, char *argv[]) { int n; ...

2019-01-31 16:50:45 295

原创 算法训练 P0501 用位操作实现无符号整数的乘法运算

题目链接首先实现二进制加法:位的异或运算跟求'和'的结果一致:异或 1^1=0 1^0=1 0^0=0求和 1+1=0 1+0=1 0+0=0位的与运算跟求'进位‘的结果一致:位与 1&1=1 1&0=0 0&0=0进位 1+1=1 1+0=0 0+0=0题目已经给出整数为正,否则需要在运算时将整数转换为相应的正整数。#include &...

2019-01-31 16:18:37 1340

原创 算法训练 P0504

题目链接 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,Unclear和Nuclear、Rimon和MinOR都是Anagrams。编写一个程序,输入两个单词(只包含英文字母),然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。#include <io...

2019-01-31 15:44:13 651

原创 算法训练 P0502

题目链接编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印较小的那个值。例如,假设用户输入的是“100 150 150 200 250”,则输出为150。输入:  6  100 150 150 200 20...

2019-01-31 15:18:15 1200

原创 算法训练 P0505

题目链接一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5!=1*2*3*4*5=120,因此5!最右边的那个...

2019-01-31 14:57:25 3030 2

原创 算法训练 素因子去重

题目链接问题描述  给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1分析:之前写了需要判断是素数(虽然通过了);后面发现是不需要判断的。因为当你每次去掉一个素因子后,这个因子的倍数就会不存在了。这个和素数筛选差不多,只不过素数筛选是标记,这里是删除。 因为i从最小的质因子2开始并且每次循环结束得到的新的n都已经不再包含上一个质...

2019-01-31 14:51:09 3726 13

原创 Average UVA - 1451 数形结合

题目链接大意:给定一个长度为n的01串,选一个长度至少为L的连续子串,使得子串中数字的平均值最大。如果有多解,子串长度应尽量小;如果仍有多解,起点编号尽量小。序列中的字符编号为1~n,因此[1,n]就是完整的字符串。1≤n≤100000,1≤L≤1000。例如,对于如下长度为17的序列00101011011011010,如果L=7,最大平均值为6/8(子序列为[7,14],其长度为8)...

2019-01-31 13:48:44 272

原创 Defense Lines UVA - 1471 防线

题目:https://vjudge.net/problem/UVA-1471#author=0题意:给定一个序列,要求删去一个连续子序列后,得到的序列有一个最长的连续递增序列,输出最长连续递增序列长度【分析】为了方便叙述,下面用L序列表示“连续递增子序列”。删除一个子序列之后,得到的最长L序列应该是由两个序列拼起来的,如图8-15所示。最容易想到的算法是枚举j和i(前提是A[j]&...

2019-01-30 17:20:50 232

原创 蓝桥杯 练习系统---基础练习 题解 C++

以下代码均已通过蓝桥杯系统测试,如果存在错误或不能通过测试还望指出。以下均为连接,点击即可转到相应题解代码。目录BASIC-1~10BASIC-11~20BASIC-21~30BASIC-1~10BASIC-1基础练习 闰年判断BASIC-2基础练习 01字串BASIC-3基础练习 字母图形BASIC-4 数列特征BASIC-5 查找整数BASIC-...

2019-01-30 16:44:31 2017

原创 Unique Snowflakes UVA - 11572 唯一的雪花 滑动窗口

题目:https://vjudge.net/problem/UVA-11572【分析】假设序列元素从0开始编号,所求连续子序列的左端点为L,右端点为R。首先考虑起点L=0的情况。可以从R=0开始不断增加R,相当于把所求序列的右端点往右延伸。当无法延伸(即A[R+1]在子序列A[L~R]中出现过)时,只需增大L,并且继续延伸R。既然当前的A[L~R]是可行解,L增大之后必然还是可行解,所以不必...

2019-01-30 16:44:09 233

原创 基础练习 特殊回文数

题目链接 蓝桥杯---基础练习 题解问题描述  123321是一个非常特殊的数,它从左边读和从右边读是一样的。  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。#include <iostream>using namespace std;int main(int argc, char *argv[])...

2019-01-29 17:21:14 228

原创 基础练习 回文数

题目链接 蓝桥杯---基础练习 题解问题描述  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式  按从小到大的顺序输出满足条件的四位十进制数。#include &lt;iostream&gt;using namespace std;int main(int argc, char *argv...

2019-01-29 17:18:19 263

原创 基础练习 特殊的数字

题目链接 蓝桥杯---基础练习 题解问题描述  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。#include &lt;iostream&gt;using namespace std...

2019-01-29 17:15:54 243

原创 基础练习 杨辉三角形

题目链接 蓝桥杯---基础练习 题解问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。  它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加  下面给出了杨辉三角形的前4行:1 1 11 2 1  1 3 3 1给出n,输出它的前n行。...

2019-01-29 17:13:49 361 1

原创 基础练习 查找整数

题目链接 蓝桥杯---基础练习 题解问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。#include &lt;iostream&gt;using namespace std;int main(int argc, char *argv[]) { int n=0; cin&gt;&gt;n; i...

2019-01-29 17:10:22 377

原创 基础练习 数列特征

题目链接 蓝桥杯---基础练习 题解问题描述给出n个数,找出这n个数的最大值,最小值,和。#include &lt;iostream&gt;using namespace std;int main(int argc, char *argv[]) { int n; cin&gt;&gt;n; int a[10005]; for(int i=...

2019-01-29 17:01:58 246

原创 基础练习 时间转换

题目链接 蓝桥杯---基础练习 题解问题描述  给定一个以秒为单位的时间t,要求用“&lt;H&gt;:&lt;M&gt;:&lt;S&gt;”的格式来表示这个时间。&lt;H&gt;表示时间,&lt;M&gt;表示分钟,而&lt;S&gt;表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输...

2019-01-29 12:46:56 257

原创 算法提高 时间转换

题目:http://lx.lanqiao.cn/problem.page?gpid=T183 #include &lt;iostream&gt;using namespace std;int main(int argc, char** argv) { int n; cin&gt;&gt;n; cout&lt;&lt;n/1440&lt;&lt;" "&lt;&lt;n%1440...

2019-01-29 12:43:43 286

原创 算法训练 寂寞的数

题目链接问题描述  道德经曰:一生二,二生三,三生万物。  对于任意正整数n,我们定义d(n)的值为为n加上组成n的各个数字的和。例如,d(23)=23+2+3=28, d(1481)=1481+1+4+8+1=1495。  因此,给定了任意一个n作为起点,你可以构造如下一个递增序列:n,d(n),d(d(n)),d(d(d(n)))....例如,从33开始的递增序列为:  33,...

2019-01-29 12:21:10 695

原创 算法训练 字符串的展开

题目链接 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:  (1) 遇到下面的情况需要做字符...

2019-01-29 11:55:15 352

原创 Amphiphilic Carbon Molecules UVA - 1606 两亲性分子 扫描法

题目:https://vjudge.net/problem/UVA-1606 扫描法。扫描法类似于一种带有顺序的枚举法。例如,从左到右考虑数组的各个元素,也可以说从左到右“扫描”。它和普通枚举法的重要区别是:扫描法往往在枚举时维护一些重要的量,从而简化计算。【分析】不妨假设隔板一定经过至少两个点(否则可以移动隔板使其经过两个点,并且总数不会变小),则最简单的想法是:枚举两个点,然后输出两...

2019-01-28 20:22:59 215

转载 atan(y/x)与atan2(y,x)的区别

C/C++标准库中计算正切的函数有两个,一个是atan(y/x),一个是atan2(y, x)。atan2(y, x)是4象限反正切,它的取值不仅取决于正切值y/x,还取决于点 (x, y) 落入哪个象限:当点(x, y) 落入第一象限时,atan2(y, x)的范围是 0 ~ pi/2; 当点(x, y) 落入第二象限时,atan2(y, x)的范围是 pi/2 ~ pi; 当点(x...

2019-01-28 19:28:19 658

原创 算法提高 开灯游戏 回溯法

题目链接  有9盏灯与9个开关,编号都是1~9。  每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。  具体如下:  第一个开关控制第二,第四盏灯;  第二个开关控制第一,第三,第五盏灯;  第三个开关控制第二,第六盏灯;  第四个开关控制第一,第五,第七盏灯;  第五个开关控制第二,第四,第六,第八盏灯;  第六个开关控制第三,第五,第...

2019-01-28 17:40:18 719

原创 算法提高 分数统计

题目:http://lx.lanqiao.cn/problem.page?gpid=T231输入格式  若干0~100的正整数,用空格隔开???输入有点坑,题目意思是输入直到EOF结束,结果测试文件多了一个输入的成绩总数。。。。。#include &lt;iostream&gt;#include &lt;vector&gt;#include &lt;algorithm&gt;...

2019-01-28 15:27:56 372

原创 算法提高 阮小二买彩票

题目链接问题描述  在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多。可是一段时间观察下来,阮小二发现自己账户的钱增长好慢啊,碰到节假日的时候连个铜板都没进,更郁闷的是这些天分文不进就算了,可恨的是银行这几天还有可能“落井下石”(代扣个人所得税),看着自己账户的钱被负增长了,阮小二就有被割肉的感觉(太痛苦了!)...

2019-01-28 14:43:27 291

原创 new string()和直接赋值的关系和异同

由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。 其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建字符串对象,返回对象引用,并且将新创建的对象放入池中。但是,通过new方法创建的String对象是不检查字符串池的,而是直接在堆区或栈区创...

2019-01-28 14:18:55 722

原创 算法提高 班级排名

题目:算法提高 班级排名 #include &lt;iostream&gt;#include &lt;string&gt;#include &lt;algorithm&gt;#include &lt;map&gt;using namespace std;const string NAME="DaDa";struct Student{ int score; string nam...

2019-01-27 21:26:49 347

原创 算法提高 三角形面积

题目:http://lx.lanqiao.cn/problem.page?gpid=T275问题描述  由三角形的三边长,求其面积。  提示:由三角形的三边a,b,c求面积可以用如下的公式:  s=(a+b+c)/2  面积=#include &lt;cstdio&gt;#include &lt;cmath&gt;int main() { double a, b, c;...

2019-01-27 20:25:16 172

原创 Wine trading in Gergovia UVA - 11054 Gergovia的酒交易---等价转换

题目:https://vjudge.net/problem/UVA-11054【分析】考虑最左边的村庄。如果需要买酒,即a1&gt;0,则一定有劳动力从村庄2往左运给村庄1,而不管这些酒是从哪里来的(可能就是村庄2产的,也可能是更右边的村庄运到村庄2的)。这样,问题就等价于只有村庄2~n,且第2个村庄的需求为a1+a2的情形。不难发现,ai&lt;0时这个推理也成立(劳动力同样需要|ai|个...

2019-01-27 20:14:02 230

原创 fill和memset的区别

fill函数的作用是:按照单元赋值,将一个区间的元素都赋予val值。函数参数:fill(vec.begin(), vec.end(), val); val为将要替换的值。#include &lt;algorithm&gt;fill(vec.begin(), vec.end(), val); //原来容器中每个元素被重置为valmemset函数的作用是:按照字节填充某字符#inc...

2019-01-27 19:58:38 3594 2

原创 Fabled Rooks UVA - 11134 传说中的车 问题分解

题目:https://vjudge.net/problem/UVA-11134 【分析】两个车相互攻击的条件是处于同一行或者同一列,因此不相互攻击的条件就是不在同一行,也不在同一列。可以看出:行和列是无关的,因此可以把原题分解成两个一维问题。在区间[1~n]内选择n个不同的整数,使得第i个整数在闭区间[n1i, n2i]内。思路:将[min,max]用max大小进行排序,排好序后在1~n...

2019-01-27 19:40:22 219

原创 算法提高 格子位置

题目:http://lx.lanqiao.cn/problem.page?gpid=T158#include &lt;cstdio&gt;int main(int argc, char** argv) { int n, x, y; scanf("%d%d%d",&amp;n,&amp;x,&amp;y); for(int j=1; j&lt;=n; j++) printf("(%d...

2019-01-27 15:45:32 436

原创 算法提高 多项式输出

题目:http://lx.lanqiao.cn/problem.page?gpid=T152#include &lt;iostream&gt;#include &lt;cmath&gt;using namespace std;void x(int n){ if(n==0) return; if(n==1) { cout&lt;&lt; 'x'; return; } cou...

2019-01-27 15:08:29 252

原创 算法提高 实数相加

题目:http://lx.lanqiao.cn/problem.page?gpid=T142#include &lt;iostream&gt;#include &lt;algorithm&gt;using namespace std;int main(int argc, char** argv) { string x, y; cin&gt;&gt; x&gt;&gt; y; st...

2019-01-27 13:51:18 168

转载 C++ string的大小写转换

将全部的string转换为一致的大写和小写STL的algorithm库给我们提供了这样的便利,使用模板函数transform可以轻松解决这个问题,开发人员只需要提供一个函数对象,例如将char转成大写的toupper函数或者小写的函数tolower函数。transform原型:template &lt; class InputIterator, class OutputIterat...

2019-01-26 21:18:08 7369 2

原创 算法提高 统计单词数

题目链接问题描述  统计输入英文文章段落中不同单词(单词有大小写之分,  但统计时忽略大小写)各自出现的次数。 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母.#include &lt;iostream&gt;#include &lt;map&gt;#include &lt;algorithm&gt;using namespace std;strin...

2019-01-26 21:07:48 411

原创 4 Values whose Sum is 0 UVA - 1152 中途相遇法

题目:https://vjudge.net/problem/UVA-1152【分析】最容易想到的算法就是写一个四重循环枚举a, b, c, d,看看加起来是否等于0,时间复杂度为O(n4),超时。一个稍好的方法是枚举a, b, c,则只需要在集合D里找找是否有元素-a-bc,如果存在,则方案加1。如果排序后使用二分查找,时间复杂度为O(n3logn)。把刚才的方法加以推广,就可以得到一个...

2019-01-26 19:52:47 465

原创 Building for UN UVA - 1605 联合国大楼 构造法

题目:https://vjudge.net/problem/UVA-1605 思路:一共只有两层,每层都是n*n的,第一层第i行全是国家i,第二层第j列全是国家j。这样每个国家肯定相邻#include &lt;iostream&gt;using namespace std;char country(int i){ return i&gt;=26 ? 'a'+i-26 : 'A'+...

2019-01-26 17:32:18 277

原创 priority_queue优先队列的使用

priority_queue头文件<queue>相关定义优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队(即默认大根堆)。这点类似于给队列里的元素进行了由大到小的顺序排序。元素的比较规则默认按元素值由大到小排序,可以重载“<”操作符来重新...

2019-01-26 16:56:17 291

算法竞赛入门经典--训练指南,代码仓库最新版

《算法竞赛入门经典——训练指南》代码仓库 例题代码 限于篇幅,书上并没有给出所有例题的代码,这里给出了所有例题的代码,并且改进了书上的一些代码。 第一章 32题 38份代码 第二章 28题 30份代码 第三章 22题 23份代码 第四章 19题 21份代码 第五章 34题 39份代码 第六章 24题 26份代码 共159题 177份代码 为了最大限度保证代码风格的一致性,所有例题代码均由刘汝佳用C++语言编写。 所有代码均通过了UVa/La的测试,但不能保证程序是正确的(比如数据可能不够强),有疑问请致信rujia.liu@gmail.com,或在googlecode中提出: http://code.google.com/p/aoapc-book/ [最新更新] 2013-04-23 增加字符串中例题10(UVa11992 Fast Matrix Operations)的另一个版本的程序,执行效率较低,但更具一般性,可读性也更好 2013-04-22 增加字符串部分“简易搜索引擎”代码,可提交到UVa10679 2013-04-13 修正Treap中优先级比较的bug(原来的代码实际上是在比较指针的大小!),加入纯名次树代码 2013-03-31 修正UVa1549标程的bug,即buf数组不够大。 增加线段树部分“动态范围最小值”的完整代码 2013-03-23 修正UVa10054标程的bug,即没有判断是否每个点的度数均为偶数。UVa数据已经更新 LA3401修正了代码和文字不一致的问题 UVa11270增加了答案缓存 2013-03-21 增加线段树部分中两个经典问题的完整代码:快速序列操作I和快速序列操作II 2013-02-28 补全所有159道例题的代码

2019-04-13

算法竞赛入门经典--训练指南,代码仓库

算法竞赛入门经典--训练指南,代码仓库,有四个版本的代码仓库。 《算法竞赛入门经典——训练指南》代码仓库 例题代码 限于篇幅,书上并没有给出所有例题的代码,这里给出了所有例题的代码,并且改进了书上的一些代码。 第一章 32题 38份代码 第二章 28题 30份代码 第三章 22题 23份代码 第四章 19题 21份代码 第五章 34题 39份代码 第六章 24题 26份代码 共159题 177份代码 为了最大限度保证代码风格的一致性,所有例题代码均由刘汝佳用C++语言编写。 所有代码均通过了UVa/La的测试,但不能保证程序是正确的(比如数据可能不够强),有疑问请致信rujia.liu@gmail.com,或在googlecode中提出: http://code.google.com/p/aoapc-book/ [最新更新] 2013-04-23 增加字符串中例题10(UVa11992 Fast Matrix Operations)的另一个版本的程序,执行效率较低,但更具一般性,可读性也更好 2013-04-22 增加字符串部分“简易搜索引擎”代码,可提交到UVa10679 2013-04-13 修正Treap中优先级比较的bug(原来的代码实际上是在比较指针的大小!),加入纯名次树代码 2013-03-31 修正UVa1549标程的bug,即buf数组不够大。 增加线段树部分“动态范围最小值”的完整代码 2013-03-23 修正UVa10054标程的bug,即没有判断是否每个点的度数均为偶数。UVa数据已经更新 LA3401修正了代码和文字不一致的问题 UVa11270增加了答案缓存 2013-03-21 增加线段树部分中两个经典问题的完整代码:快速序列操作I和快速序列操作II 2013-02-28 补全所有159道例题的代码

2019-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除