
算法学习
DeathYmz
划水摸鱼要不得!!!
不上紫名不改简介=_=(改了改了 打leetcode周赛去了 codeforces太晚了养身要紧)
展开
-
priority_queue 排序用法
emplace_back() 和 push_back() 的区别,就在于底层实现的机制不同。push_back() 向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素);而 emplace_back() 在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程。.emplace() :相当于push,写题很方便,比如对于pair可以直接pq.emplace(1,2);.top():获得队头元素。原创 2022-09-13 16:07:34 · 588 阅读 · 0 评论 -
Magic Cube ZOJ - 2477
Magic Cube ZOJ - 2477 s输入的是打开立方体,目的是转到每一面都只有一个颜色。 输入:输入t,表示t组数据,每组数据有10行,第一行为空然后九行的格式为: w w w w w w w w w(4) r r r g g g b b b o o o r r r g g g b b b o o o r r r g g g b b ...原创 2018-04-06 21:21:56 · 425 阅读 · 0 评论 -
Piggy-Bank HDU - 1114
Piggy-Bank HDU - 1114 题意: 在可以开展ACM之前,必须提前做好预算并获得经济上的支持。其中主要的利润来自IBM。背后的想法很简单。无论什么时候ACM有钱了,他就把所有的硬币存进一个存储罐里面。你也指导这个行为事不可逆转的,你只有打破存储罐才能拿到钱。一段时间过去,钱罐里面就会存满。但是问题是,不能知道存钱罐里面的钱数。所以唯一一个办法就是称重。然后猜大概有多少钱在里面...原创 2018-04-12 20:35:43 · 272 阅读 · 0 评论 -
Goldbach
Goldbach 2018 ACM-ICPC 中国大学生程序设计竞赛… 就是哥德巴赫猜想。就是数值特别大!!一直没过,最后几分钟把long lon改成了unsigned long long就过了! 此处贴一个(模板)米勒罗宾素数测试;#include<cstdio>#include<cmath>#include<algorithm>#incl...原创 2018-04-22 17:25:11 · 474 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping! HDU - 1087
Super Jumping! Jumping! Jumping! HDU - 1087 题意:求序列中,权值最大的上升序列 不难卡的也不严。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using ...原创 2018-04-12 14:41:47 · 213 阅读 · 0 评论 -
Doing Homework HDU - 1074
Doing Homework HDU - 1074 题意:做作业 题目背景是小明比赛回来一堆作业要写,不按时交作业老师就扣他平时分,晚交一天扣一分。写作业要很长时间的,安排一个写作业顺序,让小明扣分最少。 输入:T表示多组测试数据,每组数据开始n,表示有多少作业,下面n行每行输入科目,和两个正整数表示D截止日期,C表示花费时间。 输出:最少要扣的分数,和完成作业的顺序。(扣分相同输出”先后...原创 2018-04-12 11:37:36 · 330 阅读 · 0 评论 -
DNA sequence HDU - 1560
DNA sequence HDU - 1560The twenty-first century is a biology-technology developing century. We know that a gene is made of DNA. The nucleotide bases from which DNA is built are A(adenine), C(cytosin...原创 2018-04-04 21:01:48 · 273 阅读 · 0 评论 -
Escape HDU - 3533
题目链接: Escape HDU - 3533 写这道题之前我一直有个坏毛病,没有重视,就是标记数组,一般我不会很在意到底是开int还是bool,可能是int打的顺手,所以经常会开int型的标记数组,直到今天,一直超内存,还以为是自己结构体太占内存,就默默把结构体改成数组,然后还是超了,后来同学收内存超了一般是数组开大了,然后注意到,自己开的几个数组,发现有一个可以开成bool型不需要int...原创 2018-04-03 23:43:17 · 505 阅读 · 0 评论 -
Common Subsequence POJ - 1458
Common Subsequence POJ - 1458 求两序列的最长公共序列。 模板 L[i][j]=L[i-1][j-1]+1;更新 L[i][j]=max(L[i-1][j],L[i][j-1]);继承#include<iostream>#include<cstring>#include<cstdio>#include<c...原创 2018-04-16 20:28:00 · 296 阅读 · 0 评论 -
FatMouse's Speed HDU - 1160
FatMouse’s Speed HDU - 1160题意: 胖老鼠认为越胖的老鼠跑的越快,为了证明这个,你想要通过一堆数据证明越胖越慢。 输入:一堆老鼠,一个老鼠一行,到文件结束。每行包括重量,和速度。(不超过1000只老鼠,整数不超过10000) 输出:n个老鼠的数量,n行表示编号,该编号的老鼠必须重量是递增的,速度是递减的。 思路:排序找最长上身序列。#include<...原创 2018-04-16 11:20:14 · 458 阅读 · 0 评论 -
Monkey and Banana HDU - 1069
Monkey and Banana HDU - 1069 有偷偷的看了一下题解,然后理解了。自己敲了一遍没有任何问题。 题意 一个团队研究猴子的智商,他们在房屋顶放了一个香蕉,与此同时,给猴子提供了一些盒子。如果猴子足够聪明,他们就可以通过摆盒子建造一个路到达房顶拿到食物。研究室由n个类型的盒子,每个类型的盒子数量不限。每个类型的盒子会给出长宽高。盒子可以调整。他们想要确保搭积木的最高的那个...原创 2018-04-10 19:46:47 · 264 阅读 · 0 评论 -
老鱼的-kuangbin专题题解
kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Fliptile POJ 1426 Find The Multiple POJ 3126 Prime Path POJ 3087 Shuffle’m Up POJ 3414 Pots FZU...原创 2018-04-07 10:20:45 · 1562 阅读 · 0 评论 -
Travelling HDU - 3001
Travelling hdu-3001 题意:有最多10个城市,从一个城市到另一个(每个城市最多经过两次),求去完所有城市的最短花费。 之前看了一个二进制dp,然后没有自己敲出三进制dp压,还是参看了题解,emmm至于参看的就是百度搜索最上面的那位大佬的。 状态 –三进制+dp–有重边#include<iostream>#include<cstring>#in...原创 2018-04-13 20:57:41 · 340 阅读 · 0 评论 -
OBST-最优二叉搜索树。
模板,构造最优二叉搜索树 w(i,j)=q(i)+Σj/h=i+1(q(h)+p(h)) c(T)=cost(L)+cost(R)+w(0,n); r(i,j),b表示为i,j该树的根。构造时的初始化: w(i,i)=q(i),c(i,i)=0,r(i,i)=0; w(i,i+1)=q(j+1)+p(j+1)+q(i),c(i,i)=c(i,i)+c(i+1,i+1),r(i,i+1...原创 2018-05-04 08:46:13 · 1725 阅读 · 0 评论 -
关于unordered_map 和 map 以及hash_map
9月7号下午写题(The Preliminary Contest for ICPC Asia Xuzhou 2019)遇到这个so easy ,我用了map写一直超时,想了底层map的查找没有hash_map快,然后就用了hash_map也超时了,后来看题解是用的unordered_map可以过。就让我疯狂测试了一波什么情况下超时。(????9月8号我又测试了一波,发现!!!!????我昨天比赛交...原创 2019-09-08 18:13:43 · 574 阅读 · 0 评论 -
除法取模(费马小定理+扩展欧几里得)
除法取模以下只说这两个方法1)费马小定理a^(p-1)==1(mod)p a*a^(p-1)=1%Ma/b%mod=a*b^(mod-2)%mod;只有p,mod为素数时,而一般都为素数。b^(mod-2)一般用快速幂typedef long long ll;ll quick_pow(ll a,ll n){ ll ans=1; while(...原创 2018-10-08 20:33:56 · 603 阅读 · 0 评论 -
算法_选择问题
//选择问题//随机选择主元#include<iostream>#include<cstdio>#include<cstring>#include<stdlib.h>using namespace std;const int inf=0x7f7f7f7f;const int maxn=1000;int n;int a[maxn];...原创 2018-05-26 23:23:26 · 912 阅读 · 0 评论 -
算法_快速排序
#include<iostream>#include<cstdio>#include<cstring>using namespace std;//快速排序const int inf=0x7f7f7f7f;const int maxn=1000;int a[maxn];/*int partition(int left,int right){//可...原创 2018-05-26 17:38:05 · 173 阅读 · 0 评论 -
算法_合并排序
#include <iostream>#include<cstdio>using namespace std;//合并排序const int maxn=1000;int a[maxn];void MergeSort(int left,int right){ if(left<right) { int mid=(left+ri...原创 2018-05-26 16:25:53 · 575 阅读 · 0 评论 -
算法课-分治法求最大最小元
#include<iostream>#include<cstdio>using namespace std;const int maxn=1000;const int inf=0x7f7f7f7f;int a[maxn];//分治法 求最大元最小元void Min_Max(int l,int r,int &maxNum,int &minNum...原创 2018-05-26 15:19:55 · 2071 阅读 · 0 评论 -
P - FatMouse and Cheese HDU - 1078
P - FatMouse and Cheese HDU - 1078 题意:胖老鼠想吃到很多奶酪。奶酪放在城市的每个点,它只能一次向某一个方向最多走k步,并且走的路获得到的奶酪只能一次比一次多。求在不能走之前能获得的最大奶酪。 输入:n,k。下面n行每行n个数,表示在n*n得到位置中,每个位置有多少个奶酪。dp,记忆化搜索#include<iostream>#includ...原创 2018-05-07 10:29:34 · 366 阅读 · 0 评论 -
Treats for the Cows POJ - 3186
Treats for the Cows POJ - 3186题意:给出n然后n个序列a[i]。一个一个吃,第一天他的效益是1*a[i] ,第二天是2*a[i]. a[i]的取值只能从第一个开始或者从最后一个开始。 状态转移方程是: dp[i][j] 表示i-j 区间最大的利益 所以dp[i][j]=max(a[i](n-(j-i))+dp[i+1][j],dp[i][j-1]+a[j...原创 2018-05-06 22:57:30 · 201 阅读 · 0 评论 -
最长公共子序列--模板
/*最长公共子序列-可不连续*/#include<iostream>#include<cstdio>#include<cmath>#include<cstring>using namespace std;const int maxn=2000;int dp[maxn][maxn]; int fa[maxn][maxn];//记录是dp...原创 2018-04-28 09:44:29 · 233 阅读 · 0 评论 -
生成n位格雷码
二进制转格雷码 G(n-1)=B(n-1) G(i)=B(i+1)异或B(i) ( 0 < i < n - 2 ) 格雷码转二进制 原理 首先开始生成一位的0,1 然后两位的时在前面得到基础上加 每位前面加0,然后颠倒 每位前面再加1.#include<cstdio>#include<iostream>#include <cst...原创 2018-05-04 17:10:12 · 576 阅读 · 0 评论 -
最少拦截系统 HDU - 1257
最少拦截系统 HDU - 1257 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求...原创 2018-04-15 19:31:05 · 204 阅读 · 0 评论 -
Longest Ordered Subsequence POJ - 2533
Longest Ordered Subsequence POJ - 2533 求最长上升序列。emmm模板题注意一下输出一开始赋初值:ans=1。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>const int maxn=1000+10;int a...原创 2018-04-15 19:26:03 · 277 阅读 · 0 评论 -
数据结构(四)递归与回溯——POJ-1011 dfs+剪枝
题意:给一群剪切好了的木棍,问最短的原木棍长度。 解决思路:一开始自己想,想错了(捂脸),我只是把,给木棍长度进行从大到小的排序,记录总长,从最长的开始拼接,最长的棍在可以找到整除,然后就可以拼接(后来想想真是想的太简单了),然后能后来看了别人写的方法,用的是dfs+剪枝,单单dfs会超时。这个剪枝的办法就看了挺久emmm。 题目链接:poj 1011Sticks#include#inc原创 2018-02-06 09:36:36 · 443 阅读 · 0 评论 -
Very Easy !!! (大数模拟加法乘法)
大数乘法+加法。 这是借鉴网上的模板。 题目链接:vjudgeUVA-10523#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int maxn=...原创 2018-02-09 12:18:44 · 240 阅读 · 0 评论 -
Transportation poj 1040
题意:给出列车容量,和有多少站,以及订单数。订单数包括起始站终点站和乘客人数,求最大的列车利润。 解题思路:按照起始站和终点站排列后,进行dfs+回溯。 Transportation poj 1040#include<iostream>#include<cstdio>#include<algorithm>#include<cstring&g...原创 2018-02-09 12:05:21 · 331 阅读 · 0 评论 -
2017年10月17日-ACM涉及知识需掌握
2017 ACM/ICPC Asia Regional shenyang Online 部分解释: 6200:(dfs序)树状数组问题 6201:超级源点汇点(网络流),点权转化边权,spfa最长路径 6202:八面八轴魔方模拟,样例找关系写脚本 6205:暴力,贪心思想 模拟题水题 6203:LCA,DFS 树状数组一:树状数组问题: 搞懂树状原创 2017-10-17 00:05:16 · 376 阅读 · 0 评论 -
ACM—STL使用<map>
map 的使用例如如下题目 记得:头文件map,还有using namespace std; 例如map < string,int> num; num[“string”]=int;A+B 对字符串还有数字计算的处理转换之类可以使用map#include<iostream>#include<cstdio>#include<map>#include<string>using namesp原创 2017-10-12 09:37:19 · 438 阅读 · 0 评论 -
算数基本原理(唯一分解定理)
Aladdin and the Flying Carpet 唯一分解定理: 任意一个大于0的正整数都能被表示成若干个素数的乘积且表示方法是唯一的;整理可以将相同素数的合并 X=p1^a1*p2^a2……pn^an; p1..pn 为素数 数X的因子数为num=(1+a1)*(1+a2)……(1+an);/*思路:首先筛选出所有的素数,然后用一个数组存储所有的素数,然后通过数学,用上唯一分解原创 2017-08-21 12:58:26 · 1439 阅读 · 0 评论 -
孙子定理
问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何首先要了解两个重要定理定理1:几个数相加,如果只有一个加数,不能被数a整除,而其他加数均能被数a整除,那么它们的和,就不能被整数a整除。定理2:二数不能整除,若被除数扩大(或缩小)了几倍,而除数不变,则其余数也同时扩大(或缩小)相同的倍数(余数必小于除数)。运用扩展欧几里得的乘法逆元可得模板:typedef long long原创 2017-08-21 12:57:32 · 1871 阅读 · 0 评论 -
欧拉函数(一)
欧拉函数 定义:欧拉函数是指对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。 有关性质: 对于素数 p ,φ(p) = p -1 。 对于两个不同素数 p, q ,它们的乘积 n = p * q 满足 φ(n) = (p -1) * (q -1) 。 φ函数的值: φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p原创 2017-08-18 20:41:56 · 1004 阅读 · 0 评论 -
扩展欧几里得
欧几里得(求最大公约数):int gcd(int a,int b) { return b ? gcd(b,a%b) : a; }扩展欧几里得算法代码int e_gcd(int a,int b,int &x,int &y){ if(b==0) { x=1; y=0; return a; } int ans原创 2017-08-15 23:27:39 · 333 阅读 · 0 评论 -
HDU 1004(顺便补充map的用法)
HDU 1004 之前弄了很久错在 if (a[k].num>max) { max = k; }这里直接存的是max是k的值 应该是存max,num最大的值 然后存关于这个s所在的位置正解应该是if (a[k].num>max)原创 2017-08-09 16:25:11 · 515 阅读 · 0 评论 -
Red and Black POJ - 1979
题意:@可以到达的点有多少个#看作墙 思路:数据量不大直接dfs,注意将走过的点标记。#include#include#includeusing namespace std;struct d{ int x,y;}dir[]={{0,1},{0,-1},{1,0},{-1,0}};int count,n,m;bool vis[21][21];char point[21]原创 2018-02-06 10:56:17 · 161 阅读 · 0 评论 -
The Settlers of Catan POJ - 2258
题意:求最长路径,边不可重复,点可以。 解决思路:回溯暴力搜索#include#include#includeusing namespace std;const int N=26;int n,m,ans;int map[N][N],vis[N][N];//回溯暴力搜索void search(int cur,int len){ ans=max(ans,len);原创 2018-02-06 21:04:08 · 250 阅读 · 0 评论 -
Fractal POJ - 2083
题意:打印图形 解题思路:画图找规律,找到递推之间坐标的关系,发现自己对知识点的不掌握光宇‘\0’ 题目链接:poj083#include#include#include#includeusing namespace std;int n,sum;//3^6=729const int N=1000;char vis[N][N];void B(int num,int x,int原创 2018-02-06 23:12:29 · 227 阅读 · 0 评论 -
Ignatius and the Princess IV HDU - 1029
Ignatius and the Princess IV HDU - 1029 题意: 给你一个奇数n,然后给你n个数,让你张一个特殊的数在n个数中,这个数在n个数中至少出现了半数以上。输出这个数。 半数以上,只要排序好输出中间那个数就好。#include<iostream>#include<algorithm>#include<cstdio>u...原创 2018-04-10 13:41:49 · 199 阅读 · 0 评论