
想法
文章平均质量分 64
HouseFangFZC
oo
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 53 Maximum Subarray
题意:给出一个数字数组,求其中和最大的子串。思路:经典的dp题。对于一个数字,要么把它合并到了之前开始的某个串中,要么从它开始一段新的串。所以,用dp[i]表示包含第i个数字的最大子串和,则dp[i] = max(dp[i -1] + nums[i], nums[i])。换一种想法,如果某个串的和是正数那么它继续增长才是有意义的。所以,可以维护一个子串和,如果子串和为正原创 2017-05-26 09:27:53 · 324 阅读 · 0 评论 -
CodeForces 484D Kindergarten
题意:将含有n(10^6)个元素的序列a划分成几段 每段为连续的一些元素 每段的价值为段中最大值减去最小值 总价值为所有段的价值和 求 最大的总价值思路:不难想到一个dp的转移方程 dp[i] = max( dp[j] + max(a[j+1]...a[i]) - min(a[j+1]...a[i]) ) 但是dp是n^2的会TLE注意观察转移方程 其中的max-mi原创 2014-11-20 13:38:11 · 916 阅读 · 0 评论 -
HDU 3830 Checkers
题意:有三个棋子 可以隔一个棋子跳 不能隔两个跳 问状态u到状态v最少跳几步思路:对于一个状态三个棋子的位置可以设为 x y z (小到大)只有当y-x=z-y的时候 跳的方法为两种 即 y跳过x 或 y跳过z在上式等式不成立时 短的一边可以跳许多次 直到大小关系改变那么这样就形成了二叉树的结构 我们将y向左右跳的状态分别作为原状态的儿子 将两边其原创 2014-10-04 22:06:03 · 1602 阅读 · 0 评论 -
2014多校联合七(HDU 4937 HDU 4938 HDU 4939 HDU 4941)
好几天没写题解了… 都怪我太弱 补题补不动…HDU 4937 Lucky Number题意:一个数字如果只有3456这四种数字组成 那么这个数字是幸运的 问 给出一个x 它在几种进制下是幸运的 如果无穷输出-1思路:分类讨论 如果x是3或4或5或6 那么一定有无穷个进制满足(从十进制开始…) 直接输出-1除去上述情况 那么我们可以将一个数字写成这样 a0 +原创 2014-08-18 17:00:35 · 3271 阅读 · 0 评论 -
2014多校联合八(HDU 4945 HDU 4946 HDU 4948 HDU 4950 HDU 4951 HDU 4952)
HDU 4945 2048题意:给你一堆数字 问有几个子集可以拼出2048思路:拼数字的规则相当于让数字乘二 所以不是2^i的数字不会拼出2048 那么这些数可选可不选 即为2^cnt种可能之后只要计算出有几个子集不可能拼出2048即可 不过简单的直接dp是2048*100000的复杂度的 会TLE所以要变成先枚举元素 再枚举该种元素个数 再枚举2048种状态原创 2014-08-18 18:49:38 · 1801 阅读 · 1 评论 -
Codeforces Round #262 (Div. 2) (460A 460B 460C 460D)
460A Vasya and Socks题意:n个物品每天用一个 m天得一个 问 最多连续用几天思路:没思路… 就是暴力…代码:#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){原创 2014-08-26 15:59:10 · 1231 阅读 · 0 评论 -
2014多校联合十(HDU 4972 HDU 4973 HDU 4974 HDU 4975)
HDU 4972 A simple dynamic programming problem题意:篮球比赛有1、2、3分球 现给出两队的分差序列(5:3 分差2 3:5分差也是2) 问有多少种可能的比分思路:比较简单的想法题 可以类一张表“从分差x到分差y一共有几种情况” 很容易发现只有1->2和2->1的时候会多一种情况 其他均是一种 所以只需要统计这种特殊分差即可 注原创 2014-08-26 15:35:12 · 1129 阅读 · 0 评论 -
CodeForces 451D Count Good Substrings
题意:一个只包含a和b的字符串 问 它有几个长度为偶数和长度为奇数的“压缩回文串” 压缩的概念是 相邻的相同字符压缩成一个字符思路:串经过压缩一定满足如下形式 ……ababab…… 那么这样只要两端的字符相同则中间一定是回文的 因此对于一个a它作为左端点形成的回文串个数就等于它右边的a的个数 那么长度是奇数还是偶数呢 可以这么判断 如果a在奇数位置上和它匹配的a也在奇原创 2014-08-09 19:28:59 · 1069 阅读 · 0 评论 -
2014多校训练九(HDU 4960 HDU 4961 HDU 4965 HDU 4968 HDU 4969 HDU 4970)
HDU 4960 Another OCD Patient题意:给你一串数字 相邻x个数字合并成一个数字(相加)有一定代价 问 最少花费多少使得串变成回文串思路:读完题感觉像dp 数据范围也像 就开始想怎么表示状态 最简单的应该想到dp[i][j]表示i到j区间变成回文串的最小花费 状态想好了想做法 考虑将串分成AAAABBBBBBBCCC三段 即所有A合成一个数字原创 2014-08-19 20:06:13 · 2212 阅读 · 2 评论 -
SGU 553 Sultan's Pearls
题意:一串珍珠 可以从头或者尾偷窃 但要保证悬挂的珍珠的数量不变 珍珠保持悬挂状态要求重量满足题中的式子 问 最大偷窃多少价值思路:关注悬挂的珍珠 由于偷窃从头或者尾进行 所以末状态悬挂的珍珠一定是原串中一段连续的珍珠那么如果知道悬挂的珍珠是哪一段 就可以利用二分查找桌上放多少珍珠能使得串不滑下去 这样二分的结果前面的珍珠就都可以偷根据上述分析 可以枚举悬挂原创 2014-10-18 20:39:35 · 1212 阅读 · 0 评论 -
SGU 543 Cafe
题意:n个队伍 每队ai个人 每张桌子有t个位置 坐在每张桌子上的人必须至少有一个同队的人 问 最少需要多少桌子思路:由于这题的限制只有同桌同队一个 自然想到坐的时候应该两两成组去坐 不过有些队伍可能是奇数人数 这样会分出一些3来在考虑桌子 明显我们比较喜欢偶数座位的桌子 毕竟人在分组时候2的组比3的组常规一些 如果桌子是奇数座位 我们希望先坐下一组3人原创 2014-10-19 10:20:35 · 1056 阅读 · 0 评论 -
CodeForces 487A Fight the Monster
题意:打怪兽游戏 我的血量hpy、攻击atky、防御defy 怪兽的血量hpm、攻击atkm、防御defm 每秒我损失血量max(0,atkm-defy) 怪兽损失血量max(0,atky-defm) 如果某一时刻我活着怪兽死了 算我胜利 购买1点hp花费h购买1点atk花费a购买1点def花费d 问最少多少花费能保证胜利 题目中数字均小于100思路:数字很小想到原创 2014-11-26 11:25:07 · 1075 阅读 · 0 评论 -
LeetCode 48 Rotate Image
题意:将一个正方形矩阵顺时针旋转90度。思路:2种方式——1.正常想法 —— 先对角线对称,再左右对称。 代码9ms。2.迷之规律 —— 在正方形里面画一个叉,分成的4个三角形相互替换。 代码6ms。代码:/** * 迷之规律 —— 在正方形里面画一个叉,分成的4个三角形相互替换。 6ms */class Solution {public:原创 2017-05-25 19:48:42 · 313 阅读 · 0 评论 -
LeetCode 45 Jump Game II
题意:给出一个步长数组nums,如果一个人站在i这个点上那么他可以向右最多走nums[i]步,求从左端点走到右端点的最少步数。思路:如果点x可以用dp[x]步到达,那么[ x + 1, x + nums[x] ]区间内的点都可以用dp[x] + 1步到达。利用这个想法,可以O(n)的求出走一步可以到达哪些位置,走两步可以到达哪些位置,以此类推。代码:clas原创 2017-05-25 18:55:34 · 298 阅读 · 0 评论 -
LeetCode 42 Trapping Rain Water
题意:给出一个代表高度的数组,求出由它组成的形状能储存多少体积的水。(下例中蓝色表示水)思路:本题有O(nlogn)排序解法和O(n)单调栈解法。排序解法——从大到小的排序数字,然后按顺序放置到数轴上。因为储水的高度取决于一段区间左右两端最高的高度,所以处理高度的方式是从大到小。对于当前需要安放的数字,如果它在之前安放的最左和最右两个位置之内,则答案中需要减去一部分原创 2017-05-24 19:15:14 · 441 阅读 · 0 评论 -
LeetCode 41 First Missing Positive
题意:求给出的一串数字中的最小的缺失的连续正整数。要求时间复杂度O(n),空间复杂度O(1)。思路:虽然不能排序,但是连续正整数这个性质比较特殊,举例来说:假设扫描数字串的时候遇到一个3,那就把它放在第3个位置。那么当把所有的数字都放好之后,从前到后扫描数字串,最先断开的地方就是答案。代码:class Solution {public: int fir原创 2017-05-24 18:11:40 · 246 阅读 · 0 评论 -
LeetCode 11 Container With Most Water
题意:数组A中第i个元素A[i]表示一块两端在(i,0)和(i,A[i])的板,从中选出2块板,使得它们与x轴围成的桶装水体积最大。思路:因为装水体积只和矮的板有关,因此我们从高到低的考虑板子,这样当前考虑的板子A[i]就是装水的高度。高度确定时,让桶尽量的宽。可以用l和r表示已经考虑过的板子的x坐标的最小和最大值。若l r,则桶宽i - l。代码:/原创 2017-01-09 15:25:48 · 330 阅读 · 0 评论 -
Codeforces Round #310 (Div. 1) A B C D题
本题解包含题目:555ACase of Matryoshkas555BCase of Fugitive555CCase of Chocolate555DCase of a Top Secret原创 2015-07-10 09:55:06 · 1077 阅读 · 0 评论 -
Codeforces Round #200 (Div. 2)
打算从200开始刷到现在的 谢谢思路就好了A:和上一次输入不一样就ans++B:每次找两个最大的匹配一些C:假设现在电阻为x/y 串连时变为(x+y)/y 并联时变成 y/(x+y) 可见同样消耗1个电阻 形成的新值互为倒数 这个结论允许我们将电阻值的分子分母随意换(不影响使用电阻总数) 明显电阻值>1的时候 我们采取串联一定整数的电阻 因此可以得出方法 电阻>1时原创 2015-03-14 10:42:25 · 823 阅读 · 0 评论 -
CodeForces 501D Misha and Permutations Summation
题意:n(2*10^5)个元素的排列有n!种 用Perm(x)表示字典序第x的序列(从0开始) 用Ord(排列y)表示排列y的字典序 现在输入排列p和q 求 Perm([Ord(p)+Ord(q)]%n!)思路:容易想到 对于第i位p[i] 如果它是第d小的数字 那么说明比它小的d-1个数字所产生的全排列都已经计数过了例子 35142 第4位是4 它是第2小的原创 2015-01-12 21:08:02 · 1513 阅读 · 0 评论 -
CodeForces 446B DZY Loves Modification
题意:k次操作 每次选择一行或一列 得到所选数字的和 并将所选数字同时减去p 问最多得到多少思路:重点在消除行列间的相互影响由于每选一行所有列所对应的和都会-p 那么如果选了i次行 则列会-i*p 同理选列那么影响就可以这样表示 -p*i*(k-i) 把影响提出来 这样行列就不影响了对于行或列 单独处理时相当于一维的东西 贪心即可代原创 2014-07-15 18:29:23 · 1208 阅读 · 0 评论 -
2014多校联合五(HDU 4911 HDU 4915 HDU 4920)
HDU 4911 Inversion题意:n个数字 通过k次相邻交换 使得逆序对数最少思路:如果序列为 XXXABYYY 假设A和B位置互换 易知X和AB、Y和AB的逆序对数不变 换句话说一次交换最多使逆序对减少1 那么只需要求原逆序对数和k进行比较即可HDU 4915 Parenthese sequence题意:?可以代表(或) 那么输入的字符串能构造出几种合法的括号序列呢 输出无解、唯一解、多解思路:这题是我YY的… 首先我们可以计算出(和)应该填几个 如果计算出?不满足我原创 2014-08-05 19:32:08 · 1488 阅读 · 0 评论 -
CodeForces 404E Maze 1D
题意:一个机器人在数轴上的0点 给一串指令机器人按照指令走 为了使机器人最后一步走到一个从来没来过的位置 我们可以在数轴上放石头 每次机器人被石头卡住他就跳过当前的那个指令 问 最少使用石头前提下 一共几种放石头方法思路:很容易想到如果最后一个指令是L 那么机器人一定会停在0点的左边 因为如果停在右边 最后一步一定走在之前来过的位置上 同理最后一个指令是R原创 2014-03-28 17:12:45 · 1193 阅读 · 0 评论 -
CodeForces 398A Cards
题意:a个o b个x 排在一条线上 排列的得分计算方法是 连续y个o就+y^2 连续y个x就-y^2 问 最大得分和排列方式思路:直接想到xxooooox这种排列的方式 然后交 然后WA - -b看了下题解才意识到 增加o的份数虽然会影响+的分 但是可以缩小-的分 (我之前一直认为分开o不好…)然后就是枚举o的份数即可 x的份数能比o多就多一份原创 2014-03-08 10:21:13 · 1000 阅读 · 0 评论 -
CodeForces 400E Inna and Binary Logic
题意:n个数字m个操作 n个数组堆成一个金字塔 a[i][j](表示第i行第j个数)=a[i+1][j] & a[i+1][j+1] (反正就是一个三角形… 不懂自己读读题…) 每次操作修改最底层的一个数字 问 整个金字塔的数字的和是多少思路:数据很大就算建树也是n-1的高度 所以我放弃这个方向由于题目中都是位运算 所以自然思路往位上面偏 想到每个元素最原创 2014-03-07 21:29:40 · 1178 阅读 · 0 评论 -
CodeForces 390C Inna and Candy Boxes
题意:n个盒子 里面有糖或什么都没有 w个询问 每次询问区间[l,r] 这个区间的盒子是不是每隔k个空盒子有一个装糖的盒子 如果不是 输出有几个对应的盒子是不同的思路:由于常数k是一开始给定的 那么可以将原序列按照%k方法分组 x[i][j]记录%k=i的部分中从头到j位置的糖果数那么每次询问的答案就是[l,r]中 该有糖的地方没糖+不该有糖的地方有糖原创 2014-02-13 16:48:27 · 955 阅读 · 0 评论 -
CodeForces 388C Fox and Card Game
题意:n堆卡片 每堆si张 两个人博弈拿卡片 他们都采用最优方式 先手只能拿某堆的顶 后手只能拿某堆的底 问最后比分思路:纯考脑子题 想通无难度…想象两种情况: 1、先手想拿某堆超过一半 2、后手想拿某堆超过一半对于1: 后手只需要跟着先手 先手拿哪堆他就拿哪堆 那么先手的企图一定会被阻止对于2: 先手快一步 一定可以阻止后手结论: 两个原创 2014-02-12 15:33:10 · 885 阅读 · 0 评论 -
CodeForces 370C Mittens
题意:n个人 每人有一副手套(左右手同样颜色) 现在他们可以随便找人交换手套(左手只能换左手) 问 最多几个人所带的手套是不同色的 输出任意一种方案思路:一开始以为是二分图问题 无奈n太大了 TLE这题其实是想法题 设 num[i] 为带i颜色的手套的人数 mx 为最大的num所对的i如果 n-num[mx]如果 n-num[mx]>num[mx原创 2014-02-23 19:43:07 · 923 阅读 · 0 评论 -
CodeForces 374A Inna and Pink Pony
题意:将(x,y)以四种方式移到棋盘任意一脚 求 最小步数思路:数据大不能bfs 四种移动方式可归结为两种 (a,b)和(-a,-b)一类 (a,-b)和(-a,b)一类 然后解方程x+ak+aj=aimx , y+bk-bj=aimy 解出k和j但是有解不代表能走 因为可能某一步走出棋盘外 所以还需要判断一下再更新答案对于x和y方向 总有一个原创 2014-02-22 18:59:16 · 967 阅读 · 0 评论 -
CodeForces 375A Divisible by Seven
题意:一堆数字一定包含1、6、8、9 可以任意调整顺序 最后排成的数字要求被7整除思路:1、6、8、9一定有古怪… 所以假设它们就是后四位 前面所有位%7剩下的数字无非0~6 写程序打表发现很神奇的现象 对于每种余数总有一个排列可以让它被7整除注意处理0 反正都能整除就记录0的个数然后写在最后代码:#include#include#i原创 2014-02-22 19:03:53 · 1025 阅读 · 0 评论 -
ZOJ 3715 Kindergarten Election
题意:n个人投票 唯一一个票数最多的人当选 1想当选 他可以通过给别人糖让不选他的人选他 问 最少需要多少糖思路:由于n比较小 可以枚举1当选时得了多少票 这样就可以贪心的使用糖如果1当选时有i票 那么所有人都要先保证选票数保证上述条件下 如果1票数已经超过i 则说明这次枚举是失败的 如果不到i 就尽量少用糖补到i代码:#incl原创 2014-04-02 20:08:48 · 1129 阅读 · 0 评论 -
CodeForces 405C Unusual Product
题意:一个N*N的元素为0或1的矩阵 它可以求出N个值 第i个值为 x[i][1]*x[1][i] + x[i][2]*x[2][i] + ... + x[i][n]*x[n][i] 然后N个值的和再mod2为矩阵的val 现在有10^6个操作 操作为求矩阵的值或者是矩阵的一行或一列所有元素异或1 每次求矩阵的值时输出思路:可以把矩阵的值写成表达式val = (原创 2014-03-25 21:47:07 · 635 阅读 · 0 评论 -
USACO Section 4.3 Letter Game
题意:每个字符有个价值 yi原创 2014-05-15 20:39:20 · 791 阅读 · 0 评论 -
HDU 4889 Scary Path Finding Algorithm
题意:构造一幅图 使题中给出的程序按该图执行 最终变量doge大于输入的C跳出思路:出题人思维简直神了! 实在是膜拜! 借题解的图:按照图中所画 可以继续向右延伸为何这样可以?? 为何边权要这么取??先回答第二个问题:取负数是为了可以不断的去更新 例如如果走了上面的-4那条边 那么它右边的所有点就又可以再更新一次 这样使更新达到了指数级原创 2014-07-30 21:00:48 · 2074 阅读 · 0 评论 -
HDU 4149 Magic Potion
题意:a[i] ^ x = f[i] ( i = 1...8 ) 和 ( a[1] + a[2] + ... + a[8] ) ^ x = f[9] 现在f为已知 求x思路:从低位到高位确定x值 做法见注释代码:#include#include#includeusing namespace std;int f[20],t,ans;int mai原创 2014-07-03 18:14:59 · 1401 阅读 · 0 评论 -
HDU 4814 Golden Radio Base
题意:把一个10进制数变成 x进制数 x = (1+√5)/2思路:比赛时候就被无理数进制吓傻了 其实完全没必要 因为 n = n * 1 = n * x^0由于x的0次幂等于1 所以完全可以把n当成对应的x进制数的个位 现在要做的就是把这个数转化成二进制题目给出的公式可以在两边同时乘x的若干次幂 那么这两个式子就变成了x^(i+1) + x^i =原创 2014-06-30 21:13:17 · 1245 阅读 · 0 评论 -
CodeForces Round #257 (Div. 2)
题目:A Jzzhu and Children ------ CodeForces 450AB Jzzhu and Sequences ------ CodeForces 450BC Jzzhu and Chocolate ------ CodeForces 449AD Jzzhu and Cities原创 2014-07-20 15:39:39 · 1373 阅读 · 0 评论 -
CodeForces 425A Sereja and Swaps
题意:一串数字 最多可以做k次交换数字 求 最大连续和是多少思路:n^2暴力枚举所有区间 那么如果要换数字 一定是从区间外拿大数换区间内的小数 优先队列可以完成操作原创 2014-07-17 20:02:04 · 1217 阅读 · 0 评论 -
CodeForces 425B Sereja and Table
题意:一个充满0和1的矩形 最多将k个数字翻转 问 最少翻转几个数字可以使所有0或1的连通块都是矩形 如果不可能输出-1思路:首先 如果确定了一行 那么整个矩形就确定了因为在最后的状态中 每一行要么与确定的行完全一致 要么完全相反 这才能保证连通块都是矩形然后 本题k很小 因此可以分类讨论如果 max(n,m)<=k 那么可以暴力枚举第一行状态 进而计算翻转次数 最多只有2^10种情况否则 max(n,m)>k 那么至少有一行或者一列是没有被修改的 那么可以枚举原创 2014-07-17 19:55:32 · 1113 阅读 · 0 评论 -
CodeForces 444A DZY Loves Physics
题意:一幅图 找出原创 2014-07-15 18:26:54 · 875 阅读 · 0 评论