摘要:
快速幂运算: 简单来说就是将a^n化为 [ a^(n/2) ] ^2 再如此反复化简,最终就成了 ( (a^2) ^2 ) ^2...... 在化简时,有奇偶性的区别,如果n为奇数,那a^n == [ a^(n/2) ] ^2 * a ; 如果n为偶数,那a^n == [ a^(n/2) ] ^2 阅读全文
摘要:
最长不下降子序列有两种解法,分别为 O(n^2) 和O(n logn) 第一种就是普通的dp方法,这里不再写了; 主要记录一下n logn的写法 主要思路: 用一个数组 b 来记录最长的子序列; 一开始让b[ 1 ]=a[ 1 ] (数组a为输入的一个序列) ,从i=2开始循环,如果a[ i ] 大 阅读全文
摘要:
原题链接:http://poj.org/problem?id=3190 题目大意: 一些很挑剔的奶牛需要在特定的时间内挤奶,一个挤奶棚每次只能有一头奶牛挤奶,求出最少需要的挤奶棚的数量; 思路:贪心+优先队列; 先用开始挤奶的时间顺序排序,然后再按照结束时间早的顺序存到优先队列中; 这样每次判断一下 阅读全文
摘要:
原题链接 :http://poj.org/problem?id=2431 题目大意 : 一辆车从a出发到b,路上有n个加油站,给出加油站距离终点的距离和可以加的油,求最少加油次数。(车可以加无限多油) 思路: 用优先队列,每到一个地点就把加油站的油加入队列,当油不够到下一个节点时,从队列中选取最大的 阅读全文
摘要:
头文件 : #include <stack> 声明方法 stack <char> a; // char 为 a 的类型 栈是限定仅在表尾(栈顶)进行插入或删除操作的线性表。(先进后出)。 empty() 堆栈为空则返回真 pop() 移除栈顶元素 push() 在栈顶增加元素 size() 返回栈中 阅读全文
摘要:
题目大意: 给出只含有 ( ) [ ] 这四种括号的字符串,判断括号是否配对; 思路: 用栈来解决; 当输入左侧括号时入栈,输入右侧括号时判断栈顶元素是否和当前括号匹配,如果匹配就删除栈顶元素,不匹配就让当前元素入栈,最后判断是否是空栈,如果是,代表可以全部匹配,否则不能全部匹配。 阅读全文
摘要:
头文件: #include <queue> 声明方法:priority_queue <int> a; // int 为 a 的类型 最常用的几个基本操作: empty( ) //判断一个队列是否为空 pop( ) //删除队顶元素 top( ) //返回优先队列的队顶元素 push( ) //加入一 阅读全文
摘要:
一串字母完全不同的字符,输出出全排列。如ABC输出 ABC ACB BAC BCA CAB CBA; 用递归的方法: 将前面的元素依次固定,从后面进行交换,输出。 附上代码,用注释的形式解释 阅读全文
摘要:
将正整数n表示成一系列正整数之和:n=m1+m2+…+mk,其中m1≥m2≥…≥mk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。 递归思想: ①当 n 或者 m 等于1的时候,都只有一种情况; (1划分为1)(3划分为1 1 1) ②当 n == m的时候,就是正常的划分,可以变为 1 + 阅读全文
摘要:
原题链接:https://codeforces.com/contest/1176/problem/D 本文链接:https://www.cnblogs.com/blowhail/p/11146761.html 题目大意是 两个个数列 a , b 相同 ,如果 ai 是素数,那么b数列里添加上第ai个 阅读全文