02 2019 档案
摘要:P2051 中国象棋 题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法。大家肯定很清楚,在中国象棋中炮的行走方式是:一个炮攻击到另一个炮,当且仅当它们在同一行或同一列中,且它们之间恰好 有一个
阅读全文
摘要:P1578 奶牛浴场 题意描述:给若干个点组成的矩阵,和一些障碍点,问不包含这些障碍点或者障碍点在其边界上的矩形的最大面积是多少
阅读全文
摘要:UVA10140 Prime Distance 给定两个整数L,R(1<=L<=R<=2^{31},R-L<=10^6)L,R(1<=L<=R<=231,R−L<=106),求闭区间 [L,R][L,R] 中相邻两个质数的差的最小值和最大值是多少,分别输出这两个质数。 首先我们发现:R-LR−L 的
阅读全文
摘要:POJ3460 Booksort 题意:给定一个长度为n的序列,每次可以取出其中的一段数,插入任意一个位置,问最少需要几次操作才能使整个序列变为1~n 思路:IDA*+迭代加深搜索 小技巧:将一段数插入到另一段,等价于交换相邻的两端 估价函数:每次操作最多改变三个数的后继,统计错误后继的个数再/3即
阅读全文
摘要:P1273 有线电视网 题目描述 某收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。 从转播站到转播站以及从转播站到所有用户终端的信号传输费用都是已知的,一场转播的总费用等于传输信号的
阅读全文
摘要:HDU - 3085 Nightmare Ⅱ 双向BFS,建立两个队列,让男孩女孩一起走 鬼的位置用曼哈顿距离判断一下,如果该位置与鬼的曼哈顿距离小于等于当前轮数的两倍,则已经被鬼覆盖 1 #include <cstdio> 2 #include <queue> 3 #include <algori
阅读全文
摘要:POJ2449 第K短路 改了好长时间发现读入读反了qwq A*,先在反向图上求出每个点到t的最短距离,作为估价函数即可 疑问:能不能直接记录h+g 1 #include <cstdio> 2 #include <cstring> 3 #include <cctype> 4 #include <al
阅读全文
摘要:POJ3635 Full Tank 有n个城市,m条道路,每个城市都有加油站,加油的花费都不一样,在道路上行驶的耗油即为道路权值,给q次询问,问油箱容量为C的车从s到t的最小花费是多少 用当前的城市加剩余的油量表示一个状态,利用优先队列(把花费小的放在队首)即可 注意:城市从0开始编号,优先队列要注
阅读全文
摘要:CH2601 电路维修 双端队列bfs,其实就是因为只有0和1所以可以直接2维护队列单调性(和优先队列一个道理) 建图的过程需要仔细斟酌(想一想id为什么这么写) 还有,空间要开够(很玄学),我一开始N开到600一直过不了,后来必须改到700以上 1 #include <cstdio> 2 #inc
阅读全文
摘要:POJ1475 Pushing Boxes 推箱子,#表示墙,B表示箱子的起点,T表示箱子的目标位置,S表示人的起点 本题没有 Special Judge,多解时,先最小化箱子被推动的次数,再最小化人移动的步数。若仍有多条路线,则按照N、S、W、E的顺序优先选择箱子的移动方向(即先上下推,再左右推)
阅读全文
摘要:CH2401 送礼物 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了。某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_-b),他一次可以搬动重量和在w(w<=2^31-1)以下的任意多个物品。GY希望一次搬掉尽量重的一些
阅读全文
摘要:1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cmath> 5 #include <cctype> 6 #include <cstring> 7 #include <queue> 8 #inclu
阅读全文
摘要:考虑倒过来计算最短路径长度,设dis[u]表示在最坏情况下,点u到最近的一 个出口的最短路,则p个出口的dis值都是0,答案即为dis[0]。 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cma
阅读全文
摘要:POJ3322 Bloxorz I 暴搜,next数组与处理一下(小技巧) 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cmath> 5 #include <queue> 6 #include
阅读全文
摘要:大佬博客 定义克鲁斯卡尔重构树可以维护诸如“查询从某个点出发经过边权不超过某个值的边最远所能到达的节点”或“从某点到某点所有路径的最长边的最小值”之类的问题。总之,算法处理范围有限,且多为同时包含“最大最小”、离线可二分的题目。 可与数据结构结合,以维护更复杂的数据结构。 它可以在线回答,复杂度为O
阅读全文
摘要:P1967 货车运输 思路: 将边权从大到小排序,然后建立最大生成树,在新图上求两个点的lca即可 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 #include <cm
阅读全文
摘要:代码: 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #include <cctype> 7 using namespace std
阅读全文
摘要:代码: 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #include <cctype> 7 #include <vector> 8
阅读全文
摘要:用算法求最大生成树,在并查集合并时,把原本的一个根连向另一个 根改成两个根都连向一个新建的节点,并把当前正在处理的边的权值赋给这个新 节点做点权。这样形成的结构会是一棵树。 一个点的答案大致上是树的根到自己的路径上,相邻两个节点的子树叶节点 数的平方和。需要注意的是父子两个节点权值相同的情况,这个部
阅读全文
摘要:\({\color{coral}{\texttt{ 邪王真眼是最强的!}}}\) \({\color{coral}{\texttt{ 爆裂吧现实————}}}\) \({\color{coral}{\texttt{ 粉碎吧精神——}}}\) \({\color{coral}{\texttt{ 放逐这
阅读全文
摘要:友链: 上一届学长 \(\texttt{Peter_Matthew(张开昕)}\) luogu(deprecated) github \(\texttt{Steven7(尚元睿)}\) luogu(deprecated) coding \(\texttt{Micardi(陈旭坤)}\) luogu(
阅读全文
摘要:UVA529 Addition Chains 题意翻译 题目描述 一个与 nn 有关的整数加成序列 <a_0,a_1,a_2,...,a_m><a0,a1,a2,...,am> 满足以下四个条件:1.a_0=11.a0=12.a_m=n2.am=n3.a_0<a_1<a_2<...<a_
阅读全文
摘要:POJ3076 Sudoku 本题为16*16宫格 剪枝见代码 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 const i
阅读全文
摘要:POJ1011 Sticks 剪枝好题,具体见代码: 1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 #include <cctype> 5 #include <iostream> 6 using namespace
阅读全文
摘要:POJ3074 Sudoku 与POJ2676相比,这一题搜索时每一步都找到最好确定的点进行枚举 对于每行、每列、每个九宫格,都分别用一个9位二进制数保存还有那些数还可以填 对于每个位置,将其所在行、列、九宫格所对应的二进制数进行或运算即可得到该位置能填哪些数,用lowbit运算(取出最低的为1的数
阅读全文
摘要:POJ2676 Sudoku 需要算出第i行第j个所对应得九宫格的编号 据说可以直接算: 3*((i-1)/3)+(j-1)/3+1,蒟蒻不会,只好预处理 1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #include <
阅读全文
摘要:2101 可达性统计 描述 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。N,M≤30000。 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。 输出格式 共N行,表示每个点能够到达的点的数量。 用f(x)表示从x出发能到达的点的集
阅读全文
摘要:POJ1179 Polygon 题意:给出一个多边形,切断一条边,合并剩下的点(合并两个点之后将两个点上的数值按照边上的运算符(‘+’或‘*’)计算即为新的点的权值),求最后的点上得权值最大为多少 由于两个负数相乘可能得出很大的正数,所以只记录最大值是不够的,还应记录最小值 对于第一步删边的操作,我
阅读全文
摘要:POJ1015 Jury Compromise 我们可以将每个候选人的辩控差作为该物品的体积之一,把辩控和作为物品的价值。 因为评价差的总分值最大可能就只有[-400,400],所以我们整体加上20*m #include <cstdio> #include <cstring> #include <i
阅读全文
摘要:转载:大佬博客 IO(读入/输出)优化是很实用&简单的常数优化 (卡常技巧 。C++为了兼容性导致cin、cout慢过天际,对于大量数据的读入和输出往往不堪重负。这个时候使用读入优化、输出优化可以节省数倍的时间。 很多人说Pascal读入快。其实Pascal的读入只比普通cin快(这点确实是碾压),
阅读全文
摘要:转载:大佬博客 最近想到了许多优化spfa的方法,这里想写个日报与大家探讨下 前置知识:spfa(不带任何优化) 由于使用较多 STLSTL ,本文中所有代码的评测均开启 O_2O2 优化 对一些数组的定义: dis[i]dis[i] : 起点到 ii 的最短路径(目前) inq[i]inq[i]
阅读全文
摘要:5104 I-country 在 N*M 的矩阵中,每个格子有一个权值,要求寻找一个包含 K 个格子的凸连通块(连通块中间没有空缺,并且轮廓是凸的,如书中图片所示),使这个连通块中的格子的权值和最大。求出这个最大的权值和,并给出连通块的具体方案。本题有SPJ,输出任意一种方案即可。N,M≤15,K≤
阅读全文
摘要:CH5102 Mobile Service 描述 一个公司有三个移动服务员,最初分别在位置1,2,3处。如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去。某一时刻只有一个员工能移动,且不允许在同样的位置出现两个员工。从 p 到 q 移动一个员工,需要花费 c(p,q)
阅读全文
摘要:P1005 矩阵取数游戏 区间dp,每一行单独处理,因为数据范围比较大所以要用高精或者__int128。 对于每行来说,用f[i,j]表示取完当前行的第i~j个数的最大值,则f[i,j]=max(f[i+1,j]+a[i]*2^(m-(i-j+1)),f[i,j+1]+a[j]*2^(m-(i-j+
阅读全文
摘要:(模板)线段树2 题目描述 如题,已知一个数列,你需要进行下面三种操作: 1.将某区间每一个数乘上x 2.将某区间每一个数加上x 3.求出某区间每一个数的和 第一行包含三个整数N、M、P,分别表示该数列数字的个数、操作的总个数和模数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初
阅读全文
摘要:POJ3666 Making the Grade 题意: 给定一个长度为n的序列A,构造一个长度为n的序列B,满足b非严格单调,并且最小化S=∑i=1N |Ai-Bi|,求出这个最小值S,1<=N<=2000,1<=Ai<=1e9. 引理:在满足S最小化的情况下,一定存在一种构造序列B的方案,使得B
阅读全文
摘要:CH5101 LCIS 题意: 求两个长度不超过3000的序列的最长公共上升子序列 思路: 朴素解法:用f[i,j]表示a1~ai与b1~bj可以构成的以bj为结尾的LCIS的长度,三重循环求解: for(res i=1 ; i<=n ; i++) for(res j=1 ; j<=m ; j++)
阅读全文
摘要:P1158 导弹拦截 思路: 按每个点到第一个系统的距离排序,然后预处理出每个点及其之后的点到第二个系统的距离的最大值,再循环一遍枚举答案。 代码: 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 #include
阅读全文
摘要:P1020 导弹拦截 知识铺垫: upper_bound(f+1,f+n+1,key)-f返回在不降序列f中大于key的第一个元素的下标 lower_bound(f+1,f+n+1,key)-f返回在不降序列f中大于等于key的第一个元素的下标 如果要在非升序列(小于和小于等于)中使用这两个函数,就
阅读全文
摘要:POJ2279 Mr Young's Picture Permutations 描述: 有N个学生合影,站成左对齐的k排,每行分别有N1,N2…NK个人,第一排站最后,第k排站之前。学生身高依次是1…N。在合影时候要求每一排从左到右递减,每一列从后面到前也递减,一共有多少总方案输入每组测试数据包含两
阅读全文
摘要:P1144 最短路计数 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N。问从顶点11开始,到其他每个点的最短路有几条。 输入输出格式 输入格式: 第一行包含2个正整数N,M为图的顶点数与边数。 接下来M行,每行22个正整数x,y,表示有一条顶点x连向顶点y的边,请注意可能有自环与重边
阅读全文
摘要:P3952 时间复杂度 题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确。 A++语言的循环结构如下
阅读全文
摘要:P2540斗地主增强版 参考大佬题解 思路:顺子暴力搜,剩下的牌我不会贪心所以用记忆化搜索(或者dp); 注意:双王不能当对,二不算顺子 代码 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cct
阅读全文