随笔分类 - 编程
摘要:lower_bound( )和upper_bound( )的常见用法 lower_bound( begin,end,num): 从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数
阅读全文
摘要:抢劫案 问题描述 有抱负的罗伊·罗伯(Roy the Robber)看过很多美国电影,并且知道坏蛋通常最终会被抓到,通常是因为他们变得太贪心了。他决定只在短期内从事赚钱的银行抢劫案工作,然后退休,然后再回到大学从事舒适的工作。几个月来,罗伊(Roy)一直在评估各种银行的安全性和所持有的现金量。他想冒
阅读全文
摘要:P1439 【模板】最长公共子序列 题目描述 给出1,2,…,n 的两个排列P1 和P2 ,求它们的最长公共子序列。 输入格式 第一行是一个数 n。 接下来两行,每行为 n 个数,为自然数 1,2,…,n 的一个排列。 输出格式 一个数,即最长公共子序列的长度。 输入输出样例 输入 #1 5 3
阅读全文
摘要:0-1背包 1.题目 2.过程 (1)假如我们放进背包,f[i][j] = f[i - 1][j - weight[i]] + value[i],这里的f[i - 1][j - weight[i]] + value[i]应该这么理解:在没放这件物品之前的状态值加上要放进去这件物品的价值。而对于f[i
阅读全文
摘要:折线分割平面 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。 Input 输入数据的第一行是一个整数C,表示测试实例的个
阅读全文
摘要:母牛的故事 Problem Description 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n
阅读全文
摘要:数塔 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表
阅读全文
摘要:70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶示例 2: 输入: 3
阅读全文
摘要:P1455 搭配购买 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有 n 朵云,云朵已经被老板编号为1,2,3,...,n,并且每朵云都有一个价值,但是商店的老板
阅读全文
摘要:面试题 17.10. 主要元素 数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。 示例 1: 输入:[1,2,5,9,5,9,5,5,5] 输出:5 示例 2: 输入:[3,2] 输出:-1 示例 3: 输入:[2,2,1,1,1,2,2] 输出:2 解
阅读全文
摘要:128. 最长连续序列 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 方法一: 哈希表 找到一个可以作为起点的数字(没
阅读全文
摘要:P1195 口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。 题目描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起。 现在小杉要把所有云朵连成K个棉花糖,一个棉花糖最少要用掉一朵云,小杉
阅读全文
摘要:P1111 修复公路 题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村
阅读全文
摘要:127. 单词接龙 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明: 如果不存在这样的转换序列,返回 0。所有单词具有
阅读全文
摘要:POJ1426——Find The Multiple Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation
阅读全文
摘要:Catch That Cow Description 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上 ,农夫起始位于点 N(0<=N<=100000) ,牛位于点 K(0<=K<=100000) 。农夫有两种移动方式:1、从 X移动到 X-1或X+1 ,每次移动花费一分钟2、从 X移动到 2
阅读全文
摘要:BFS 模板 模板 void BFS(int s){ queue<int> q; q.push(s); while(!q.empty()){ 取出队首元素top; 访问队首元素top; 将队首元素出队; 将top的下一层结点未曾入队的结点全部入队,并设置为已入队 } } 红与黑BFS void BF
阅读全文
摘要:78. 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []] 方法一:迭代法实现子集枚
阅读全文
摘要:代码计算程序运行的时间 为了计算程序运行的时间 #include<bits/stdc++.h> using namespace std; #include<ctime> void func1(){ int a[]={1,2,3}; do{ for (int i = 0; i <= 2; i++) {
阅读全文
摘要:max_element 寻找范围 [first, last) 中的最大元素。 与之相似:min_element 返回值 指向范围 [first, last) 中最大元素的迭代器。若范围中有多个元素等价于最大元素,则返回指向首个这种元素的迭代器。若范围为空则返回 last 。 例子: #include
阅读全文