- 博客(32)
- 收藏
- 关注
原创 2019 CCPC final
文章目录比赛分析题目分析A题:Kick StartB题:Infimum of PathsC题:Mr. Panda and TypewriterD题:Pulse NovaE题 Non-Maximum SuppressionF题:FerryG题:Game on the TreeH题 Mr. Panda and SADI题:Mr. Panda and BlocksJ题:Wire-compatible Protocol bufferK题:Russian Dolls on the Christmas TreeL题:.
2022-02-19 20:19:52
834
原创 2019~2020 ICPC 欧洲西南部
文章目录比赛分析比赛题目部分题目思路及代码F题:IcebergsK题:BirdwatchingA题:Environment-Friendly TravelG题:Swapping Places比赛分析比赛题目比赛题目A题: Environment-Friendly Travel从一个点到另一个点,中间每条边含有两个变量,co2co_{2}co2浓度和路径长度。求在可达到的情况下最小的co2co_{2}co2浓度。B题: Biodiversity多种字符串,求字符串出现最多的的串,如果最多
2022-02-13 23:30:30
350
原创 Labyrinth(2020 CCPC 威海 B)
文章目录原题链接题目大意思路代码原题链接题目大意走迷宫,一个n*m的图,有k个地方毁坏(称为黑洞),有q次询问:问(x1,y1)到(x2,y2)的最小移动次数思路显然,暴力跑q边bfs不行!然后就看见42个黑洞点。想着用这42个黑洞点。以这42个黑洞点跑bfs就可以了!但是,下面这个图怎么处理呢?(蓝色部分为黑洞)答案:特判呗!以u,v作为对顶点的矩形内是否有黑洞,如果没有直接就是曼哈顿距离,否则就以黑洞点跑bfs注意:在走路的时候不能经过黑洞,所以以黑洞周围的四个点为准跑bfs。然后就
2022-02-10 22:19:32
176
原创 2020 CCPC 威海(赛后重现)
文章目录比赛分析比赛题目部分题目思路及代码A题:老头过桥D题:ABC ConjectureB题:LabyrinthH题:Message Bomb比赛分析出题人的想法:(给一个链接自己看去)本博主的看法(以下的就都是俺的想法了):属于是为了签到签完而努力着!我们属于是赛后重现赛,自己拉一场打的。一场比赛就过两道题。哎~~。分析一下整场比赛(下面有部分题的分析):牌线6/5/4,还在打铁的路上啊!什么时候能进入铜器时代呢?看了一下大佬们的过题时间,签到都挺快……大致上以B题、G题作为一个分界线。B题我.
2022-02-10 21:13:24
704
原创 最短路(题)--Escape from the Island
题意:horse被困在小岛上了,现在想要回去,到第N号小岛上。有N个岛屿,M条河流。你有一艘小船,能无视上下流的走K条河流。或者可以飘着走任意一条下流河(随机的)。每走一条河流花费1min,求从第1~n个小岛到第n个岛的最坏情况下的最短时间。思路:bfs + dp(当时我人傻了啊)状态转移:设dp[u][j]表示到u点时已经划了j步,则dp[v][0]表示飘着的过程。主动划 dp[u][j] = min(dp[u][j], dp[v][j+1] + 1);顺水漂 dp[u][j] = max(d
2022-01-15 00:12:24
240
原创 最短路-----spfa(单源最短路)
文章目录一、spfa1、算法一句话思想2、如何判负环呢?二、代码演示一、spfa1、算法这东西属于bellmen-ford的优化,恕我直言,没看出来,到有点像dijkstra的改版,改成可以判负环的形式,时间复杂度是O(m)->O(n*m)的,看出题人想不想卡了(不过一般情况,只要出题人没问题,他都要卡一下)开始演示:设:dist[i]为源点S到i点的路经长度。由松弛操作我们可知:dist[v] = min(dist[v], dist[u] + w);只有当dist[u]变小的时候,d
2022-01-07 14:49:45
255
原创 最短路-----bellman-ford(单源最短路)
文章目录一、算法一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、算法bellmen-ford算发,这是一个可以求负权图的算法了!要说它好吧,还算好理解,要说不好吧,复杂度是O(n*m)的!有点大。思想类似Kruskal,都是以边为中心展开。先在这里介绍一下松弛操作:松弛操作:对于一条边:u->v:w,dist[v] = min( dist[v] + w, dist[v]);将从源点(S)到v点的最短路更新成:(从S到u的最短路+u到v的路径、原最短路)之间的最小值
2022-01-07 13:12:42
283
原创 最短路-----floyd(多源最短路)
文章目录一、算法思想一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、算法思想floyd最浅显易懂的算法(前提是得有动态规划的思想)算发简单,代码方便,还可以求多源最短路,多好啊!但是复杂度O(n^3)先来介绍一下吧!设:dist[i][j]表示从i->j的路径长度!那么dist[i][k],dist[k][j]表示从i->k、k->j的路径长度!此时,我们加一个状态转移方程:dist[i][j] = min(dist[i][k] + dist[k][j]
2022-01-07 09:48:33
120
原创 最短路-----dijkstra(单源最短路)
目录一、dijkstra算法1、算法:思想:2、代码实现二、一些问题的说明1、为什么dijkstra不能求带负权的路!2、如果没有负环,但有负权边可以吗?3、图上如果有负权边,如果我把所有的边权减去最小边权行不行?4、如果我想要用dijkstra跑含负权的图怎么办一、dijkstra算法求单源最短路算法,四种基本最短路算法中复杂度最低的,但不适用于含负权边的图。贪心思想,从起点到终点,一层层的遍历图。可以求从起点到任意一点的最短路。思想有点像prim(最小生成树算法)1、算法:先设立两个集合,S
2022-01-06 22:53:12
642
原创 图论题集(更新中)
1、全面战争 51Nod - 2891题目大意:有N个点,M条边,一张图,K1个点为源点,K2个点为终点。求:从任意一个源点到任意终点的最短路。半句题解:合并一个总源点原题链接https://www.51nod.com/Challenge/Problem.html#problemId=2891...
2022-01-05 23:40:47
521
原创 全源最短路(Johnson)
全源最短路/——————————————————————————————\先来一个问题:简单来说,n个点,m个边,求ans[i]=∑i=1ndij(i,j) ans[i] = \sum_{i=1}^n dij(i,j)ans[i]=i=1∑ndij(i,j)dij(i,j)表示从i到j的最短路。输入:一个图输出:N行,每行一个整数,当i取1~n时的ans[i]。数据:1 ≤ n ≤ 3e3, 1 ≤ m ≤ 6e3, 1 ≤ u, v ≤ n, −3e5 ≤ w ≤ 3e5原题链接
2022-01-04 23:32:31
830
原创 Adventurer‘s Guild(CF)
一种解法:纯粹的01背包#include<iostream>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;const int N = 1e3 + 7;ll dp[305][305];int n, H, S;ll h[N], s[N], w[N];int main(){ cin >> n >> H >.
2021-09-18 20:24:04
184
原创 排水问题!
Drainage machinesDescriptionCity R has flood every year. Now given a chorography of a place, consisted of n sections. Each section is described by height hiand its seeper’s horizontal height H. Thus, we need to put some drainage machines in proper sectio
2021-08-24 07:57:24
143
原创 电话号问题
Phone ListDescriptionGiven a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let’s say the phone catalogue listed these numbers:Emergency 911Alice 97 625 999Bob 91 12 54 26In the case, it’s n
2021-08-22 23:22:21
246
原创 贪吃的松鼠
贪吃的松鼠Description冬天到了,n只松鼠决定一起采集一波坚果过冬,可是在松鼠老大清点的时候,发现少了一些食物,于是召开松鼠大会,知道是有一只小松鼠偷吃了一部分食物!可是他们只知道每一个松鼠运了m个,但是某一个只松鼠运了k个,请找出这个松鼠!(本题时限3s限制内存256M)Input输入有多组数据,每组第一行包含三个数n,m,k(n<=100000,1<m<=9,k<m)。然后输入m*(n-1)+k个数,第i个数表示运送第i个坚果的松鼠编号,编号范围在2^30以内。
2021-08-22 23:16:20
298
原创 暑假集训:最后一期
2021年8月22日。暑假集训ing。暑假集训最后一期了,今天……啥也没干,倒是发现一道有意思的题:G - Boring data structure problem,本人还没做出来,给个题目自己看去吧!
2021-08-22 23:10:08
104
原创 C++中奇奇怪怪的函数
好使是好使,但不常用有与作者忘记头文件都是啥了,就……全写吧#include<iostream>#include<algorithm>#include<cstring>#include<ctype.h>#include<math.h>1、用来求π的值:atandouble pi = 4*atan(1);//π=4*atan(1) printf("%.10f",pi);2、ceil/floor:用法等同于
2021-08-17 22:41:40
380
原创 AC自动机
AC自动机,就是能自动AC,甚至是自动AK的机器(>人<;)想啥呢!AK个锤子,能写成AC就不错了!AC自动机的前缀知识就是,字典树+KMP。AC自动机:用每一个字串建立字典树void insert(char str[])//树的构建{ int p=0; for(int i=0;str[i];i++) { int u=str[i]-'a'; if(!son[p][u])son[p][u]=++idx; p=s
2021-08-16 23:07:13
57
原创 字典树(Trie树)
Trie:高效存储查找字符串集合的数据结构(可以应用于数字二进制储存)void insert(char str[])//树的构建{ int p=0; for(int i=0;str[i];i++) { int u=str[i]-'a'; if(!son[p][u])son[p][u]=++idx; p=son[p][u]; } cnt[p]++;}int query(char str[])//查询{
2021-08-15 00:23:47
116
原创 C++~~sort函数
sort函数,特好使的排序函数,以下是sort的几种用法:头文件:#include<algorithm>1、整型/浮点型排序:int cmp(int a,int b){return a>b;}int main(){ int a[10]={1,3,4,2,5,6,9,8,7,0}; double b[10]={1.2,2.1,1.0,3.3,2.2,1.1,0.4,5.4,3.4,3.2}; sort(b,b+10);//从小到大 sort
2021-08-10 20:55:31
412
原创 高精度算法(+、-、*、/)
主函数:#include <iostream>#include <algorithm>#include <cstring>#include <vector>using namespace std;string a,b;vector<int>A,B,C;//C用来运算int c;int r;//除法的余数int main(int argc, const char * argv[]){ cin>>a;
2021-08-09 15:04:26
95
原创 一些或许有用的小知识
将一个数转换。eg:1234->4321int zhuan(int a){ int b=0; while (a) { b=b*10+a%10; a=a/10; } return b;}
2021-08-01 15:17:26
107
原创 暑假集训:刷oj版
2021.7.29起开始计时2021年7月29号:暑假集训ing。今天刷了19道oj题。难度还好,不是很难。今天刷题时,由队友指引,知道了一个道理:有些问题,要探究其根本,题目的最终输出!!!可以减少代码量!eg:字符串插入输入一行字符串S1和 一行字符串S2把字符串S2插入到S1中间处,并输出插入后的字符串。只需要先后输出S1的前一半,S2,S1的后一半就行,不需要进行字符串的穿插等操作。(如果该串后续要用就另当别论了!)...
2021-07-29 23:48:29
139
原创 一些......题(>_<)
贪吃的松鼠Description冬天到了,n只松鼠决定一起采集一波坚果过冬,可是在松鼠老大清点的时候,发现少了一些食物,于是召开松鼠大会,知道是有一只小松鼠偷吃了一部分食物!可是他们只知道每一个松鼠运了m个,但是某一个只松鼠运了k个,请找出这个松鼠!(本题时限3s限制内存256M)Input输入有多组数据,每组第一行包含三个数n,m,k(n<=100000,1<m<=9,k<m)。然后输入m*(n-1)+k个数,第i个数表示运送第i个坚果的松鼠编号,编号...
2021-07-28 23:42:29
134
原创 读题、写题的注意事项(连载ing)
1、注意元素变量大小。 写完程序后,从头读题,看一遍给的变量大小2、注意“本题目包含多组测试,请处理到文件结束。” whlie ( scanf ( " %d" , &n ) ! = EOF ) { .... }3、“even”和“odd” ...
2021-07-23 23:04:55
150
原创 线段树(待更新)
接下来是一个完整版子// main.cpp// 线段树//区间最大值线段树#include <iostream>#include <cstring>#include <math.h>using namespace std;#define N 10001int tr[N*4];//为了从 总数/2 处开始建立//线段树建立void build(int rt,int l,int r){ if(l==r) {s...
2021-07-23 22:49:33
74
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人