hihocoder #1529 : 不上升序列】的更多相关文章

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\) 为拐点的折线,且两条直线的斜率分…
描述 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 1 的代价给某个 a[i] 加1或者减1. 求最少需要多少代价能将这个序列变成一个不上升序列. 输入 第一行一个正整数 n. 接下来 n 行每行一个非负整数,第 i 行表示 a[i]. 1 ≤ n ≤ 500000 0 < a[i] ≤ 109 输出 一个非负整数,表示答案. 样例解释 [5,3,4,5] -> [5,4,4,4] 样例输入 4 5 3 4 5 样例输出 2 原题是CODEFORCES 713 div1…
我现在就感觉我这人现在真的没有dp的意识 其实真写起来也不难,但是把就是练的少思维跟不上,dp从根本上就是一种状态的提炼和聚集. 按照题解的意思来,表示二进制第i位的值为j(0,1)的组合有多少,然后滚动数组 今天补完之后感觉,除了fft,我懒得抄板子就不补了,其他三题,代码难度都不大.爆零也就算买个教训,希望7.8codem好好打 #include<cmath> #include<map> #include<iostream> #include<cstring&…
时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个长度为 n 的序列 a[1..n],定义函数 f(b[1..m]) 的值为在 [0,m-1] 内满足如下条件的 i 的数目: b 中前 i 个数异或起来的值小于 b 中前 i +1个数异或起来的值. 对于 a[1..n] 的每个子序列 b[1..m],求f(b[1..m])之和. 输入 第一行一个正整数 n. 接下来一共有 n 行.第 i+1 行包含一个非负整数 a[i]. 1 ≤ n ≤ 105 0 ≤ a[…
这场爆零比赛题目还是要补的 这道题据说是出烂掉的原题,我找了下 CF13.C/ CF371 div1 C,一模一样 我服这群原题大佬 为 当时,使 不严格递增的最小步数,那么 Otherwise 显然是不严格单调递减的曲线 那么我令 ,有个重要的信息,就是斜率是递增的 为的斜率变为0时的拐点对应 大小, 则分类讨论 ,那么必在达到理想状态,和结合为鞋履更陡, ,那么斜率递减,会在一个地方达到交点,必是,那个就是最优点 好吧我还是不太理解,我尽力了,发一下链接,CF371 div1C commen…
题面在这里! 好久没做题啦,养生一下qwq 推一推贡献就会发现这TM就是一个水题啊! #include<bits/stdc++.h> #define ll long long using namespace std; const int N=1e5+5,ha=998244353; inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;} inline void ADD(int &x,int y){ x+=y; if(x>…
思路:暴力搜,用BFS的方式,生成每一种可能,再对每一种可能进行判断是否回文,进行统计.严重超时!计算一个25个字符的,大概要20多秒! #include <iostream> #include <deque> #include <string> #include <stdio.h> #include <cstring> using namespace std; deque<string> a; bool isP(string &am…
问题:详见http://hihocoder.com/problemset/problem/1041 有n个城市,城市编号为1-n,城市间有n-1条路(所以,城市路网是一棵树).给定一个序列S,要求判断是否存在一条路径,使得 从城市 1 开始出发,每条路都需通过2次,最后回到1 对于S中的城市,访问的顺序要从前到后.因为每条路可以走两次,所以这里要求的是第一次经过的顺序 思路:DFS 1. 预处理:找出所有结点的可达结点. 通过这个,我们就可以快速判断某个结点是否在某个子树中.比如下一个的访问目标…
题目链接:http://hihocoder.com/problemset/problem/1039 题意:给定一个只由{A, B, C}组成的字符串s,长度为n, 故包含n+1个空隙:现要求在某个空隙插入一个来自{A, B, C}的字符,然后按照以下“消除规则”对插入后的字符串进行消除操作,问最多能消掉几个字符(包含插入的一个). 消除规则: 1. 自左至右扫描当前字符串,若字符v从某个位置开始连续出现了2次及以上,则此区间内的v全部消除: 2. 重复步骤1直至不再有可消除的字符. 思路:模拟,…
2015北京区域赛现场赛签到题. 题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf OJ链接:http://hihocoder.com/problemset/problem/1258?sid=788340 题意:T组数据,每组为一个长度为n序列,每个元素为下面三种格式之一: C x B x S 其中x为一个正整数,x值从1连续增长到k的一组[C|B]序列视为一个pattern,单独的一个S视为一个pattern…