
算法
文章平均质量分 71
BEconfidence
坚持才是胜利之道
展开
-
抽屉原理
桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面至少放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定至少有一个集合里有两个元素。” 抽屉原理有时也被称为鸽巢原理。它是组合数学中一个重要的原理。原创 2015-02-12 21:53:17 · 502 阅读 · 0 评论 -
ACM训练方案-POJ题目分类
ACM训练方案-POJ题目分类博客分类: 算法 ACM online Judge 中国: 浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 中国科技大学(USTC)原创 2015-06-17 18:10:39 · 873 阅读 · 0 评论 -
做题细节
1. 如果题目是枚举的话,即最后化成十分简单的形式比较小, 可以直接将各种不同状态的结果运算过程写出来,但是这并不见得比写函数要快多少 而且比较容易出错,比如下标没有更改之类,这种错误比较烦人,因为你会查看算法, 但是算法本身并没有错误,所以如果复制粘贴的话,注意不同情况的不同点,如果自己 不够细心,最好写成函数的形式(注意判断边界),以防出错.//16:35 20原创 2015-05-30 16:24:31 · 4793 阅读 · 1 评论 -
HDU1086 You can Solve a Geometry Problem too(数学几何)
这道题的主要解题思路如下:第1 步:快速排斥试验,如果分别以P1P2 ,P3P4 为对角线做矩形,而这两个矩形不相交,则这两条线段肯定不相交,如下左图;即使两个矩形相交,这两条线段也不一定相交,如下右图,这时再用第2 步判断; 表示成语句,即两个矩形相交当且仅当下列式子原创 2015-06-04 10:04:44 · 771 阅读 · 0 评论 -
众神犇的博客
2011年世界冠军,浙江大学巫泽俊(watashi)大神的blog【其实大都是一些二次元的宅物啦啦啦←_←http://blog.watashi.ws/北京大学Matrix67大神的博客里面很多有趣的数学知识【基础组决赛的最后一题就出自这里http://www.matrix67.com/blog/清华大学郭家宝大神的博客,里面很多各种有用的东西,不光是算法https原创 2015-06-30 22:45:25 · 2037 阅读 · 0 评论 -
匈牙利算法模板
#includebool find(int x){ int i,j; for(j=1;j if(line[x][j]==true && uesd[j]==false) ///如果有暧昧并且还没有标记过(这里标记的意思是这次查找试图改变过该妹子的归属问题,但是没有成功,所以就不用瞎折腾功夫了) {原创 2015-06-14 19:51:18 · 673 阅读 · 0 评论 -
HDU 1800 Flying to the Mars( map or hash )
题意:输入一堆数字 看一堆数中最少有多少个上升子串(不连续的子串) 1个数字 单独也算一个子串思路:每个串去掉一串最长的 再去掉一串次长的。。。。。到最后肯定剩下某个出现次数最多的数字 所以本题就是找那个数字出现的最多 最多的次数是多少肯定用map喽#include#includeusing namespace std;int main(){原创 2015-06-14 22:54:29 · 594 阅读 · 0 评论 -
HDU4508:湫系列故事——减肥记I(完全背包)
#include#includeusing namespace std;int sum=0;void getMax(int N,int ** array,int Limit,int happiness){ if(Limit==0) { if(happiness > sum) sum = happiness; return; }原创 2015-06-14 23:45:08 · 513 阅读 · 0 评论 -
hdu 2159 FATE 二维背包
先求出不超过他的忍耐度杀完s只怪时能够得到的经验值,如果能升完最后一级,再求用去多少忍耐度就能够升级,最后用他的忍耐度减去需要消耗的忍耐度即可/*忍耐度当做体积,经验值当做价值,怪的只数当做物品数量*/状态转移方程:f[i][j]=max{f[i][j],f[i-b][j-1]+a} i表示忍耐度,j表示杀怪数/*忍耐度当做体积,经验值当做价值,怪的只数当做物品数量*/#include#原创 2015-06-14 23:59:05 · 457 阅读 · 0 评论 -
HDU1425:sort
hash原来做过#include#include#includeusing namespace std;const int M = 1000001;#define MIN -99999999bool hashh[M];void init(){ for(int i=0;i<M;i++) hashh[i]=false;}int main(){ int n,原创 2015-06-14 22:47:12 · 741 阅读 · 0 评论 -
hdu 1496 Equations (hash)
解题报告:题目意思很好理解,就是求有多少种方程的解的形式,输出来就可以了。如果用4重循环的话,可能会超时,没有试过。。直接用hash一一对应就可以了。2重循环把s = a*x1*x1+b*x2*x2 看做一个数组的下标,如果s > 0 ,hash1[s]++;若s 再2重循环把s = c*x3*x3+d*x4*x4 看做下标,开始查找。#include#i原创 2015-06-14 23:06:54 · 593 阅读 · 0 评论 -
hdu Bone Collector(背包)
二位数组做法;#include#include#define M 1009typedef struct pack{ int cost; int val;}PACK;int f[M][M];#include#include#define M 1009typedef struct pack{ int cost; int val;}PACK;i原创 2015-06-14 20:47:29 · 534 阅读 · 0 评论 -
母函数大模版
//母函数模板//形如(1+x^1+x^2+x^3+....+x^n)*(1+x^2+x^4+x^6+....+x^n)*......(1+x^m+x^2m+x^3m+....+x^n)#includeusing namespace std;const int lmax=10000;int c1[lmax+1],c2[lmax+1];int main(){ int n,i,j,原创 2015-05-21 23:03:26 · 489 阅读 · 0 评论 -
HDU1875 还是畅通工程
与之前的畅通工程类似,求最小生成树,只是要剔除不符合条件的边,还要判断是否是连通图(这个磨蹭了很长时间,只要判断加入集合的点数与题目给出的点数是否相等即可)。#include#include#include#includeusing namespace std;#define NUM 103struct point{ int x; int y;}pos[NUM]原创 2015-05-27 14:25:16 · 711 阅读 · 0 评论 -
HDU1233 还是畅通工程(并查集)
思路:考虑的是并查集,还有贪心算法中的克鲁斯卡尔算法,考虑的时候要借助 贪心算法还有并查集,建立树的概念,通过寻找父节点,看是否是满足的父节点,然后进行一些列的判断求解。#include#includeusing namespace std;struct dis{ int a,b,c;}s[10010];int cmp(dis x,dis y){ return原创 2015-05-27 14:03:26 · 924 阅读 · 0 评论 -
生成1~n的排列
#includevoid print_permutation(int n, int * A, int cur){//cur已经填好的位置个数 if(cur == n){//递归边界 for(int i = 0; i<n; i++) printf("%d ",A[i]); printf("\n"); }else for(int i = 1;原创 2015-02-13 16:01:16 · 467 阅读 · 0 评论 -
Floodfill(DFS)
今天有写了一边感觉挺明白的,要精心,思考,无非就是便利每一个找到的’@‘,然后找它的八个方向,一直循环递归#include#includeconst int maxn = 100 + 5;char pic[maxn][maxn];int m, n, idx[maxn][maxn];void dfs(int r, int c, int id){ if(r = m ||原创 2015-03-28 11:51:53 · 702 阅读 · 0 评论 -
背包问题
背包问题编辑题目有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[原创 2015-04-11 21:31:59 · 601 阅读 · 0 评论 -
线段树
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O原创 2015-04-25 14:11:15 · 373 阅读 · 0 评论 -
gcd() 最大公约数
递归gcd()int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}特点及意义 最大公约数指某几个整数共有因子中最大的一个。 例如,12和30的公约数有:1、2、3、6,其中6就是12和30的最大公约数。 两原创 2015-04-25 22:22:02 · 1000 阅读 · 0 评论 -
HDU1897 继续畅通工程(最小生成树Prim)
题目分析:这个题和hdu 1233差不多,就是加了一个状态,因此我们可以先判断每条路的状态,如果是修好的,就让它们的成本是0;如果没修,就让成本给出的成本。这样问题的处理就和1233一样了。#include#include#includeusing namespace std;#define inf 0x3f3f3f3fint map[100][100];int s[100],vi原创 2015-05-27 16:47:19 · 721 阅读 · 0 评论 -
拓扑排序
拓扑排序算法思想1、在AOV网络中选一个没有直接前驱的顶点, 并输出之;2、从图中删去该顶点, 同时删去所有它发出的有向边;3、重复以上步骤, 直到◆ 全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;◆ 或者图中还有未输出的顶点,但已跳出处理循环。这说明图中还剩下一些顶点,它们都有直接前驱,再也找不到没有前驱的顶点了。这时AOV网络中必定存在有向环。用原创 2015-05-27 16:51:23 · 606 阅读 · 0 评论 -
Prim算法(并查集)
普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小图例说明不可选可选已选(Vnew)此为原始的加权连通图。每条边一侧的数字原创 2015-05-27 13:31:33 · 1537 阅读 · 0 评论 -
最小生成树prim算法实现
今天从志权师兄那里学会了最小生成树。所谓生成树,就是n个点之间连成n-1条边的图形。而最小生成树,就是权值(两点间直线的值)之和的最小值。 首先,要用二维数组记录点和权值。如上图所示无向图:int map[7][7]; map[1][2]=map[2][1]=4; map[1][3]=map[3][1]=2;原创 2015-05-27 13:47:48 · 818 阅读 · 0 评论 -
HDU1102 Constructing Roads (最小生成树)
Prim算法求最小生成树#include#include#includeusing namespace std;const int N=110;const int INF=0x3f3f3f3f;int n,ans;int map[N][N],dis[N],vis[N];void Prim(){ int i; for(i=1;i<=n;i++){原创 2015-05-27 13:49:32 · 865 阅读 · 0 评论 -
Kruskal算法求最小生成树
求加权连通图的最小生成树的算法。kruskal算法总共选择n- 1条边,(共n条边)所使用的贪婪准则是:从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中。注意到所选取的边若产生环路则不可能形成一棵生成树。kruskal算法分e 步,其中e 是网络中边的数目。按耗费递增的顺序来考虑这e 条边,每次考虑一条边。当考虑某条边时,若将其加入到已选边的集合中会出现环路,则将其原创 2015-05-27 13:50:16 · 3182 阅读 · 0 评论 -
ML - image class code
problem: await dont workimport * as tf from '@tensorflow/tfjs';import drum from './data/pretrained-model-data/drum.jpg';import drum2 from './data/pretrained-model-data/index.jpg';import drum3 fr...原创 2018-10-28 04:07:49 · 213 阅读 · 0 评论