ACM
文章平均质量分 53
ACM
wxz0v0
这个作者很懒,什么都没留下…
展开
-
Six Degrees of Cowvin Bacon(POJ2139最短路dijkstra算法)
描述母牛最近一直在拍电影,所以他们准备玩一个著名游戏“六度凯文培根”的变体。游戏的工作原理是这样的:每头母牛都被认为与自己的距离为零。如果一部电影里有两只不同的母牛在一起,那么每只母牛都被认为是一个“度”之外的另一头。如果一只两头牛从来没有一起工作过,但都和第三头母牛一起工作过,那么它们被认为是相隔两度的(计算为:与它们一起工作的母牛有一个度,对另一头母牛来说是多一个度)。这符合一般情况。N...原创 2020-04-25 13:24:57 · 225 阅读 · 0 评论 -
栈和队列(忘了拿出来看看)
栈和队列1、头文件:#include//栈#include//队列#include双向队列using namespace std;2、定义:stack x;queue y;deque z;3、操作:栈:x.empty()//如果栈为空返回true,否则返回falsex.size()//返回栈中元素的个数x.pop()//删除栈顶元素但不返回其值x.top()//返回栈...原创 2020-03-16 12:11:48 · 146 阅读 · 0 评论 -
HDU2544(最短路dijkstra算法)
描述在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t恤。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?输入输入包括多组数据.每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表...原创 2020-04-21 15:20:45 · 763 阅读 · 0 评论 -
继续畅通工程(最小生成树克鲁斯卡尔算法+并查集+带注释)
题目描述省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本输入测试输入包含若干测试用例.每个测试用例的第1行给出村庄数目N(1<N<10 0),随后的N(N-1)/2行对应村庄...原创 2020-04-21 09:55:47 · 316 阅读 · 0 评论 -
Out of Hay 最小生成树的(普莱姆算法)及(克鲁斯卡尔算法)(POJ2395)
描述奶牛干草用完了,这件可怕的事必须立即补救。贝西打算到其他农场去调查他们的干草状况。有N(2<=N<=2,000)农场(编号1…N);Bessie从农场1开始,她将穿过部分或全部M(1<=M<=10,000)双向道路,其长度不超过1,000,000,000,000,000,000,000,000,000,000,000,000,000,000有些农场可能与不同长度的道路...原创 2020-04-21 10:12:13 · 269 阅读 · 0 评论 -
并查集+克鲁斯卡尔+最小生成树板子
#include<bits/stdc++.h>#include<ext/rope>using namespace std;#define mem(a,b) memset(a,b,sizeof(a));#define ll long long intconst int INF = 0x3f3f3f3f;int pre[5005];int n,m;struct node1{ int x,y,w;}node[200020];void init(){原创 2020-10-20 19:51:16 · 113 阅读 · 0 评论 -
Conservation(拓扑排序)
题目链接(自用)该题可以从实验室1开始或者从实验室2开始用拓扑排序从实验室1开始跑一遍,再从实验室2开始跑一遍,求最小值就可以了#include <map>#include <set>#include <cmath>#include <deque>#include <queue>#include <stack>#include <vector>#include <cstdio>#includ原创 2020-11-21 14:53:48 · 115 阅读 · 1 评论 -
2020牛客国庆集训派对day2 补题J
2020牛客国庆集训派对day2补题J:VIRUS OUTBREAK题目描述The State Veterinary Services Department recently reported an outbreak of a newly found cow disease. All cows found to have affected by the disease have since euthanized because of the risk to the industry. Number o原创 2020-10-06 19:03:54 · 318 阅读 · 0 评论 -
Elven Postman(hdu5444)
题目链接hdu5444从总根出发,如果比当前根值大往左继续查询且输出W,比当前根值小往右继续查询且输出E,在根就换行并且返回,且每一个快递都是从最顶部出发#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<vector>#include<set>#include<vecto原创 2020-07-30 14:16:31 · 102 阅读 · 0 评论 -
链式前向星
女朋友奇奇怪怪删我qq真是气人。链式前向星其实就是静态建立的邻接表,时间效率为O(m),空间效率也为O(m)。遍历效率也为O(m)。head数组初始化为-1,可以令以i为起点的第一条边赋值为-1,使得edge[j].next=-1使j=-1使循环结束。数据5 71 2 1 //权值为1 edge[0].to=2;edge[0].next=-1;head[1]=02 3 2 //权值为2 edge[1].to=3;edge[1].next=-1;head[2]=1;3 4 3 //权值为3 ed原创 2020-07-07 17:37:12 · 1166 阅读 · 0 评论 -
1024快乐
1024快乐原创 2020-10-24 08:20:53 · 64 阅读 · 0 评论 -
hdu 1754 I Hate It(tle有坑)
原题链接本题有坑,如果你一直tle的话,可能是空间开小了,建议开到3或4倍,亲测,我wa了5次,就是因为开小了,改成3倍多点就A了代码:**#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<vector>#include<set>#include<vector>原创 2020-07-15 19:37:27 · 236 阅读 · 2 评论 -
The order of a Tree(二叉树的前序遍历)(hdu3999)
本题构建二叉树,并且前序遍历输出即可#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<vector>#include<set>#include<vector>#include<queue>#include<stack>#include&l原创 2020-07-30 12:58:27 · 257 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers(线段树 区间修改)
本题数组要开大点,而且要用long long代码:#include<iostream>#include<stdio.h>using namespace std;typedef long long ll;const ll maxn=100010;ll lazy[4*maxn],tr[4*maxn],r[4*maxn];void pushdown(ll po,ll ljs,ll rjs)//向下推lazy标记{ if(lazy[po]) {原创 2020-07-16 17:38:39 · 93 阅读 · 0 评论 -
hdu 1429胜利大逃亡(续)
震惊,某大学生下午净在家中做出这种事情!描述Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。Ignatius每分钟只能从一个坐标走到相邻四个坐标中的其中一个。魔王每t分钟回地牢视察一次,若发现Ignatius不在原位置便把他拎回去。经过若干次的尝试,Ignatius已画出整原创 2020-07-10 16:35:43 · 178 阅读 · 0 评论 -
2020牛客国庆集训派对day4 补题
添加链接描述补题B:本题求最长等差序列的长度代码:#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<vector>#include<set>#include<vector>#include<queue>#include<stack>#原创 2020-10-06 20:39:05 · 133 阅读 · 0 评论 -
2020牛客国庆集训派对day3(补题)
补题J:Flowers题目链接tot(为花的贡献和)本题给出数据n,m,n为花卉种类,m为每束花应该有m种,check中的x为x束花,假设有x束花,则应该有xm朵花,在n种花中,(check过程)如果a[i]>x则说明花的数量大于花束的数量,这种花可以用在每一种,而且还多出来,tot中加上x,反之第i种花的数量小于花束的数量则tot应该加上该种花的数量(a[i])。如果tot最终大于xm则花的贡献量大于应该有的花数,则check函数返回1(最佳答案大于等于x也就是传过去的mid),使ans值等于原创 2020-10-09 18:53:44 · 139 阅读 · 0 评论 -
快速幂板子
题目链接洛谷P1226#include<bits/stdc++.h>using namespace std;#define mem(a,b) memset(a,b,sizeof(a));#define ll long longconst int INF = 0x3f3f3f3f;ll quick(ll a,ll b,ll c)//每步都要mod c{ ll ans=1,base=a%c;//ans为答案,base为a^(2^n) while(b)//比如为11则他原创 2020-10-20 20:51:47 · 94 阅读 · 0 评论 -
kmp
大佬kmp详解写个博客记下来POJ3461 Oulipo#include<stdio.h>#include<string.h>#include<iostream>using namespace std;const int maxn1= 1e4+5;const int maxn2 =1e6+5;char s1[maxn1],s2[maxn2];int next[maxn1];int cnt;int len1,len2;void kmp(char *原创 2020-07-24 20:09:24 · 105 阅读 · 0 评论 -
POJ 1077 Eight(双向广搜)
题目链接代码:#include<stdio.h>#include<iostream>#include<map>#include<queue>using namespace std;#define ll long long ll dir[4][2]={{0,1},{-1,0},{1,0},{0,-1}};int main(){ map<ll,int>vis;//1表示正向搜索过,2表示反向搜索过 map<l原创 2021-03-09 16:50:59 · 86 阅读 · 0 评论 -
hdu1428漫步校园
LL最近沉迷于AC不能自拔,每天寝室、机房两点一线。由于长时间坐在电脑边,缺乏运动。他决定充分利用每次从寝室到机房的时间,在校园里散散步。整个HDU校园呈方形布局,可划分为n*n个小方格,代表各个区域。例如LL居住的18号宿舍位于校园的西北角,即方格(1,1)代表的地方,而机房所在的第三实验楼处于东南端的(n,n)。因有多条路线可以选择,LL希望每次的散步路线都不一样。另外,他考虑从A区域到B区域仅当存在一条从B到机房的路线比任何一条从A到机房的路线更近(否则可能永远都到不了机房了…)。现在他想知道的是,所原创 2020-07-08 18:40:30 · 234 阅读 · 0 评论 -
Silver Cow Party(POJ3268矩阵转置+dijkstra
描述一只母牛从N块田中的任一块(1≤N≤1000)去参加盛大的母牛聚会,这个聚会被安排在X号田(1≤X ≤N)。一共有M(1 ≤ M ≤ 100,000)条单行道分别连接着两块田,且通过路i需要花Ti(1≤Ti≤100)的时间。每头母牛必需参加宴会并且在宴会结束时回到自己的领地,但是每头牛都很懒而喜欢选择化是最少的一个方案。来时的路和去时的可能不一样。求每头牛要来回的最短时间。输入第一行...原创 2020-04-26 13:15:22 · 125 阅读 · 0 评论 -
欧拉筛板子
洛谷P3383 【模板】线性筛素数欧拉筛板子#include<bits/stdc++.h>#include<ext/rope>using namespace std;#define mem(a,b) memset(a,b,sizeof(a));#define ll long long intconst int INF = 0x3f3f3f3f;bool prime[100000010];int num[6000010],cnt=0;void olprime(int原创 2020-10-21 19:37:49 · 133 阅读 · 0 评论 -
全排列函数
头文件:#include<algorithm>next_permutation例子:#include<algorithm>#include<stdio.h>using namespace std;int main(){ int a[4]={1,2,3,4}; do{ for(int i=0;i<4;++i) printf("%d",a[i]); printf("\n");原创 2021-01-04 16:23:58 · 156 阅读 · 2 评论 -
Improve SPAM(两次dfs或者bfs+拓扑排序)
先给出两个数,有n个点,其中1-m点是发送邮件点,然后有m行,第i行的第一个数,代表着第i个发送邮件点能够发送的地址。可以用两个dfs跑出来,或者用bfs预处理,再跑一遍拓扑dfs:#include<stdio.h>#include<iostream>#include<vector>#include<memory.h>#include<queue>using namespace std;#define mem(a,b) memse原创 2020-11-12 15:14:54 · 126 阅读 · 0 评论 -
题集(线段树1 & 离散化模版)
线段树 自用离散化原创 2021-11-30 21:10:17 · 106 阅读 · 0 评论 -
算法实验:划分问题(动态规划)
Description给定一个正整数的集合A={a1,a2,….,an},是否可以将其分割成两个子集合,使两个子集合的数加起来的和相等。例A = { 1, 3, 8, 4, 10} 可以分割:{1, 8, 4} 及 {3, 10}Input第一行集合元素个数n n <=300 第二行n个整数Output如果能划分成两个集合,输出任意一个子集,否则输出“no”Sample Input51 3 8 4 10Sample Output3 10dp[i][j] 表示{a1, a2,原创 2021-11-09 15:28:44 · 1047 阅读 · 0 评论 -
题集 (简单数据结构)
题单A Sliding Window(POJ - 2823)B Bad Hair Day (POJ - 3250)A Sliding Window(POJ - 2823)(单调队列)题目链接本题维护两个单调队列就可以了在求窗口内最大值时,需要我们维护一个单调递减的队列,队头所对应的元素永远是最大的,只有在当前位置到队头位置长度超过窗口长度时,才将队头弹出,在维护递减性时,如果当前位置所对应元素比队尾所对应元素要大,那么弹出队尾,直到队空或者找到一个比当前位置所对应元素大的。而求窗口最小值时反之原创 2021-10-25 20:42:48 · 79 阅读 · 0 评论 -
“红旗杯”第十五届东北地区大学生程序设计竞赛 D - Lowbit (gym-103145-D)
题目链接一开始看官方题解没看懂 看了一波大佬的题解…链接(线段树 + 思维)本题是给出两种操作 一种是 给出一个区间,将区间内的数字都加上自身的lowbit 另一种是求出区间总和 如果暴力单点修改每个点加上自身lowbit肯定是会TLE,我们需要去进行区间修改我们可以发现所有2的n次方加上自身的lowbit都可以用乘2(左移1位)来达到0x2 = 10 0x4 = 100 0x8 = 1000 0x16 = 10000而且所有的非2的n次方加上自身的lowbit就是将最右边的1左移1位,那么原创 2021-09-07 15:18:39 · 658 阅读 · 0 评论 -
Gym-103373-C. A Sorting Problem
题目链接本题用O(nlogn)时间求逆序对,我用的归并排序求逆序对#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>using namespace std;#define ll long long const int M = 200020;int str[M];int str1[M];ll a原创 2021-10-31 18:36:39 · 303 阅读 · 0 评论 -
背包dp(模版)
背包模版 + 例题原创 2021-12-02 21:32:00 · 393 阅读 · 0 评论 -
N皇后(正常回溯法 & 位运算法)
n皇后问题(正常回溯法 & 位运算法)原创 2021-11-25 16:33:12 · 118 阅读 · 0 评论 -
算法:线性时间选择(求第k小元素)
一开始我是想利用优先队列的大顶堆,存储当前遇到的最小的k个数,时间复杂度是O(nlogk)果断tle然后我就去学习了一下线性时间选择算法先将整个数组每5个分成一份原创 2021-09-03 20:57:15 · 1436 阅读 · 0 评论 -
题集(A* & 双向广搜)
题单A Eight(POJ-1077)二级目录三级目录A Eight(POJ-1077)(双向广搜 或 A*)题目链接首先说一下这个没有解决方案的情况,在本题中只有四种移动状态,上下左右,先看左右,他不会对改变状态后的逆序数大小进行变化,再看上下,他会对改变状态后的逆序数大小进行±2的改变(让改变的位置到x中间的2个数都加减1)或者不会对改变状态后逆序数大小进行改变(让改变的位置到x中间的2个数分别加减1),所以所有状态的奇偶性都和初始状态相同,那么我们只需要判断初始状态到最终状态(“123456原创 2021-09-11 12:24:58 · 189 阅读 · 0 评论 -
memset的坑
先来看样例#include <iostream>#include <string.h>using namespace std;int main(){ int a[12]; memset(a, 1, sizeof(a)); for (int i = 0; i < 12; ++i) cout << a[i] << " "; return 0;}这个输出的是而 16843009 转化成二进制原创 2021-05-22 20:36:27 · 99 阅读 · 0 评论 -
题集 (最短路 并查集扩展)
题单A Coloring Contention(Gym 102433C)**B** Jzzhu and Cities(CodeForces 449B)C Find them, Catch them(POJ 1703)A Coloring Contention(Gym 102433C)最短路spfa + 链式前向星存储题目链接题目意思是 使用能够使Bob变换最多次数的方法,求出Bob变换的次数,已知是最优,那么Bob第一步确定颜色,其余每一步必须改变颜色,所以两点间距离可以设置为1,求出Bob到达终原创 2021-08-29 16:45:37 · 94 阅读 · 0 评论 -
题集 (搜索扩展)
题单A 胜利大逃亡(续)A 胜利大逃亡(续)原创 2021-08-31 15:18:01 · 126 阅读 · 0 评论 -
CCPC2021网络赛重赛 umping Monkey(并查集重构 + dfs)
题目链接(hdu 7136)本题可以根据权值最大的点作为突破口,权值最大的点一定是最优解的最后一步,那么我们可以依次倒推,每次删去最大的点以及该点连接的边最后推到每一个点。实现过程:我们可以将所有点按照权值从小到大排出,每次枚举出的新点因为权值比前面的大,所以可以将他作为原先连通块的新祖宗,这样在搜寻深度倒推的时候就能够实现优先删除一个连通块中权值较大的点,再删除权值较小的点,每次倒推与该点相连的点的时候,与该点相连的点的深度为该点深度加1,直到倒推到无法倒推。代码:#include <i原创 2021-10-18 20:29:28 · 88 阅读 · 0 评论 -
多重背包(单调队列优化)
话不多说,直接上题,先看一道单调队列的经典题,理解一下单调队列(大佬跳过)题目链接AC代码#include <iostream>using namespace std;const int M = 1000100;int que[M], head, tail, ans1[M], ans2[M], que2[M];int map1[M];int main(){ int n, k; cin >> n >> k; for (int i = 0; i &l原创 2021-06-05 16:09:10 · 141 阅读 · 0 评论 -
快速幂、快速乘、矩阵快速幂
目录一 快速幂二 快速乘三 矩阵快速幂一 快速幂目的:当我们在求f(x) = a ^ x % mod时,f(x)的结果会呈指数型增加,如果我们在最终求完之后进行取模,那么最终的那个结果无论int 或者 long long 都无法装下这么大的数据。所以我们需要一个防爆的方法来求出正确答案那么有人问了:如果我要是求把x次方拆分成x个a相乘,每次进行取模可以吗?这样做有问题吗?没有问题,它可以出答案,但时间复杂度太高,太慢了我们能接受吗?不能接受,我们不但要出答案,还要更快那么我们就需要引入快速幂这个原创 2021-09-17 14:26:15 · 447 阅读 · 0 评论