[bzoj4866] [Ynoi2017]由乃的商场之旅】的更多相关文章

来自FallDream的博客,未经允许,请勿转载,谢谢, 由乃有一天去参加一个商场举办的游戏.商场派了一些球王排成一行.每个人面前有几堆球.说来也巧,由乃和你一样,觉得这游戏很无聊,于是决定换一个商场.另一个商场是Deus的,他看到由乃来了,于是想出了一个更有趣的游戏:写数据结构题这个题是这样的: 我们的情人,不过是随便借个名字,用幻想吹出来的肥皂泡,把信拿去吧,你可以使假戏成真.我本来是无病呻吟,漫无目的的吐露爱情---现在这些漂泊不定的鸟儿有地方栖息了,你可以从信里看出来.拿去吧---由于不…
显然能重排为回文串相当于出现次数为奇数的字母不超过一个.考虑莫队,问题在于如何统计添加/删除一位的贡献.将各字母出现次数奇偶性看做二进制数,做一个前缀和一个后缀和.在右端添加一位时,更新区间的前缀.后缀集合,将后缀集合中合法的统计入答案即可.另三种更新类似.复杂度O(26*n√n). 但是这个毒瘤题他不仅卡常还卡空间.捣鼓了半天最后欢快地弃疗了. #include<iostream> #include<cstdio> #include<cmath> #include&l…
莫队的一些套路 Description 由乃有一天去参加一个商场举办的游戏.商场派了一些球王排成一行.每个人面前有几堆球.说来也巧,由乃和你 一样,觉得这游戏很无聊,于是决定换一个商场.另一个商场是Deus的,他看到由乃来了,于是想出了一个更有趣 的游戏:写数据结构题这个题是这样的:   我们的情人,不过是随便借个名字,用幻想吹出来的肥皂泡,把信拿去吧,你可以使假戏成真.我本来是无病呻吟 ,漫无目的的吐露爱情---现在这些漂泊不定的鸟儿有地方栖息了,你可以从信里看出来.拿去吧---由于不是出自…
点此看题面 大致题意: 给你一个字符串,每次给你一段区间,问这段区间内有多少个字符串在重新排列后可以变成一个回文串. 关于莫队 详见这篇博客:莫队算法学习笔记(一)--普通莫队. 关于回文 要使一个字符串在重新排列后可以变成一个回文串,其实只有两种情况: 所有字符都出现了偶数次. 只有一个字符出现了奇数次,其余字符都出现了偶数次. 关于状压 我们可以用一个\(26\)位的二进制数\(sum_i\)表示\(1\sim i\)范围内每一个字符出现的次数是奇数还是偶数,并用\(cnt_i\)存储状态\…
设第i个字母的权值为1<<i,则一个可重集合可以重排为回文串,当且仅当这个集合的异或和x满足x==x&-x,用莫队维护区间内有多少对异或前缀和,异或后满足x==x&-x,这样端点移动的代价为字符集大小+1=27,因此时间复杂度为$O(27n\sqrt{m})$ #include<cstdio> #include<cmath> #include<algorithm> ],*ptr=buf-; int _(){ ,c=*++ptr; )c=*++…
「SCOI2014」方伯伯的商场之旅 我一开始的想法会被两个相同的集合位置去重给搞死,不过应该还是可以写的,讨论起来老麻烦. 可以先钦定在\(1\)号点集合,然后往后调整一部分. 具体一点,通过前缀和减去后缀和的正负性移动 写的时候把\(sum\)压进去搞会非常简单 Code #include <cstdio> #include <cstring> #define ll long long ll dp[25][3000];int bit[25],k; ll dfs(int dep,…
「SCOI2014」方伯伯的商场之旅 题目描述 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 \(i\) 的人面前的第 \(j\) 堆的石子的数量,刚好是 \(i\) 写成 \(K\) 进制后的第 \(j\) 位. 现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 \(L,R\).方伯伯要把位置在 \([L, R]\) 中的每个人的石子都合并成一堆石子.每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价…
3598: [Scoi2014]方伯伯的商场之旅 Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 449  Solved: 254[Submit][Status][Discuss] Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的第 j 位. 现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 L,R.方…
题目:洛谷P3286 [SCOI2014]方伯伯的商场之旅 思路 数位DP dalao说这是数位dp水题,果然是我太菜了... 自己是不可能想出来的.这道题在讲课时作为例题,大概听懂了思路,简单复述一下. 首先根据数据范围和部分题意,不难看出是数位dp. 但是和常规的数位dp不同,我们并不知道每个数字最后的集结点. 于是我们不妨钦定所有石子最后都聚在最低位(第一位).此时的总代价记作\(cost\),可以通过一次简单的数位dp得到. 但这样显然不是最优解,对于有的数,石子聚在更高位代价更少.于是…
Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的第 j 位. 现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 L,R.方伯伯要把位置在 [L, R] 中的每个人的石子都合并成一堆石子.每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价是移动的石子数量 * 移动的距离.商场承诺,方伯伯只要完成任务,就给他一些椰子,…
Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的第 j 位. 现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 L,R.方伯伯要把位置在 [L, R] 中的每个人的石子都合并成一堆石子.每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价是移动的石子数量 * 移动的距离.商场承诺,方伯伯只要完成任务,就给他一些椰子,…
Written with StackEdit. Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 \(i\) 的人面前的第\(j\) 堆的石子的数量,刚好是 \(i\) 写成 \(K\) 进制后的第 \(j\) 位. 现在方伯伯要玩一个游戏,商场会给方伯伯两个整数\(L,R\).方伯伯要把位置在 \([L, R]\)中的每个人的石子都合并成一堆石子.每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子…
题目内容 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子. 说来也巧,位置在 \(i\) 的人面前的第 \(j\) 堆的石子的数量,刚好是 \(i\) 写成 \(K\) 进制后的第 \(j\) 位.现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 \(L,R\). 方伯伯要把位置在 \([L,R]\) 中的每个人的石子都合并成一堆石子.每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价是移动的石子数量 \(\times\)…
数位dp,我们肯定枚举集合的位置,但是如果每次都重新dp的话会很麻烦,所以我们可以先钦定在最低位集合,dp出代价,然后再一步步找到正确的集合点,每次更改的代价也dp算就好了. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> #define int long long using namespace std;…
传送门 题意咕咕咕自己读吧挺简单的 思路: 由带权中位数的性质可以得到对于每个数放在每个二进制位的代价一定是个单调或者单峰函数,因此我们先把所有的数都挪到第一个位置,然后依次向右枚举峰点(极值点)把能挪的挪走即可. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; typedef long long ll; int a[62],len=0; ll f[62][1205],L,R; int K; in…
题目链接 先考虑,对于确定的一个数,怎样移动代价最少(或者移到哪个位置最优)? 假设我们都移到下标\(1\)位置(设集合点为\(1\)),那么移动到下标\(2\)与\(1\)相比代价差为:\(下标<1的石子数和-下标>1的石子数和\). 如果它为负,那么把移到\(1\)的代价加上它,令集合点变为\(2\)... 这样一直改变集合点,直到 \(下标<p的石子数和 \geq 下标>p的石子数和\).那么移到\(p\)就是最优的. 这样感觉很对.怎么证明? 我们发现式子左边其实就是前缀和…
http://www.lydsy.com/JudgeOnline/problem.php?id=3598 (题目链接) 题意 Solution 原来这就是极水的数位dp,呵呵= =,感觉白学了.http://www.cnblogs.com/Artanis/p/3751644.html 首先我们考虑集结点设置第一位(最低位)上,数位dp计算出此时的代价. 如果将集结点往高位移动一位,那么此时代价会怎么变化呢,位置比集结点高的数位上的数它们的距离全部-1,位置比集结点低的数位上的数它们的距离全部+1…
看到数据范围就可以猜到数位dp了.显然对于一个数最后移到的位置应该是其中位数.于是考虑枚举移到的位置,那么设其左边和为l,左右边和为r,该位置数为p,则需要满足l+p>=r且r+p>=l.同时为了防止重复,枚举的应该是最左的能移到的位置,那么还需要满足l<p+r.算的时候枚举p.l.r,统计方案数,对于已固定部分直接计入,剩余部分由于每个位置都是相同的,根据距离平均值算出代价.注意讨论各种情况,非常恶心. #include<iostream> #include<cstd…
参考了这个http://www.cnblogs.com/Artanis/p/3751644.html,好像比一般方法好写 大概思想就是先计算出把所有石子都合并到1位置的代价,这样显然有一些是不优的,然后再分别计算把合并到1的石子合并到p,能优化多少 这个计算就是枚举2到tot位,对于每一位计算挪到这位能被优化的数最多能被优化多少,因为合并点右移的代价是sum[w]-(sum[n]-sum[w]),所以只要这个为负数就退出即可 #include<iostream> #include<cst…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 数位DP...东看西看:http://www.cnblogs.com/Artanis/p/3751644.html     https://www.cnblogs.com/MashiroSky/p/6399095.html 好巧妙的思路啊!这样统计的东西就变得很简单了: 好美的 dfs!数位DP用 dfs 好像能变得很清楚. 代码如下: #include<iostream> #in…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 TJ:https://www.cnblogs.com/Zinn/p/9351218.html 核心:先确定一个中心,再考虑变动中心带来的好处. 用dfs实现很清楚.把填到这一位为止带来的代价写进参数里.但dfs的值表示的是把后面的位都填好带来的代价,所以要开long long. 这么一想好像也没啥??? #include<iostream> #include<cstdio&g…
大概想了想,还是有个记录比较好. 9/24 网络流一日游: 最大流:bzoj1711[Usaco2007 Open]Dining 拆点 BZOJ 3993 Sdoi2015 星际战争 二分 P.S.这是昨天晚上的 BZOJ 1189 HNOI2007 紧急疏散evacuate  二分 bzoj2095: [Poi2010]Bridges  二分.最大流判欧拉回路 bzoj3130: [Sdoi2013]费用流 二分最大边 最小割:BZOJ1001: [BeiJing2006]狼抓兔子(直接最小割…
时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数位dp 的介绍 数位 dp 其实就是让你处理出某一区间范围内满足条件的数的个数,但是一般这个区间范围都是令人绝望的大...比如 1e9 都算良心了,常规的都是 1e18 甚至是 1e10n (n 一般为 3 或 5)次这样的... 数位dp 的一般解法 那么我们知道肯定不能在区间内一个个去判断数字是…
数位DP学习笔记 什么是数位DP? 数位DP比较经典的题目是在数字Li和Ri之间求有多少个满足X性质的数,显然对于所有的题目都可以这样得到一些暴力的分数 我们称之为朴素算法: for(int i=l_i;i<=r_i;i++) if(check(i)) ans++; return ans; 所有的算法都是为了减少运算步骤这一个基本原理来优化的,我们考虑这样暴力的优化,显然数的位数上面满足X性质,有些时候X性质并不是单单对于一个数的个体进行限制的 而是在某个限定区域里面的所有数字有一个X的限制,这…
数位dp:处理数字数位关系的一种dp方式. 一般的题目特征十分明显: 1.一般和数字本身有很大关系. 2.一般求数字在区间L,R中的一些信息 3.L,R一般很大,通常能达到long long级别. dp方式也比较有套路: 一般有三种方法: 本质上的相似之处,都是集中在处理“填数有无限制”,“填数无限制情况下的固定方案数”,“某些已经搜出来的固定方案数” 1.记忆化搜索(没用过) 是一种倒着记忆的方法. 2.递推(我基本都是这个方法) 正着递推出答案. 一般会从高位向低位递推,讨论高位的填数方法,…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
(总计:共90题) 3.10~3.16:17题 3.17~3.23:6题 3.24~3.30:17题 3.31~4.6:21题 4.7~4.12:29题 ZJOI&&FJOI(6题) TJOI2016(6题) 六省联考2017(6题) SDOI2016(3题) HNOI2013(6题) CQOI2017(3题) 九省联考2018(3题) 3.10 [BZOJ4552][TJOI2016&&HEOI2016]排序(二分答案+线段树) [BZOJ4012][HNOI2015]开…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
前言:鸣谢https://www.luogu.com.cn/blog/virus2017/shuweidp.感谢大佬orz ----------------------------- [引入] 首先要明白数位DP解决的是什么问题. 问题:求出在$[L,R]$内满足条件$f(i)$的$i$的个数.$f(i)$一般不与数的大小有关,而是与数的组成有关.(数的大小对复杂度的影响很小) [设计搜索] 数位DP一般都用记忆化搜索来实现. 一.记搜过程 从起点向下搜索,到最底层得到方案数,一层一层向上返回答…
打了几个数位$dp$,发现自己除了会打模板之外没有任何长进,遇到非模板题依然什么都不会 那么接下来这篇文章将介绍如何打模板(滑稽) 假设我们要处理$l----r$ 采用记忆化搜索的方式,枚举$<=r$每一种情况,枚举每一位,然后再枚举$<=l-1$每一种情况,然后两个值相减即可 我们可以比较轻松打出一个模板 ll dfs(ll x,ll pre,ll lead,ll limit){ if(x>pos) return 1; if(!limit&&f[x][pre]) ret…