hihocoder Challenge 29 D. 不上升序列】的更多相关文章

这场爆零比赛题目还是要补的 这道题据说是出烂掉的原题,我找了下 CF13.C/ CF371 div1 C,一模一样 我服这群原题大佬 为 当时,使 不严格递增的最小步数,那么 Otherwise 显然是不严格单调递减的曲线 那么我令 ,有个重要的信息,就是斜率是递增的 为的斜率变为0时的拐点对应 大小, 则分类讨论 ,那么必在达到理想状态,和结合为鞋履更陡, ,那么斜率递减,会在一个地方达到交点,必是,那个就是最优点 好吧我还是不太理解,我尽力了,发一下链接,CF371 div1C commen…
我现在就感觉我这人现在真的没有dp的意识 其实真写起来也不难,但是把就是练的少思维跟不上,dp从根本上就是一种状态的提炼和聚集. 按照题解的意思来,表示二进制第i位的值为j(0,1)的组合有多少,然后滚动数组 今天补完之后感觉,除了fft,我懒得抄板子就不补了,其他三题,代码难度都不大.爆零也就算买个教训,希望7.8codem好好打 #include<cmath> #include<map> #include<iostream> #include<cstring&…
这题的题解和我写的有一拼,异常简洁,爆炸. 这题思路dp 表示的是讨论到第位,并比原数的前n位多了 显然j只能取0,1,毕竟2进制嘛 之后转移就好了,注意下面两个重要状态 #include <cstdio> #include <cstring> #include <vector> #include <iostream> #include <queue> using namespace std; const int N = 1e6+5; const…
多打打不同的比赛,找经验啊 题目4 : 不上升序列 时间限制:40000ms 单点时限:2000ms 内存限制:256MB 描述 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 1 的代价给某个 a[i] 加1或者减1. 求最少需要多少代价能将这个序列变成一个不上升序列. 输入 第一行一个正整数 n. 接下来 n 行每行一个非负整数,第 i 行表示 a[i]. 1 ≤ n ≤ 500000 0 < a[i] ≤ 109 输出 一个非负整数,表示答案. 样例解释 [5,3,4…
#1046 : K个串 时间限制:40000ms 单点时限:2000ms 内存限制:1024MB 描述 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次). 兔子们想知道,在这个数字序列所有连续的子串中,按照以上方式统计其所有数字之和,第k大的和是多少. 输入 第一行,两个整数n和k,分别表示长度为n的数字序列和想要统计的第k大的和 接下里一行n个数a_i,表示这个数字序列 输出 一行一个整数…
思路:暴力搜,用BFS的方式,生成每一种可能,再对每一种可能进行判断是否回文,进行统计.严重超时!计算一个25个字符的,大概要20多秒! #include <iostream> #include <deque> #include <string> #include <stdio.h> #include <cstring> using namespace std; deque<string> a; bool isP(string &am…
#1034 : 毁灭者问题 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁灭者的核心技能之一,叫做魔法吸收(Absorb Mana): 现在让我们来考虑下面的问题: 假设你拥有 n 个魔法单位,他们从左到有站在一行,编号从 1 到 n. 每个单位拥有三项属性: si: 初始法力. mi: 最大法力上限. ri: 每秒中法力回复速度. 现在你操纵一个毁灭者,有 m 个操作,…
#1065 : 全图传送 时间限制:30000ms 单点时限:3000ms 内存限制:256MB 描述 先知法里奥是 Dota 系列中的一个英雄.机动性强,推塔能力一流,打钱速度快,传送技能使先知可以全地图支援.在后期比拼中通过强大的兵线控制能力使得对方的兵线一直难以过河,并具有一定的后期 DPS 能力. 我们今天要考虑的是传送技能.假设战场是一个树形区域,每个节点有一个权值 vi.当你传送到某个点 u 时,可以支援距离点 u 半径 r 以内的所有节点.请对于下列询问"u r", 回答…
搞了一上午+接近一下午这个题,然后被屠了个稀烂,默默仰慕一晚上学会SAM的以及半天4道SAM的hxy大爷. 题目链接:http://hihocoder.com/problemset/problem/1413 这个题非常的劲! 首先可以发现,每次只变换一个字符为#,所以每次答案一定会得到相应的包含#的答案,而这个方案是可以直接计算出来的. 假设是$S[i]=$#则会得到$i*(N-i+1)$的子串数. 所以每次的答案可以表示为$sum[root]+i*(N-i+1)-ans[i]$,其中$ans[…
hihoCoder Challenge 23, Prob. A 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 有一个\(n\)个点的无向正权图\(G\),这个图是连通的,小Y知道这些点两两之间的最短路的长度. 小J想要构造一个新的无向正权图\(G'\),使得新图中两两之间的最短路的长度与原图一样,并且边数最少. 输入 第一行一个整数\(n\),表示点的个数. 接下来\(n\)行,每行\(n\)个整数.第\(i\)行第\(j\)个整数表示\(i\)点到\(j\)点的在…
这道题目是hihoCoder Challenge 27的C题,我考虑了5天:(. 计数问题.由于树的结构的特殊性(树具有递归结构),不难想到思路是树形DP.由于这是[计数问题]而非[优化问题],我们思考时应该着重考虑两个基本的计数原理:加法原理与乘法原理,而非所谓[最优子结构]. DP 状态 关于DP状态设计,我的思考过程如下: 指定一节点作为根,转化成有根树.我们考虑子问题: 子树 $v$ 中的路线方案数. 然后考虑 将子树 $v$ 中的所有可能的方案压缩到一个怎样的子空间中能实现从(子树)…
自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\(f(x)\)表示最后一个数小于等于\(x\)的答案,从左往右加入数并维护\(f(x)\). 加入\(A\)的时候\(f(x)\)要加上\(|x-A|\),再对\(f(x-1)\)取min. 显然\(f(x)\)是一个分段函数,而且斜率是连续整数. 于是只需要维护拐点就可以知道函数长什么样.每次就是…
Day_1 计数 它咕掉了 Day_1 序列数据结构 它咕掉了 Day_2 线性代数 高斯消元\Large{高斯消元}高斯消元 普通版:略 模质数:求逆 模合数:exgcd 逆矩阵\Large{逆矩阵}逆矩阵 AA−1=I=[10⋯001⋯0⋮⋮⋱⋮00⋯1] AA^{-1}=I=\left[ \begin{matrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots &…
Day_6 计算几何 点积\Large 点积点积 叉积\Large 叉积叉积 极角\Large 极角极角 < π\piπ :叉积判断 else :atan2 旋转\Large 旋转旋转 左乘第一类正交矩阵 [cos θ−sin θsin θcos θ][cos ωsin ω]=[cos θ cos ω−sin θ sin ωsin θ cos ω+cos θ sin ω]=[cos(θ+ω)sin(θ+ω)]\left[ \begin{array}{} cos\ \theta & -sin\…
Description 在长度为的序列中选出段互不相交的子段,求最大字段和. Input 第一行两个整数. 第二行个整数. Output 一行一个整数表示最大值. Sample Input 5 2 10 -1 10 -1 10 Sample Output 29 HINT Solution 如果序列中正整数个数,直接取最大的个数的和即可. 将序列合并成若干个交错的正负段和,如-1,-2,3,4,-5,-6可以合并成-1-2,3+4,-5-6. 记录所有正数段之和,设正数段个数为,则需要把k段正数段…
2019-01-18 4543: [POI2014]Hotel加强版:长链剖分+树形dp. 3653: 谈笑风生:dfs序+主席树. POJ 3678 Katu Puzzle:2-sat问题,给n个变量赋值(0/1),满足所有等式. POJ 3683 Priest John's Busiest Day:2-sat问题,输出方案. 2019-01-19 1997: [Hnoi2010]Planar:2-sat问题,存在哈密顿路径的图判断是否是平面图. 3495: PA2010 Riddle:2-s…
Orange的数据挖掘工具入门使用 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach删除相应部分. 3)本文档内容涉及配合Python编程语言,介绍Orange数据挖掘工具的简单实用主题. 4)仅仅作为参考用途,抛砖引玉,不作为证据证明用途,请自行取舍,核实引用. 0目录 目录 0目录    1 [1]为什么要写该博文    1 1.1原因    2 [2]数据格式    2 2.…
Source: PAT A1105 Spiral Matrix (25 分) Description: This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasing order. A spiral matrix is filled in from the first element at the upper-left corner, then move…
最短路 NOI2019 D2T1 弹跳 KD 树 线段树套set -> 线段树套并查集? POI2014/2015 ??? \(n\) 个点 \(m\) 条边 DAG.求删掉每个点后 \(1\) 到 \(n\) 最短路. \(n,m\le 3\times 10^5\). 首先明显要先求 \(f_i\) 表示 \(1\) 到 \(i\) 的最短路,\(g_i\) 表示从 \(i\) 到 \(n\) 的最短路. 先考虑一个一个求解. 发现删掉 \(x\) 后,原来拓扑序小于 \(x\) 的点(称作…
CF469E \(n\) 个需要表示的数,请使用最少的 \(2^k\) 或 \(-2^k\) 表示出所有需要表示的数.输出方案. \(n\le 10^5,|a_i|\le 10^5\). 首先每个数肯定都只会被选一次,因为两个 \(1\) 没有一个 \(1\) 一个 \(2\) 优. 然后发现 \(1\) 和 \(-1\) 不会同时选,不如选 \(1\) 和 \(-2\) 或者 \(2\) 和 \(-1\). 考虑缩小问题规模.如果所有数都是偶数,直接全部除以 \(2\).否则一定要在 \(1\…
Python基础教程(第2版 修订版) 目录 D11章快速改造:基础知识11.1安装Python11.1.1Windows11.1.2Linux和UNIX31.1.3苹果机(Macintosh)41.1.4其他发行版本51.1.5时常关注 保持更新61.2交互式解释器61.3算法是什么71.4数字和表达式81.4.1长整数91.4.2十六进制和八进制101.5变量101.6语句111.7获取用户输入121.8函数131.9模块141.9.1cmath和复数141.9.2回到__future__1…
自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集(???). POI 2014/2015 某题 类似于GDOI2019,线段树或者堆直接做. Gym101372 E 首先肯定要缩点. 给每个点赋一个随机权值,然后把每一个点的权值更新成能到的所有的点权值的min. 由于\([0,1]​\)的\(n​\)个随机权值的\(\min ​\)期望是\(\f…
百度网盘:疯狂Python讲义PDF高清完整版免费下载 提取码:uzba 内容简介 <疯狂Python讲义>既是一本适合初学者入门Python的图书(一个8岁的小朋友在未出版前已学习了本书很多章节并动手写出了自己的程序):这也是一本适合Python就业的图书,因为本书涵盖了网络编程.数据分析.网络爬虫等大量企业实用的知识. <疯狂Python讲义>全面而深入介绍了Python编程的相关内容,全书内容大致可分为四个部分,第一部分系统讲解了Python的基本语法结构.Python的函数…
问题:http://hihocoder.com/problemset/problem/1148 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 思路: 1. 将问题转换成求两个日期间有几个闰年 基本公式:闰年数(endYear,startYear) = 闰年数(0, endYear) - 闰年数(0, startYear) 注意点:区间的端点值 2. 闰年的要求 不能被100整除,能被4整除 或能被400整除 3. cnt = [i / 4] 对cnt = [i / 4]取…
github:https://github.com/frank-cq/MyTest 第29题:输入两个整数序列,当中一个序列表示栈的push顺序,推断还有一个序列有没有可能是相应的pop顺序.为了简单起见,我们如果push序列的随意两个整数都是不相等的.比方输入的push序列是 1.2.3.4.5.那么4.5.3.2.1 就有可能是一个pop序列,由于能够有例如以下的push和pop序列:push 1, push 2, push 3, push 4,pop, push 5, pop, pop,…
题目:给定2个整数序列,其中1个是栈的push顺序,判断另一个有没有可能是对应的pop顺序 解:其实这题主要是判断进栈次数和出栈次数誓不是相等.我是用栈作的,效率不高,每一个元素最多出栈1次,进栈1此,所以最多进行2n次操作,然后每次对栈顶元素和pb指针指向的元素进行比较(因为假设序列中整数都不相等) 代码: /* 判断栈push和pop顺序是否符合 push中的元素顺序入栈,如果等于pb指向的元素,那么循环出栈,知道栈空或者pb元素和栈顶元素不一样,如果一样,出栈且pb++,总共的入栈出栈次数…
  时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: 1. 年份能被4整除但不能被100整除 2. 年份能被400整除 输入 第一行为一个整数T,表示数据组数. 之后每组数据包含两行.每一行格式为"month day, year",表示一个日期.month为{"January", "February"…
传送门 斜率优化dp经典题目. 首先需要证明只要选择的K个断点是相同的,那么得到的答案也是相同的. 根据分治的思想,我们只需要证明有两个断点时成立,就能推出K个断点时成立. 我们设两个断点分成的三段连续序列的和为a,b,ca,b,ca,b,c 如果先分左边有:total=a∗(b+c)+b∗c=a∗b+b∗c+c∗atotal=a*(b+c)+b*c=a*b+b*c+c*atotal=a∗(b+c)+b∗c=a∗b+b∗c+c∗a 如果先分右边有:total=(a+b)∗c+a∗b=a∗b+b∗…
Description 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 1 的代价给某个 a[i] 加1或者减1. 求最少需要多少代价能将这个序列变成一个不上升序列. Solution 容易想到一个 \(dp\),设 \(f[x][i]\) 表示前 \(x\) 个数,最小的数不小于 \(i\) 的最小代价 \(f[x][i]=f[x-1][i]+|a_x-i|\) 其实这是两条折线合并的过程,\(|a_x-i|\) 是一条以 \(a_x\) 为拐点的折线,且两条直线的斜率分…
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: 1. 年份能被4整除但不能被100整除 2. 年份能被400整除 输入 第一行为一个整数T,表示数据组数. 之后每组数据包含两行.每一行格式为"month day, year",表示一个日期.month为{"January", "February",…