【洛谷P2470】[SCOI2007]压缩】的更多相关文章

题意 题目链接 Sol 神仙题Orz 考虑区间dp,如果我们只设\(f[l][r]\)表示\(s_{lr}\)被压缩的最小长度,而不去关心内部\(M\)分布的话,可能在转移的时候转移出非法状态 因此考虑多加一维表示当前子串中有没有\(M\)(默认第一个字符为\(M\)不统计在内) 转移的时候就考虑不同的\(M\)对当前区间的贡献就可以. \(P\)的作用实际上是将两个相同的字符串合成一个,拿hash判一下 复杂度\(O(n^3)\) #include<bits/stdc++.h> #defin…
bzoj1068 洛谷P2470 区间dp入门题?只要注意到每个M“管辖”的区间互不相交即可 错误记录:有点小坑,比如aaaacaaaac最优解为aRRcR(意会坑在哪里),踩了一次 #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<cassert> using namespace std; #define fi first #defi…
(许久不见,甚是想念) 压缩技术[传送门] 洛谷上滴算法标签: 然而这是一道入门难度的题.(不管不管,就写它了) 好的先说一下思路吧wait!我忘记了咋做的当时. 首先做题第一道坎儿,如何输入若干个(不知道具体数值)的数.这个时候我们要灵活的利用字符来做:(突然想说我定义的“空格”字符的意义.dy微分了解一下) char dy=' ';//定义一个“空格”字符 ;//定义i用来记录输入了几个数 while(dy==' ')//当输入数据后输入空格,程序继续.若为回车则退出输入 { cin>>a…
(题目来自洛谷oj) 一天,maze决定对自己的一块n*m的土地进行修建.他希望这块土地共n*m个格子的高度分别是1,2,3,...,n*m-1,n*m.maze又希望能将这一些格子中的某一些拿来建蓄水池,即这个格子的高度应该比它周围8个格子的高度都小(超出土地范围的格子的高度算作无穷大).现在,请你帮maze计算:他有多少种不同的修建土地的方案数? (请你将方案数对12345678取模) 输入 输入第一行两个数字n,m. 接下来N行,每行M个字符,’.’表示普通格子,’X’表示蓄水池. 输出…
压缩 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define MAXN 55 #define INF 0x3f3f3f3f #define mid ((l+r)>>1) ]; //不妨处理每个子串时,我们都在它的前面放一个M,最后答案长度-1即可 //f[l][r][0]表示子串[l,r]中除了前面的M,串中还存在其他的M的最短长度 //f[l][r…
传送门 dalao们怎么状态都设的两维以上啊?qwq 完全可以一维状态的说 设\(f[i]\)为前缀i的答案,转移就枚举从前面哪里转移过来\(f[i]=min(f[j-1]+w(j,i))(j\in [1,i])\) 现在要知道\(w(i,j)\)怎么写,也就是区间\([i,j]\)的最小长度(要求区间最多只能在开头有一个W),首先不压缩的长度就是原长度,然后压缩的话先要在开头加W,然后每次压缩一个最长的可以拆成两个相同串的前缀,压缩完后长度会加上1(后面接R),减去那个前缀的一半长度,然后那个…
P2053 [SCOI2007]修车 题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小. 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间. 输入输出格式 输入格式: 第一行有两个数M,N,表示技术人员数与顾客数. 接下来n行,每行m个整数.第i+1行第j个数表示第j位技术人员维修第i辆车需要用的时间T. 输出格式: 最…
https://www.luogu.org/problem/show?pid=1124 题目背景 提高文件的压缩率一直是人们追求的目标.近几年有人提出了这样一种算法,它虽然只是单纯地对文件进行重排,本身并不压缩文件,但是经这种算法调整后的文件在大多数情况下都能获得比原来更大的压缩率. 题目描述 该算法具体如下:对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由将S的前i-1个字符置于末尾得到.然后把这n个字符串按照首字符从小到大排序,如果两个字符串的首字符相等,则按照它们在S…
传送门 区间dp,记\(dp(l,r,t)\)表示区间\((l,r)\),\(t\)表示这个区间中能不能放\(M\).如果可以,枚举中间哪里放\(M\)来压缩.也可以不压缩,后面直接跟上去.如果左右重复的,尝试压缩一下,那么循环节里是不能放的 //minamoto #include<bits/stdc++.h> using namespace std; const int N=55,inf=0x3f3f3f3f; char s[N];int f[N][N][2],n; bool same(in…
P1124 文件压缩 题目背景 提高文件的压缩率一直是人们追求的目标.近几年有人提出了这样一种算法,它虽然只是单纯地对文件进行重排,本身并不压缩文件,但是经这种算法调整后的文件在大多数情况下都能获得比原来更大的压缩率. 题目描述 该算法具体如下:对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由将S的前i-1个字符置于末尾得到.然后把这n个字符串按照首字符从小到大排序,如果两个字符串的首字符相等,则按照它们在S中的位置从小到大排序.排序后的字符串的尾字符可以组成一个新的字符串…
传送门 题目描述 是不是平时在手机里玩吃豆豆游戏玩腻了呢?最近MOKIA手机上推出了一种新的围豆豆游戏,大家一起来试一试吧游戏的规则非常简单,在一个N×M的矩阵方格内分布着D颗豆子,每颗豆有不同的分值Vi.游戏者可以选择任意一个方格作为起始格,每次移动可以随意的走到相邻的四个格子,直到最终又回到起始格.最终游戏者的得分为所有被路径围住的豆豆的分值总和减去游戏者移动的步数.矩阵中某些格子内设有障碍物,任何时刻游戏者不能进入包含障碍物或豆子的格子.游戏者可能的最低得分为0,即什么都不注意路径包围的概…
题意 题目链接 Sol 跟我一起大喊:n方过百万,暴力踩标算! 一个很显然的思路是枚举\(H, S\)的最小值算,复杂度\(O(n^3)\) 我们可以把式子整理一下,变成 \[A H_i + B S_i \leqslant C + AminH + BminS\] 首先按\(H\)排序 考虑去从大到小枚举\(AminH\),同时用个vector \(n^2\)维护\(S\)序列(直接\(lowerbound + insert\)) 再从大到小枚举\(BminS\),同时用堆维护\(AH_i + B…
题目传送门 降雨量 题目背景 07四川省选 题目描述 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003,2004和2005年的降雨量分别为4920,5901,2832和3890,则可以说“2005年是自2003年以来最多的”,但不能说“2005年是自2002年以来最多的”由于有些年份的降雨量未知,有的说法是可能正确也可以不正确的. 输入输出格式 输入格式: 输入仅一行包含一个正整数n…
题解 最小费用最大流 n和m是反着的 首先, \[ ans = \sum{cost[i][j]}*k \] 其中,\(k\)为它在当前技术人员那里,排倒数第\(k\)个修 我们可以对于每个技术人员进行拆点, 对于每个技术人员的各个点,表示倒数第几次修 然后每个人连向技术人员,显然花费是根据连的点来算的 然后就是二分图带权最小匹配了 我只会Dinic Code #include<bits/stdc++.h> #define LL long long #define RG register usi…
题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小. 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间. 输入输出格式 输入格式: 第一行有两个数M,N,表示技术人员数与顾客数. 接下来n行,每行m个整数.第i+1行第j个数表示第j位技术人员维修第i辆车需要用的时间T. 输出格式: 最小平均等待时间,答案精确到小数点后2位…
题目链接: https://www.luogu.org/problemnew/show/P2472 分析: 这道题用最大流解决. 首先构建模型. 一根柱子可以跳入和跳出,于是拆成两个点:入点和出点. 每一根柱子的入点和出点连一条流量为高度的边,来限制蜥蜴跳入的次数. 当柱子a可以调到柱子b时,就从a的出点向b的入点连边,流量inf. S向所有有蜥蜴的柱子的入点连边,流量为1 T表示地图外一点,当一根柱子能跳到地图外时,则出点向T连流量为inf的边. 然后跑最大流即可. 这里要注意数组的范围以及拆…
题目链接: 蜥蜴 题目分析: 一道网络流,先来分析一下问题: 在一个\(r*c\)的图中分布了一些数,其他地方都用\(0\)填充,我们分别从指定的一些数出发,每次可以移动到周围距离为\(d\)以内的数上(或图外),原来的数会被\(-1\),任何时候数不能为负.各个数走法之间互相影响.问至多有多少个数出发能到达图外? 把这个题的限制条件列出来一下吧: 每个石柱只能站一只蜥蜴 每个石柱最多被经过其高度次 石柱与石柱之间,石柱与图边界之间要距离小于等于\(d\)才能到达 首先我的角度是以每个石柱本身的…
本机AC提交RE…… 传送门:QAQQAQ 题意:自己看 思路:据说这道题用RMQ做很快,但这道题线段树是可以的 线段树维护一段区间最左年,最右年,是否有间隙和区间最大值 这道题分类讨论是一大难点,主要分为以下几种情况: 1.AB均不确定,输出maybe 2.A确定B不确定: 若A是A到B最大的,输出maybe 否则输出false 3.A不确定B确定: 若B是lower_bound(A)到B最大的,则输出maybe 否则输出false 4.A确定B确定 若B是A+1到B最大的,A是A到B最大的,…
正解:网络流 解题报告: 传送门$QwQ$ 一个很妙的建图,,,说实话我麻油想到$QwQ$ 考虑对每个工人建$n$个点,表示这是他修的倒数第$i$辆车,就可以算出影响是$t\cdot i$,然后对每辆车和这$n\cdot m$个节点连边,跑个费用流就做完辣$QwQ$ 具体港下怎么建图$QwQ$? 就考虑建两排点,左侧是$n\cdot m$个点表示工人,右侧是$n$个点表示车.然后$S$和工人之间连流量为1费用为0的边,工人和车连流量为1费用为$t\cdot i$的边,车和$T$连流量为1费用为0…
Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最 小. 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间. Input 第一行有两个m,n,表示技术人员数与顾客数. 接下来n行,每行m个整数.第i+1行第j个数表示第j位技术人 员维修第i辆车需要用的时间T. Output 最小平均等待时间,答案精确到小数点…
P1052 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,…,L(其中L是桥的长度).坐标为0的点表示桥的起点,坐标为L的点表示桥的终点.青蛙从桥的起点开始,不停的向终点方向跳跃.一次跳跃的距离是S到T之间的任意正整数(包括S,T).当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥. 题目给出独木桥的长度L…
洛谷1052 dp 状态压缩 传送门 (https://www.luogu.org/problem/show?pid=1052#sub) 做完这道题之后,感觉涨了好多见识,以前做的好多状压题目都是将一维压成一个数,一直感觉状压本质就是位运算来保存状态,这道题给了一个全新的思路,通过裁剪无用的状态来有效的减少状态量,从而使空间和时间达到要求 初看题目感觉还是挺简单的,但是1e9的使得线性dp无论空间还是时间都难以接受,考虑如何减少状态量 发现题目中石子的数量只有100个,而且每次跳跃的距离小于10…
洛谷 P1052 过河 思路部分可以看这篇博客 我将在这里对其进行一些解释与补充 首先我们先看题 乍一看 这不是模板题吗 然后开开心心的敲了一个简单dp上去 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> using namespace std; const int maxn=1e6; inline int rea…
传送门 洛谷 Solution 考虑把每一个修车工人拆成\(n\)个点,那么考虑令\(id(i,j)\)为第\(i\)个工人倒数第\(j\)次修车. 然后就可以直接跑费用流了!!! 代码实现 /* mail: mleautomaton@foxmail.com author: MLEAutoMaton This Code is made by MLEAutoMaton */ #include<stdio.h> #include<stdlib.h> #include<string…
洛谷1377 M国王 (SCOI2005互不侵犯King) 本题地址:http://www.luogu.org/problem/show?pid=1377 题目描述 天天都是n皇后,多么无聊啊.我们来一道m国王游戏吧!    题目是这样的,在n*n的格子里放m个国王,使他们不互相攻击,有多少种放法呢?(可以为0)    国王的攻击力大不如皇后,他只能对与他相邻的8个格子产生攻击. 输入输出格式 输入格式: n,m 输出格式: 方案数 输入输出样例 输入样例#1: 1 1 输出样例#1: 1 说明…
洛谷题目传送门 先膜一发yyb巨佬 orz 想学ac自动机的话,推荐一下yyb巨佬的博客,本蒟蒻也是从那里开始学的. 思路分析 裸的AC自动机,这里就不讲了.主要是这题太卡时了,尽管时限放的很大了...... 用传统方法匹配时,每走到一个新位置,都是要统计答案的.怎么统计呢?暴力跳\(fail\),把沿路上能够产生答案的算上,直到跳到根才停下来.这里的时间复杂度是 \(O(70N)\),在有多组数据的情况下其实是很吃亏的.(蒟蒻用了\(fread\),根据目测,最大的一个点输入大小在\(30MB…
洛谷P4363 一双木棋 chess 省选最水的一道题了. 且看我数个月AC一道题...... 具体是这样的:我们发现这个下了棋的地方一定形成一个锯齿形,那么怎么状态压缩呢? 维护轮廓线! 从左下角出发,向上为1,向右为0即可. 然后我们就开心的DP…等等这按照什么顺序DP啊!!好,那么我们退而求次,记忆化搜索!然后就没有然后了… 需要注意的地方: 记得判断max还是min 二进制位运算一如既往的烦人 DFS起点和终点的处理 求最大差值,转化为加A减B即可 那么我们调了一年后终于A了!! #in…
Problem 洛谷P2342-叠积木 Accept: 373   Submit: 1.1k Time Limit: 1000 mSec    Memory Limit : 128MB Problem Description 约翰和贝西在叠积木.共有30000块积木,编号为1到30000.一开始,这些积木放在地上,自然地分成N堆.贝西接受约翰的指示,把一些积木叠在另一些积木的上面.一旦两块积木相叠, 彼此就再也不会分开了,所以最后叠在一起的积木会越来越高.约翰让贝西依次执行P条操作,操作分为两种…
题目链接 https://www.luogu.org/problemnew/show/P1396 题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小明被带到了t区,而自己在s区. 该市有m条大道连接n个区,一条大道将两个区相连接,每个大道有一个拥挤度.小明的妈妈虽然很着急,但是不愿意拥挤的人潮冲乱了她优雅的步伐.所以请你帮她规划一条从s至t的路线,…
洛谷题目传送门 动态点分治小白,光是因为思路不清晰就耗费了不知道多少时间去gang这题,所以还是来理理思路吧. 一个树\(T\)里面\(\sum\limits_{v\in T} D_vdist(u,v)\)取到最小值的\(u\)我们可以称作带权重心.类似重心各种性质的证明过程,我们不难证出这样的点顶多只有两个. 如果\(e\)都是正数的话比较好做.类比重心性质,新带权重心一定在原带权重心和修改点之间的路径上,可以直接像首都(蒟蒻题解)那样用LCT维护以带权重心为根的树,修改时提出链二分查找出新带…