![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm
klchen0112
这个作者很懒,什么都没留下…
展开
-
Fire Net HDU - 1045
题意: 同一行一列仅能存在一个·blackhouse求最大能放置的blackhouse处好像以前在那看过题解。不太容易联想到是二分图匹配。这题主要难在看出二分图及如何建图。建图方式:将每行连续的empty bord视为一个顶点。每一列也同理。接下来考虑如何标点。对每行每一个顶点从0到15依次标点对每列每一个顶点从16到31一次标点对每行每列进行预处理将其标为最左(右)的顶点以下做法可以减少点数即不...原创 2018-03-07 22:07:38 · 168 阅读 · 0 评论 -
Network of Schools POJ - 1236 kuangbin带你飞 图论 tarjan 联通
题意: taskA: 询问有从给几个学校发送任务可以使全部学校的到软件 taskB: 询问要加入几条边可以使所有强连通分量成为一个强联通分量 思路 tarjan 求强联通分量 对于taskA 显然只需记录有几个强联通分量的入度为零 对于taskB 应为入度为零 出度为零的强联通分量的个数较小值 注意题目保证不存在入度,出度均为0的强联通分量 #include <...原创 2018-06-14 19:21:53 · 113 阅读 · 0 评论 -
Network UVA - 315 kuangbin带你飞 专题九 连通图 图论 tarjan
题意 求割点 tarjan 模板题 #include &lt;map&gt; #include &lt;set&gt; #include &lt;queue&gt; #include &lt;stack&gt; #include &lt;vector&gt; #include &lt;cmath&gt; #i原创 2018-06-16 22:57:48 · 123 阅读 · 0 评论 -
Critical Links UVA - 796 kuangbin带你飞 专题九 连通图 tarjan
题意 求割边 tarjan 模板题 #include <map> #include <set> #include <queue> #include <stack> #include <vector> #include <cmath> #include <cstdio> #include <c原创 2018-06-16 23:01:14 · 122 阅读 · 0 评论 -
Redundant Paths POJ - 3177 kuangbin带你飞 专题九 连通图
题意 询问任意两点相互到达,要添加几条边 思路: tarjan缩点 注意tarjan缩点后形成的树 属于同一个强连通分量的low相同 竟需将树中所有入度为1的强连通分量连接即可 注意应为upper_bound(deg[1] / 2) 及 (ans + 1 ) >> 1 #include <cstdio> #include <cstring&g...原创 2018-06-16 23:14:56 · 122 阅读 · 0 评论 -
Glad You Came hdu 6356
思路 1. 因为是大于区间中的值更新,故可以使用区间最小值进行优化优化 2. 递归更新至叶节点,暴力计算 #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; const int MAX_N = 1e5 + 100; const int MAX_M...原创 2018-08-10 20:11:15 · 114 阅读 · 0 评论 -
poj 3667 Hotel 线段树区间合并
线段树区间合并模板题 注意查询好时的操作 1. 优先查询左子树 1. 当左子树的lsum &gt;= K 返回l 2. 返回左子树r - rsum + 1 2. 返回右子树 被 1 - N 的更新卡了好久,写篇题解记录 #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;algorithm&原创 2018-08-12 23:42:39 · 132 阅读 · 0 评论 -
k短路 k shortest path 入门
K短路求解算法常用的有djstra + A* 和 Yen算法。本文主要讲解djstra + A* 先了解下A*中的估值函数f(n)=g(n)+h(n)f(n)=g(n)+h(n)f(n)=g(n)+h(n),显然我们可以通过记录到达某一点的花费。即如下节点 struct node { int h,g,v; } 不断更新从某一点更新,将其压入优先队列之中。 每取出一个点时需保证其...原创 2018-09-11 21:23:10 · 2122 阅读 · 0 评论 -
codeforces 681
A Good Contest CodeForces 简单题 判断大于2400 并且num1 < num2 #include <iostream> using namespace std; int main() { ios::sync_with_stdio(false); int N; string con; int num1,num2; ...原创 2018-09-11 21:28:26 · 111 阅读 · 0 评论 -
hdu4489-The-King-s-Ups-and-Downs
hdu4489 The King’s Ups and Downs Last Edited: Jan 26, 2019 5:13 PM Tags: acm,dynamic programming 题意 求N个人高矮或矮高依次排列的个数 思路 不妨先排列好i个人显然第i+1个人可以插在中间任何一个位置,若在开头则要求i个人的排列是先上升,若在末尾则要求i个人最后一个人是下降得到的 设DP[i][0] ...原创 2019-01-26 17:16:29 · 194 阅读 · 0 评论 -
Codeforces-429B
Codeforces 429B Last Edited: Jan 26, 2019 7:05 PM Tags: acm,codeforces,dynamic programming 题意 地图n*m个格点,每个格点有个值。当人走到格点时会获得对应的点数。两个人一个从左下角走到右上角,仅能向上向右走。一个从左上走到右下角,仅能向右向下走。有且仅有一个格点会被两个人走过。 思路 四个方向的dp分别计算...原创 2019-01-26 19:08:33 · 183 阅读 · 0 评论 -
Interesting-Array-CodeForces-482B
又是二进制相关的问题 注意如下性质 val[rt] = K 者定有val[rt<<1] & val[rt<<1|1] 为K 这是判断是否合法的依据 一开始想的做法是动态插入,事实上会遇到很多难以处理的问题 看了题解知道正解是将所有约束条件插入,再查询是否合法 显然可以知道对于区间[L,R] 的二进制每一位至少为K的二进制,易得这里是取到了区间最小的解 注意使用laz...原创 2019-04-09 22:18:46 · 147 阅读 · 0 评论 -
Tunnel Warfare HDU - 1540
题意: 1. 从N个村庄(标号1到N)村庄彼此相连,如果未被摧毁 2. 三种操作 - 摧毁第x个vilage - 询问包含x在内最长连续的未摧毁城市个数 - 恢复最后一个城市 节点的定义: 1. start(起点),end(结束点) 2. Mlen(最长长度),Len(以start为起点的最长连续村庄长度),Rlen(以end为结束最右连续村庄的长度) 思...原创 2018-05-24 15:38:40 · 195 阅读 · 0 评论 -
poj2676 2918 3074 3076 Sudoku
poj 2676题意:数独思路:1.dancing link2. dfs(填写每一个九宫格) 加剪枝 回溯 排除已出现的数字( sqr line column) 收缩顺序 优先选取已知数字较多的方块搜索#include <iostream> #include<cstring> #include <cstdio> #define mem(a) memset(a...原创 2018-02-19 19:54:07 · 180 阅读 · 0 评论 -
棋盘游戏 HDU - 1281
中文题面注意建图方式:将行与列看作顶点 棋子所在的位置的行与列所对应的顶点建边#include <iostream> #include <cstring> #include <cstdio> using namespace std; int N,M,K; bool G[105][105]; int V; int match[205]; bool used[205...原创 2018-02-23 15:05:20 · 174 阅读 · 0 评论 -
Frogger POJ - 2253
题意: 求Freedy到Fiona的路径中边权最小值解法一:floyd 92ms 最短路的变形注意 d[i][j] = min(d[i][j],max(d[i][k],d[k][j])); #include <iostream> #include <cstdio> #include <cmath> using namespace std; #define MA...原创 2018-03-05 17:29:21 · 137 阅读 · 0 评论 -
Currency Exchange POJ - 1860
题意:币种兑换寻找是否有正环计算公式 (money - Cost) * Rate思路:spfa_dfs 判正环#include<stdio.h> #include<string.h> #include <vector> using namespace std; const int MAX_V = 200; struct edge {int to; ...原创 2018-03-05 18:09:27 · 182 阅读 · 0 评论 -
Cow Contest POJ - 3660
题意: 给定牛a能打败牛b 求能确定几只牛的排名思路:floyd 传递闭包当一只牛能被打败与能打败牛的总数和为牛的总数减一或没有与其他牛未确定关系时牛的排名可确定#include <iostream> #include <cstdio> #include <cstring> using namespace std; bool martix[101][101];...原创 2018-03-05 18:35:07 · 139 阅读 · 0 评论 -
Candies POJ - 3159
第一道差分约束题意:熊孩纸系列………… A认为B不会比他多c颗糖及candies[B] <= candies[A] + C与d[v] <= d[u] + e.cost 类似#include <iostream> #include <vector> #include <stack> #include <cstring> #includ...原创 2018-03-05 18:50:15 · 136 阅读 · 0 评论 -
昂贵的聘礼 POJ - 1062
中文题面思路:卡在了等级限制一开始只计算mindegreee及仅计算了最低等级。看了别人的题解才知道正确做法。错误原因:列如 第一个搜索的点的地位为 5地位限制为2假设其访问到了地位为3的人,但应为仅限制了mindegree即——若需与地位为6人交易才能寻找到最短路,显然不满足题意思路: 同时限制mindegree maxdegree注意mindegree 初始值应为maxdegree-dlimi...原创 2018-03-05 19:09:23 · 183 阅读 · 0 评论 -
Tram POJ - 1847
题意: 火车从1开到N 每个路口可以改变轨道事火车驶向不同的交叉路口 求改变路口(搬动开关)的最小次数思路:将路口为顶点建边方式 1.原指向的路口权为0 2.后指向路口权唯一使扳动次数尽可能少 故要么不扳要么只搬动一次。因此转化为最短路模型#include <iostream> #include <cstdio> #include <queue> ...原创 2018-03-05 19:29:56 · 267 阅读 · 0 评论 -
Extended Traffic LightOJ - 1074
题意: 求最短路 权为差的立方及存在负权思路: spfa_dfs 判负权 + spfa_bfs 求最短路 TLEspfa 直接判负环 无负环存在输出最小值#include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <qu...原创 2018-03-05 19:39:38 · 147 阅读 · 0 评论 -
The Shortest Path in Nya Graph HDU - 4725
题意:层与层之间移动需耗费C额外边cost 直接给出坑题spfa 可过 但需将queue定义为全局 不然会TLE#include <bits/stdc++.h> using namespace std; const int MAX_V = 200005; struct edge{ int v; int cost; int next; }; struct edge es[2...原创 2018-03-05 20:01:23 · 208 阅读 · 0 评论 -
Layout POJ - 3169
题意: 有的牛之间不能超过一定距离 有的牛之间不能小于一定距离 使第一头牛与最后一头牛距离最大思路:转化为最短路d[a]+ dml <= d[b]abs(d[a] - d[b]) >= dmd d[a] >= d[b] + dmd && (d[b] >= dmd + d[a] -> d [b] - dmd >= d[a])...原创 2018-03-05 20:18:42 · 155 阅读 · 0 评论 -
Rebuilding-Roads-POJ-1947
Rebuilding Roads POJ - 1947 Last Edited: May 27, 2019 7:32 PM Tags: dynamic programming,poj 设定dp[u][j]为以u为根大小为j的最小值 注意dp[u][1] 为1 对于每个节点若考虑去除某个子节点显然其已知的dp[u][j]应加一 对于保留某子节点的情况需考虑当前为j的情况以及其子节点取k个的情况易得...原创 2019-05-27 19:37:46 · 169 阅读 · 0 评论