PIPIOJ
化身孤岛的鲸o
我祈祷拥有一颗透明的心灵
展开
-
PIPIOJ 1133: 棋盘问题 dfs
题目:http://39.106.164.46/problem.php?id=1133代码如下:#include<iostream>#include<stdio.h>#include<cmath>#include<algorithm>#include<queue>#include<set>#include<vector>#define MAX #define INF 0x3f3f3f3ftypedef原创 2020-10-14 19:12:56 · 383 阅读 · 0 评论 -
PIPIOJ 1183: 信使PIPI 多次bfs+最小生成树
题目:http://39.106.164.46/problem.php?id=1183思路:(1)将每个为’C’或者小写’c’的点哈希成1~cnt的序号,代表图中有cnt个点。(2)多次bfs将所给的矩阵化为邻接矩阵。(3)然后用prim算法求最小生成树。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue&g原创 2020-10-14 10:18:35 · 236 阅读 · 0 评论 -
PIPIOJ 1112: 回文串 求回文子串的个数
题目:http://39.106.164.46/problem.php?id=1112代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-14 10:18:25 · 194 阅读 · 0 评论 -
PIPIOJ 1088: 回文串询问Ⅱ 区间回文子串的个数
题目:http://39.106.164.46/problem.php?id=1088代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-13 20:06:50 · 417 阅读 · 0 评论 -
PIPIOJ 1083: 最长公共子序列Ⅰ模板
题目:http://39.106.164.46/problem.php?id=1083代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-13 19:13:31 · 173 阅读 · 0 评论 -
PIPIOJ 1060: PIPI的目标Ⅴ 枚举
题目:http://39.106.164.46/problem.php?id=1060思路:枚举a,然后b和c再进行折半枚举,选出一个a+b+c最接近c的,记录下这个最大和。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vect原创 2020-10-13 17:28:18 · 151 阅读 · 0 评论 -
PIPIOJ 1092: 地头蛇PIPI 动态规划
题目:http://39.106.164.46/problem.php?id=1092思路:题目中dp总共有四个状态,前面一家店选或不选,后面一家店选或不选,这里直接用四个变量代替,初始化第一个状态last_do等于第一个输入的值,然后从第二家店开始遍历。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>原创 2020-10-13 17:10:51 · 126 阅读 · 0 评论 -
PIPIOJ 1325: 社交网络 set的使用+bfs
题目:http://39.106.164.46/problem.php?id=1325思路:对于一个最终被感染的主机集合,我们可以使用set来存储这个集合,并且正好是序号递增的顺序,然后对于每一个可能的黑客主机,我们都进行一次bfs,跟这个主机距离小于等于t的所有主机必须都被感染,并且跟这个主机距离大于t的其他主机都不能被感染,那么这个主机才可能有嫌疑。代码如下:#include<iostream>#include<algorithm>#include<stdio原创 2020-10-13 16:32:13 · 128 阅读 · 0 评论 -
PIPIOJ 1348: PIPI的序列问题Ⅱ 接雨水 单调栈
题目:http://39.106.164.46/problem.php?id=1348思路:可以先学习一下单调栈:单调栈代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack&g原创 2020-10-13 15:31:05 · 138 阅读 · 0 评论 -
PIPIOJ 1061: PIPI的目标Ⅵ 枚举
题目:http://39.106.164.46/problem.php?id=1061思路:由于题目要求最后按照字典序输出,我们可以先对数组排个序,然后从头枚举a,然后枚举b,为了降低复杂度,枚举c和d的时候可以采取折半枚举,用两个指针l和r指向左右两端,判断c+d是否等于t-(a+b),若相等,则记录一个结果。注意最后我们还要筛去重复的记录。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>原创 2020-10-13 14:02:18 · 186 阅读 · 0 评论 -
PIPIOJ 1144: PIPI的灯泡 求异或 思维
题目:http://39.106.164.46/problem.php?id=1144思路:编号出现次数为奇数的即为最后答案,所以我们对所有出现的编号进行异或运算即可。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector&原创 2020-10-13 01:53:41 · 150 阅读 · 0 评论 -
PIPIOJ 1071: 数塔 动态规划
题目:http://39.106.164.46/problem.php?id=1071转移方程:dp[i][j]=mp[i][j]+max(dp[i+1][j],dp[i+1][j+1])代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include&原创 2020-10-13 01:22:48 · 118 阅读 · 0 评论 -
PIPIOJ 1056: PIPI的目标Ⅱ map的使用
题目:http://39.106.164.46/problem.php?id=1056思路:注意两个数相等且和为t的情况。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack&g原创 2020-10-13 01:12:30 · 177 阅读 · 0 评论 -
PIPIOJ 1034: 字典序最小的子序列 单调队列
题目:http://39.106.164.46/problem.php?id=1034思路:维护一个单调递增的队列,先把前n-k个字符放入队列q,q[i]记录的是在队列中排第i位的字符在字符串s中的位置;再放入最后k个字符,放入一个字符,就从队列头取出一个字符,直到输出k个字符。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include&原创 2020-10-13 00:45:20 · 240 阅读 · 0 评论 -
PIPIOJ 1136: k周期串 简单字符串处理
题目:http://39.106.164.46/problem.php?id=1136代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-12 23:37:56 · 156 阅读 · 0 评论 -
PIPIOJ 1175: 货运费用 最短路径
题目:http://39.106.164.46/problem.php?id=1175代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<string>#include<vector>#define MAX 1005原创 2020-10-12 23:09:42 · 127 阅读 · 0 评论 -
PIPIOJ 1286: PIPI运货 最短路径
题目:http://39.106.164.46/problem.php?id=1286代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<string>#include<vector>#define MAX 105原创 2020-10-12 23:01:30 · 364 阅读 · 0 评论 -
PIPIOJ 1118: 继续畅通工程 最小生成树kruskal算法
题目:http://39.106.164.46/problem.php?id=1118Kruskal算法:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<原创 2020-10-12 21:39:48 · 187 阅读 · 0 评论 -
PIPIOJ 1399: 最小生成树板子
题目:http://39.106.164.46/problem.php?id=1399Prim算法:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map原创 2020-10-12 21:11:31 · 150 阅读 · 0 评论 -
PIPIOJ 1121: 最小区间覆盖问题 贪心
题目:http://39.106.164.46/problem.php?id=1121思路:我们先把所有的线段按照左端点从小到大排序,然后从总区间的左端点minl开始依次枚举符合要求(即小区间的左端点的值要小于等于minl,且右端点的值要大于等于minl)的小区间,从中选择一个右端点值最大的区间,ans++,直到minl大于等于R为止,说明我们得到的现在的线段集合已经可以完全覆盖总区间;若到最后minl仍然小于R,说明所有的线段都用上都无法覆盖总区间,那么就输出-1。代码如下:#include&l原创 2020-10-12 20:55:33 · 910 阅读 · 0 评论 -
PIPIOJ 1101: 着火的房间 bfs
题目:http://39.106.164.46/problem.php?id=1101思路:当判断能否走到一个点时,假设此时时间为t,只要判断在它周围t / k个格子中是否有为f的点即可。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include原创 2020-10-12 17:06:22 · 178 阅读 · 0 评论 -
PIPIOJ 1266: 二叉树的直径 dfs
题目:http://39.106.164.46/problem.php?id=1266思路:二叉树的直径为每一个节点左右深度之和的最大值。可以使用一个全局变量sum,在求出深度的同时,记录每一个节点左右深度之和的最大值。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstri原创 2020-10-12 15:50:31 · 143 阅读 · 0 评论 -
PIPIOJ 1032: 水陆距离 bfs
题目:http://39.106.164.46/problem.php?id=1032思路:如果从每个1开始bfs,是会超时的。所以我们可以从每个0开始bfs,这样就可以减少bfs的次数。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include原创 2020-10-12 14:52:32 · 206 阅读 · 1 评论 -
PIPIOJ 1079: PIPI的存钱罐 完全背包
题目:http://39.106.164.46/problem.php?id=1079思路:题目要求装满,然后又是完全背包。注意初始化时将dp初始化为INF,dp[0]=0即可。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<ve原创 2020-10-12 13:30:10 · 1260 阅读 · 0 评论 -
PIPOJ 1125: PIPI看电视 贪心
题目:http://39.106.164.46/problem.php?id=1125思路:按照结束时间从小到大排序,若相等,则按照开始时间从小到大排序即可。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#原创 2020-10-11 23:31:45 · 328 阅读 · 0 评论 -
PIPIOJ 1172: PIPI的高速公路 贪心
题目:http://39.106.164.46/problem.php?id=1172思路:贪心。我们先将读入的点按x从小到大排个序,若x相等,再按y从小到大排序。之后对于每一个点,我们都可以在x轴上确定一个满足和这个点距离小于等于D的范围。然后我们就只需合并这些范围即可,当两个范围有重合部分,说明可以把出口建立在这个重合部分,反之,就要在每个范围中各建立一个出口。代码如下:#include<iostream>#include<algorithm>#include原创 2020-10-11 23:22:28 · 141 阅读 · 0 评论 -
PIPIOJ 1285: 判定图中是否有环 dfs判环
题目:http://39.106.164.46/problem.php?id=1285代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-11 17:26:17 · 164 阅读 · 0 评论 -
PIPIOJ 1383: 院长PIPI 最大生成树总权值
题目:http://39.106.164.46/problem.php?id=1383思路:求最大生成树的总权值,然后用10000 * (n+m) 减去这个值就是花费最小的代价。这里用的是kruskal算法。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>原创 2020-10-11 16:54:44 · 203 阅读 · 0 评论 -
PIPIOJ 1122: PIPI的比赛 拓扑排序
题目:http://39.106.164.46/problem.php?id=1122思路:简单拓扑排序,注意若符合条件的排名不是唯一的,此时先输出编号小的队伍。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>原创 2020-10-11 16:03:00 · 402 阅读 · 0 评论 -
PIPIOJ 1384: PIPI的飞行路线 分层图dijkstra最短路径
题目:http://39.106.164.46/problem.php?id=1384思路:可以先参考大佬的博客本题就是相当于k=1的情况,然后多了免费航线的限制条件,不是任意两个机场间都可以免费。n比较大,用优先队列优化一下。AC代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include&原创 2020-10-11 14:50:52 · 258 阅读 · 0 评论 -
PIPIOJ 1382: PIPI染色 bfs 01染色
题目:http://39.106.164.46/problem.php?id=1382思路:bfs染色代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#includ原创 2020-10-11 11:35:48 · 213 阅读 · 0 评论 -
PIPIOJ 1147: 贪心
题目:http://39.106.164.46/problem.php?id=1147思路:贪心。要保证结果尽可能小,就要先删除负数,而且要从右往左删除,这样保证每个负数的下标都是尽可能最大的,那么乘积就是最小的,然后从左往右依次删除正数,这样每个正数的下标都是1,代价也是最小的。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#includ原创 2020-10-11 11:10:31 · 90 阅读 · 0 评论 -
PIPIOJ 1115: PIPI的聚会 并查集
题目:http://39.106.164.46/problem.php?id=1115思路:并查集求最大连通分量。注意u,v和n是不一样的,每个人的编号是u,v。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>原创 2020-10-11 01:57:09 · 236 阅读 · 0 评论 -
PIPIOJ 1048: PIPI的请求 map+贪心
题目:http://39.106.164.46/problem.php?id=1048思路:题目要求我们把数组拆成几个恰好包含K个严格上升整数的子数组,而且要求子数组中相邻两数相差为1。 也就是说把A= {1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6} ,K=4,拆成{1,2,3,5},{1,3,4,5},{2,3,4,6}这样是不行的,因为不是连续+1。首先n必须是k的倍数。其次,因为数组已经有序,我们可以用map记录每个数字出现的次数,然后遍历数组,当遍历到第一个数a[原创 2020-10-11 01:12:49 · 421 阅读 · 1 评论 -
PIPIOJ 1323: 区间合并 贪心
题目:http://39.106.164.46/problem.php?id=1323思路:贪心。将左端点按照从小到大排序,然后依次比较合并区间即可。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#incl原创 2020-10-10 23:30:48 · 136 阅读 · 0 评论 -
PIPIOJ 1301: 交换二叉树的左右子树 利用前序建立二叉树
题目:http://39.106.164.46/problem.php?id=1301代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-10 21:52:56 · 132 阅读 · 0 评论 -
PIPIOJ 1100: 诡异的楼梯 有限制的bfs
题目:http://39.106.164.46/problem.php?id=1100思路:bfs虽然题目有楼梯的横竖限制了行走,但不难想到其实可以根据经过时间的奇偶性来判断当前周围楼梯的状态,若面前有楼梯但是不能走,那就原地等一分钟等楼梯转过来能走的时候再走。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue原创 2020-10-10 21:23:28 · 209 阅读 · 0 评论 -
PIPIOJ 1041: 最大子矩阵 前缀和
题目:http://39.106.164.46/problem.php?id=1041代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-10 17:25:23 · 113 阅读 · 0 评论 -
PIPIOJ 1033: 拆字游戏 dfs连通分量
题目:http://39.106.164.46/problem.php?id=1033代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack>#include<map&g原创 2020-10-10 16:59:56 · 146 阅读 · 0 评论 -
PIPIOJ 1072: 漫漫上学路 简单dp
题目:http://39.106.164.46/problem.php?id=1072思路:动手模拟一下然后dp就可以了。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include<cstring>#include<vector>#include<stack&g原创 2020-10-10 16:10:48 · 177 阅读 · 0 评论