算法
kent_ln
多年后
再回想年少时的迷茫和执着
或许原因都不记得了
青春就是让你张扬地笑
宫崎骏
展开
-
蓝桥杯 杨辉三角形
杨辉三角形原创 2016-10-22 14:33:14 · 391 阅读 · 0 评论 -
快速幂
参考:http://www.cppblog.com/acronix/archive/2010/08/23/124470.aspx?opt=admin 下面是 m^n % k 的快速幂: // m^n % kint quickpow(int m,int n,int k){ int b = 1; while (n > 0) { if (n &原创 2016-11-30 21:00:04 · 239 阅读 · 0 评论 -
蓝桥杯 历届试题 国王的烦恼
关键:从最大的天数往前开始建立连接图思路:以天数为表头建立邻接表 取出最大和最小的天数,从最大的天数开始往前计算,一直算到最小的天数, 如果某一天t将两个不连通的小岛连接起来则该天会收到抗议;如果某条边连接的岛是相连 ,则不做任何处理 已知n个点的最小连通图的边数最少为n-1条,当连接的边数为n-1时所有岛相连,也就是说在该天之前都不会收到抗议 ,完成检索#include #原创 2016-12-02 11:20:43 · 900 阅读 · 0 评论 -
康托展开和逆康拓展开
康托展开: int cantuo(int s[],int e) //第一位从0开始,e为最后一个的下标{ int i,j,temp,num=0; for (i=0;i<e;i++) { temp=0; for (j=i+1;j<=e;j++) { if (s[j]<s[i]) { temp++; } } num+=fac[e原创 2016-11-30 16:32:29 · 345 阅读 · 0 评论 -
蓝桥杯 小朋友排队
方法一:归并 (利用归并排序的思想) 参考:http://www.cnblogs.com/Deribs4/p/4279864.html#include using namespace std;#define MAX 100001 struct node{ int h; int t; };node per[MAX],temp[MAX]; void Merge(int原创 2016-11-09 21:12:05 · 302 阅读 · 0 评论 -
求最长的回文子串 manacher算法
参考:http://blog.sina.com.cn/s/blog_70811e1a01014esn.html 首先,将字符串都变成奇数字符串(如:将12121变成$1#2#1#2#1*,考虑到边界问题,将第一个与最后一个设置为不同的)原创 2016-12-04 01:20:54 · 220 阅读 · 0 评论 -
Elimination 堆栈
题目描述消除游戏需要 N 张大小为 1 ∼ N 的纸牌。游戏开始时, N 张纸牌排成一行。对于某张纸牌,如果其牌面大小比右边相邻的纸牌小,那么这张纸牌将被消除。游戏按照上述规则进行多轮消除,直到不存在满足条件的纸牌,游戏结束。现在已知纸牌的初始排列顺序,请问消除游戏需要几轮结束,最后剩下的牌是什么。输入第一行一个正整数 T (T ≤原创 2016-12-05 18:24:16 · 343 阅读 · 0 评论 -
DG之实验室里的闲人
题目描述DG生平最怕的就是物理实验,没想到跑到东大来还是摆脱不了做实验的命运,所以说DG每次去实验室都是打酱油,然后等验收的高峰期,趁着老师不注意偷偷观摩下左右的同学的数据•••这次实验要用到天平,旁边放着重1g、2g、3g、5g、10g、20g的6种砝码,每种砝码的数目分别为a1,a2…a6(其总重输入第一行包含一个整数T,表示测试样例的数目原创 2016-12-07 20:16:26 · 277 阅读 · 0 评论 -
二部图 匈牙利算法
匈牙利算法:http://www.renfei.org/blog/bipartite-matching.html http://www.codeceo.com/article/bgraph-match-algorithm.htmlhttp://dsqiu.iteye.com/blog/1689505一道练习题: http://blog.sina.com.cn/s/blog_ac原创 2016-12-07 22:25:00 · 398 阅读 · 0 评论 -
蓝桥杯 历届试题 九宫重排
参考:http://blog.csdn.net/u010372095/article/details/20077681 #include #include #include #include using namespace std; #define MAX 10 #define MAXK 9 #define MAXC 400000 #define MAXD 4in原创 2016-11-30 18:42:51 · 474 阅读 · 0 评论 -
蓝桥杯 历届试题 网络寻路
思路:邻接表表示,以任意数为起点,不走走过的边,可以走三步就是一种转发路径#include #include using namespace std;#define MAXN 10005#define MAXM 100005 struct node{ int to,next; }edge[MAXM]; int head[MAXN]; int cnt,sum; vo原创 2016-11-29 22:49:34 · 1283 阅读 · 0 评论 -
蓝桥杯 格子刷油漆
#include using namespace std; #define M 1000000007 #define N 1001 long long a[N]; long long b[N]; int main(){ int n; cin>>n; b[1]=2; b[0]=1; for(int i=2;i<=n;i++){ b[i]=(b[原创 2016-11-10 20:05:41 · 274 阅读 · 0 评论 -
蓝桥杯 八、十、十六进制转换
十六进制转十进制:#include #include using namespace std;int main(){ string a; cin>>a; unsigned int b=0; int temp=1; int n=a.size(); for (int i=n-1;i>=0;i--) { if (a[i]<='9') {原创 2016-10-22 18:29:46 · 254 阅读 · 0 评论 -
蓝桥杯 算法训练 区间k大数查询
#include #include #include using namespace std; int partion(int a[],int left,int right){ int k=a[left]; int i=left,j=right; while (i<=j) { while (i=k){i++;} while (j>=i&&a[j]<=k){j-原创 2016-10-22 19:43:19 · 309 阅读 · 0 评论 -
蓝桥杯 K好数
#include #include using namespace std; #define M 1000000007int f[101][101]; int main(){ int k,l; cin>>k>>l; int sum=0; for (int i=1;i<=l;i++) { for(int j=0;j<k;j++){ f[i][j原创 2016-10-22 20:43:35 · 290 阅读 · 0 评论 -
蓝桥杯 算法训练 结点选择 树形动态规划
简而言之,就是利用了广度优先搜索的思想#include #include #include using namespace std; #define MAX 100010 int head[MAX]; int f[MAX][2]; int cur=0; //v是u相连的另一点,next为与u相连的另一条边上一条边struct node{ int v,next; }原创 2016-10-23 13:58:17 · 456 阅读 · 0 评论 -
蓝桥杯 算法训练 最短路 spfa
参考自:http://www.cnblogs.com/scau20110726/archive/2012/11/18/2776124.html分成bfs与dfs两种思路方法一:bfs#include #include #include #include using namespace std; #define MAX_N 20010#define MAX_M 20001原创 2016-10-23 16:32:45 · 372 阅读 · 0 评论 -
蓝桥杯 算法训练 安慰奶牛
#include #include #include using namespace std;#define MAX_N 10010#define MAX_M 100010 struct node{ int u,v,val; }edge[MAX_M];int fa[MAX_N]; //保存根节点int c[MAX_N];//sort排序bool cmp(node原创 2016-11-04 20:44:58 · 406 阅读 · 0 评论 -
蓝桥杯 最大的算式
#include #include #include #include using namespace std;int a[16]; long long f[16][15]; int sum[16]; long long dfs(int n,int k){ if (f[n][k]>=0) { return f[n][k]; } if (k>=n||k<0)原创 2016-11-05 19:24:42 · 760 阅读 · 0 评论 -
蓝桥杯 金属采集 树形动态规划
参考:http://www.myexception.cn/program/1598926.html#include #include using namespace std;#define MAX_N 100005#define NUM 11int f[MAX_N][NUM];bool vis[MAX_N];int cost[MAX_N]; int n,s,k; struc原创 2016-11-06 19:06:47 · 403 阅读 · 0 评论 -
蓝桥杯 金明的预算方案
方法一:最容易懂的一种方法,转换为01背包思路#include #include using namespace std;#define MAX_M 32000 #define MAX 62int dp[MAX_M][MAX]; int master[MAX]; int c[MAX][3]; int tv[MAX][4]; int tw[MAX][4]; int c原创 2016-11-07 16:56:00 · 572 阅读 · 0 评论 -
蓝桥杯 求最大值
!!!!一定要注意排除掉a[i],b[i]全为负的情况#include using namespace std; #define INF 100005 #define NUM 101#define MAX 200000 #define PLUS 100000int a[NUM]; int b[NUM]; int dp[NUM][MAX]; int main(){ in原创 2016-11-09 12:24:38 · 737 阅读 · 0 评论 -
蓝桥杯 地宫取宝
#include #include using namespace std;#define M 1000000007 #define MAX 51 #define MK 13int val[MAX][MAX]; int dp[MAX][MAX][MK][MK]; int n,m,k; int dfs(int i,int j,int s,int v){ if (dp原创 2016-11-09 23:29:52 · 340 阅读 · 0 评论 -
0007算法笔记——【分治法】最接近点对问题
问题场景:在应用中,常用诸如点、圆等简单的几何对象代表现实世界中的实体。在涉及这些几何对象的问题中,常需要了解其邻域中其他几何对象的信息。例如,在空中交通控制问题中,若将飞机作为空间中移动的一个点来看待,则具有最大碰撞危险的2架飞机,就是这个空间中最接近的一对点。这类问题是计算几何学中研究的基本问题之一。 问题描述:给定平面上n个点,找其中的一对点,使得在n个点的所有点对中,该点转载 2016-12-09 20:41:04 · 800 阅读 · 1 评论