- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 HYSBZ - 1083 (最小生成树)
城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了。每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造。但是市政府的资金有限,市长希望进行改造的道路越少越好,于
2017-07-28 23:04:34 256
原创 UVA 10815 (字符串处理)
题目意思:给你一些文字 包含空格 回车 各种标点然后你从中找到不同的单词 然后输出就好思路 string 排序 然后把不同的扔出来 坑点 排序后的第一个点可能是空行 或者乱七八糟的字符什么的 在输出第一个点的时候千万要判断下 我在这里wa无数次 辛酸~~#include #include #include #inclu
2017-07-28 22:57:25 335
原创 CodeForces - 754B
B. Ilya and tic-tac-toe gametime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIlya is an experienced player in tic-tac-toe on
2017-07-28 22:52:24 436
原创 NYOJ 37 回文字符串
给你一个字符串 然后问你 最少往里添加多少个字母让他变成回文串由于之前做过括号匹配二 所以 看到这道题 就直接往动态规划想了 定义dp[I][j] 为I ~ j中的最大回文数量 什么的 但是想了好久也没有推出来转移方程然后看了下别人写的 看到一句话:翻转字符串 求LCS 于长度作差 既为解 感觉自己在写这道题的时候思维定式 想的太少了#include #inc
2017-07-25 09:18:34 266
原创 NSWOJ 1228 && NYOJ 132 最长回文子串
给你一个字符串 让你求最长回文子串 、个人认为 如果你想尝试用一般的方法 写这道题 需要注意的点有 1 回文长度为12 回文分为奇数长度和偶数长度两种 如果你没用马拉车算法 这个地方很容易出bug这道题讨厌的地方在忽略标点 需要你开另一个数组存储真正求回文的字符串 刚开始我写的非常繁琐 因为要记录字符的对应位置什么的 开了很多变量来储存这些
2017-07-24 23:40:39 324
原创 NYOJ 17 (最长单调递增子序列) O (n*n) + O(n*lgn)
最长单调递增子序列 应该算是比较经典的问题 记录一下我写这道题的过程吧 首先转换成lcs的做法 我就不说了 我觉得很内个啥 你懂吧 就复杂度依然是n方 很麻烦的方法 方法一 动态规划 O(n*n)思路是这样的 定义dp[i] 为在I点结束的最长单调递增子序列的长度 所以可以便利一遍数组 每次都把之前的东西都找一遍 尝试增大 就这样#include
2017-07-22 23:54:22 303
原创 NYOJ 16 矩形嵌套(动态规划 or 贪心)
题目意思很清晰 求最多的嵌套个数 相等不能被嵌套本文提供两种解法 第一种解法对于 矩形边长较小时效果比较好 但是如果矩形边长特别大则不能有效求解第一种解法是dp做的 定义dp[i][j] 为边长为I和j的矩形 最多能嵌套多少个矩形 状态转移过程是这样来的 当前状态是由比当前矩形的宽小一 或者比当前矩形的长小一的两种状态的较大者来的 如果给定的这些矩形中存在一个比当前
2017-07-22 18:02:25 451
原创 NYOJ 15 括号匹配(区间dp)
跟括号匹配(一)截然不同 二 不在考栈的应用了 这道题是一道区间dp 这道题写了很久 自己没写出来 参考了网上超过15篇博客才算是略知一二本文提供两种解法方法一:定义dp[i][j] 为从位置I到位置j所需要的括号数量 状态转移的过程是这样的 枚举I和j 或者长度 如果第I个点和第j个点匹配 那么 dp[i][j] 是不是应该等于min(dp[I][j], dp[I
2017-07-22 15:26:45 394
原创 NYOJ 1159 小猴子下落
这道题是考二叉树的结构的比较容易想到 某个小猴子到达某个点的时候 往左子树还是右子树 取决于他是第几个到达该点的 一颗深度为n的树需要往下走n - 1步 首先这是一颗完全二叉树解题的关键在于 对于一个编号为t的节点 他的左子树的编号为t*2 右子树的编号为t * 2 + 1 这是二叉树的性质 #include using namespace std;
2017-07-21 16:51:16 243
原创 NYOJ 10 Skiing(记忆化搜索)
题目的意思是 给你一个n*m的矩阵 让你从中找出一条最长的递减序列 能走四个方向 上下左右 这道题需要用到 记忆化搜索 普通搜索会超时 记忆化搜索就是在原本记录该点是否到过的数组中保存一些其他信息 比如上一次到这个点的序列长度是多少 或者直接在这个数组中保存答案 两种都可以#include #include #include #inclu
2017-07-21 10:24:57 307
原创 NYOJ 传纸条(一) 双向dp
刚开始的想法是跑两遍dp 第一次找权值最大的路径 然后把走过的路径标记为负无穷大 然后在走一遍就好了 但是后来发现如果要让两次的和最大 那么第一次的路线可能不是最大的一条路 所以并不能这么写 看了别人的题解 题解我都看了两天 真是有意思思路是这样的 我们假设有两个小人从左上角走到右下角 不同路线走 不相交 就代替了这个模型 用一个dp[i][j][k] 来表示
2017-07-20 11:46:07 396
原创 Light OJ - 1282(n^k前三位后三位)
题目是给你n和k 让你求出n的k次方的前三位和后三位 保证了这个数字一定够六位数 后三位数字比较容易算 快速幂取膜就好 前三位数有点麻烦 本来想到一个保存前四位数用类似快速幂取膜的方法 但是发现四位数字有点少 然后改成了6位 发现还是会有误差 参考了下别人写的 发现是用对数做的 先求log10(n^k) 然后取小数部分 因为整数部分是1000..
2017-07-20 09:05:37 326
原创 HDU 3038 How many answer are wrong (并查集)
题目意思大概是这样的 给你一个n和m分别代表在1-n这些区间内给你m组数字 每组有三个值 分表代表从 L 到 R 的和为value 问你互相矛盾的组合有多少个、并查集经典问题 刚开始不理解这道题的解法是什么意思 怎么都看不懂 就背下来了 过了好久才看懂是什么意思 思路是这样的 我们维护两个数组 一个是并查集的fa数组不用多说 另一个是sum数组 这歌数组sum
2017-07-19 10:59:26 358
原创 整数划分(递归)
非常经典的问题 整数划分把一个正整数n划分成一系列真整数的和 求有多少种划分的方式 第一反应就是递归分治写这道题 但是递归方程没有写出来 参考了别人的博客 他讲的很详细这个人的~~递归思路是酱紫的 首先把这个问题从求解n的划分数问题看成把n划分成一系列小于等于n的数字之和有多少种方法我们设f(n , m)为把n划分成一系列数字之和 这些数字都小于m的划分种数;如果n或者m等...
2017-07-18 11:09:24 396
原创 HDU 1723(我认为这到题有点小问题)
这道题其实是比较简单的 DP 当前状态来自前m个状态之和 ,我分别用了递归和动态规划两种写法 虽然他们本质差的不是很多 但是!!重点来了我递归写得代码改了一下午 还是不能ac 我也很无奈 然后换了dp就直接过了 很难受 而且我写了 一个比较两种方法的程序 运行了30*30以内所有的数据 果然没有一组数据不一样 就很奇怪为什么递归版本交上去是错的
2017-07-15 08:38:28 310
原创 NYOJ 873 环之最大和
题目意思很简单 就是让你从n个数字中选取m个连续的数字使和最大 就是这样没错 因为是环状的 所以可以从末尾连到最开始 PS: 如果你觉得写得一定没有错 但还是wa 你可能忽略了 long long 没错 恭喜你!!!(还要注意最后 MOD n)方法一 : 可以用前缀和 遍历一遍得到最大值和边界问题 #include #include
2017-07-14 17:12:43 298
原创 POJ 1276Cash Machine(多重背包 + 二进制优化)
题目大概意思是酱紫的 先给你两个数字 第一个代表目标金钱 第二个代表钞票的种类 (我这么理解的) 然后在给你n组数据 分别代表 某种面值的钞票有多少多少张由于之前做过类似的题目 就没有用直接暴力怼 先加了一个二进制优化 简单讲一下二进制优化是什么意思 :二进制优化:假设面值为1的钞票你有100张 普通做法是在数组中记录两百个1 就会很复杂 二进制优化的思想
2017-07-12 10:38:50 542
area_201901191623.sql
2020-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人