
基础算法
STILLxjy
不要让任何人打乱你生活的节奏
展开
-
康托展开入门
问题描述: 1:给出n,代表1~n这n个数。现在给一个这n个数的全排列,问它是第几大的排列。(康托展开) 2:给出n,m。问1~n的全排列中,第m大的是哪一个?(逆康托展开) 康托展开 康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+…+ai*(i-1)!+…+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)。 这个公式可能看着让人原创 2016-04-25 18:35:55 · 618 阅读 · 0 评论 -
素数求解
问题描述: 当判断一个数或者个数不多的数是否为素数的时候,可以使用一直判断%2~sqrt(n)==0?。但是当要求1000以内所有的素数的时候,这种方法就很慢了。 1: 第一种最简单的优化就是当判断一个数时,那他的倍数(从i*i~n)一定不是素数,可以直接处理(当下次需要判断某个数的时候,那个数一定是素数)。从i*i比从2*i块一点。也可以只判断奇数,不判断偶数。 2: 虽然上面的方法有原创 2016-04-25 18:37:06 · 621 阅读 · 0 评论 -
计数排序
学过了快速排序,归并排序,选择排序等等。这些到时比较排序,即操作数之间进行比较,看哪个排在前面。比较排序的在最坏的情况下最优下线为O(nlogn)。刚刚看了一种O(n)的算法,不过局限性比较大。 计数排序:输入n个0~k的数,给他们进行排序。在k比较小或者k与n相差不是很大时该算法很快。 算法的思想是:首先用c[i]用来记录每个数i出现的次数,然后从小到大c[i]+=c[i-1];这时c[i]表原创 2016-04-26 19:03:58 · 383 阅读 · 0 评论 -
次方求模
问题描述: 次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测试只有一行,其中有三个正整数a,b,c(1<=a,b,c<=1000000000) 输出 输出a的b次方对c取余之后的结果 样例输入 3 2 3 5 3 100 10 11 12345原创 2016-04-26 20:35:30 · 565 阅读 · 0 评论 -
Expetion(POJ2431)
问题描述:你需要驾驶一辆卡车行驶L单位的距离。最开始时,卡车有P单位的汽油。每行驶一单位的距离要消耗一单位的汽油。如果途中汽油耗尽,卡车将无法继续前进,因而无法到达终点。在途中一共有N个加油站,第i个加油站距离起点距离为A[i],最多可以加B[i]单位的汽油。假设卡车油箱无限大,那么请问卡车能否到达终点,如果能到达输出最少加油次数,否则输出-1。限制条件: 1<=N<=10000 1<=L<=原创 2016-06-17 18:34:03 · 1055 阅读 · 0 评论 -
Coins 思维题
题目链接: https://acm.bnu.edu.cn/v3/statments/52297.pdf题意: 分别有a1,a2,a3个一元,两元,3元的硬币。问可以组成多少不同的钱数?分析: 分类讨论即可,不过要用手推很长时间。 我们没用long long,很早就写出来了 ,WA了n次。。。。AC代码:#include <iostream>#include <cstdio>#includ原创 2016-10-16 17:24:44 · 528 阅读 · 0 评论