「10.12」木板(数学)·打扫卫生(神仙DP)
A. 木板
一个很简单的数学题,简单推一下就好,路丽姐姐教你学数学。
将式子化出我们发现只需求出$i\times i/n$的个数
那么我们将$n$质因数分解,可知因子个数
为了整除$n$,令$i==\sqrt{n\times k} $,我们需要让$k$含有$n$中奇数个数的因子
然后同时还可以有其他的平方因子,直接爆求即可。
思路积累:
1.对于求$i\times i/n$可以从$n$的因子上下手
B. 打扫卫生
一个$DP$的大神题,考场被各种剪枝cao过
$ \%\%\%\%\%kx,Duanyue $线段树$AC$
$n^2$DP显然不说了
正解:
首先记清几个数组的定义:
$pre_{i}$表示当前遍历情况下权值为$i$的点的最近出现的位置
$pos_{j}$表示当前从$pos_{j}+1$到$i$之间不同的数字小于等于$j$的位置
$cnt_{j}$表示当前从$pos_{j}+1$到$i$之间不同的数字个数
然后分析题意,因为最坏情况下,我们分$n$段权值为$n$
所以对于每段的数字个数我们不能取过$\sqrt{n}$;
那么我们考虑转移:
但我们添加一个新的数时
假如他的$pre_{a_{i}}$大于当前枚举的$pos_{j}$,那么$a_{i}$已经不是第一次出现了
所以对$cnt_{j}$没有贡献
但是假如小于等于的话....显然此时$cnt_{j}++$可能大于$j$,所以此时$pos_{j}$要移动
那么在移动时我们要让$cnt_{j}--$,所以我们应该找到第一个$pre_{a_{pos_{j}}}$等于$pos_{j}$的
因为这样意味着我们将$pos_{j}$移到此处时,正好减去了一个元素,使元素不在$pos_{j}+1$到$i$出现
复杂度证明:
每个指针即每个$j$有$\sqrt{n}$个且最多移动$n$次。
#include<bits/stdc++.h>
#define MAXN 41000
using namespace std;
int read(){
int x=0;char c=getchar();int ff=1;
while(c<'0'||c>'9'){if(c=='-')ff=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
return x*ff;
}
int pre[MAXN],cnt[MAXN],pos[MAXN],f[MAXN];int n,m;
int a[MAXN];
signed main(){
memset(f,0x3f3f3f,sizeof(f));
f[0]=0;
n=read();m=read();
for(int i=1;i<=n;++i)a[i]=read();
for(int i=1;i<=n;++i){
for(int j=1;j<=sqrt(n);++j){
//printf("pre[%d]=%d\n",a[i],pre[a[i]]);
if(pre[a[i]]<=pos[j]){
cnt[j]++;
if(cnt[j]>j){
pos[j]++;
while(pre[a[pos[j]]]>pos[j]){
pos[j]++;
}
cnt[j]=j;
}
}
f[i]=min(f[pos[j]]+cnt[j]*cnt[j],f[i]);
//printf("f[%d]=%d pos[%d]=%d\n",i,f[i],j,pos[j]);
}
pre[a[i]]=i;
}
printf("%d\n",f[n]);
}
思路积累
1.考场能减的枝一定要减,万一A了呢.....
2.对于题意性质转化,因为有很多区间的值的贡献是一样的,因为题中答案是$cnt^2$,考虑枚举$\sqrt{n}$的值
「10.12」木板(数学)·打扫卫生(神仙DP)的更多相关文章
- 「10.19」最长不下降子序列(DP)·完全背包问题(spfa优化DP)·最近公共祖先(线段树+DFS序)
我又被虐了... A. 最长不下降子序列 考场打的错解,成功调了两个半小时还是没A, 事实上和正解的思路很近了,只是没有想到直接将前$D$个及后$D$个直接提出来 确实当时思路有些紊乱,打的时候只是将 ...
- 「GXOI / GZOI2019」宝牌一大堆 (DP)
题意 LOJ传送门 题解 可以发现「七对子」 和 「国士无双」直接暴力就行了. 唯一的就是剩下的"3*4+2". 考试的时候写了个爆搜剪枝,开了O2有50pts.写的时候发现可以D ...
- LOJ #2541. 「PKUWC 2018」猎人杀(容斥 , 期望dp , NTT优化)
题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_ ...
- 「10.8」simple「数学」·walk「树上直径」
A. Simple 本来以为很难,考场瞎推了推好像会了...... 想起小凯的诱惑,迷?? 首先$n$,$m$,$q$同除$gcd(n,m)$,显然$q$以内的数假如不是$gcd$的倍数,那么一定不能 ...
- 2018.10.19 bzoj1584: Cleaning Up 打扫卫生(线性dp)
传送门 dp妙题. 考虑到每个位置分一组才花费nnn的贡献. 因此某一段不同的数的个数不能超过sqrt(n)sqrt(n)sqrt(n),于是对于当前的位置iii我们记pos[j]pos[j]pos[ ...
- 「10.29」数列(exgxd)·数对(线段树优化DP)·最小距离(最短路,树上直径思想)
好久没碰到这么友好乱搞的题了.... A. 数列 考察的是exgcd的相关知识,最后的答案直接O(1)求即可 B. 数对 本来以为是原题,然后仔细看了看发现不是,发现不会只好乱搞骗分了 事实上直接按$ ...
- 「10.28」Dove 打扑克(链表)·Cicada 与排序(概率)·Cicada 拿衣服(各种数据结构)
A. Dove 打扑克 考场思考半天线段树树状数组,没有什么想法 打完暴力后突然想到此题用链表实现会很快. 因为只有$n$堆,所以设最多有$x$个不同的堆数,那么$x\times (x-1)/2==n ...
- 「10.14」小P的2048(模拟)·小P的单调数列(性质,DP)·小P的生成树(乱搞)
A. 小P的2048 模拟.....又没啥可说的,以后要认真打打模拟题了... B. 小P的单调数列 考场$n^2log(n)$的SB思路有人听吗 正解当然不是这样, 事实上我们每次选取的只有一段区间 ...
- 「10.13」毛一琛(meet in the middle)·毛二琛(DP)·毛三琛(二分+随机化???)
A. 毛一琛 考虑到直接枚举的话时间复杂度很高,我们运用$meet\ in\ the\ middle$的思想 一般这种思想看似主要用在搜索这类算法中 发现直接枚举时间复杂度过高考虑枚举一半另一半通过其 ...
随机推荐
- IO异步,读写压缩文件,监控文件系统
这节结尾IO,讲一下异步操作文件,读写压缩文件,监控文件系统这三个知识点. 异步操作文件: 说到异步,必然要了解的是async和await这两个关键字(异步详情点击基于任务的异步编程(Task ...
- Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)
A.In-game Chat 题目:就是从后面数连着的'('的个数是不是严格比剩下的字符多 思路:水题,直接从后往前遍历即可 代码: #include<iostream> #include ...
- Python数模笔记-NetworkX(2)最短路径
1.最短路径问题的常用算法 最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径. 1.1 最短路径长度与最短加权路径长度 在日常生活中,最短路径长度与最短路径距离好像并 ...
- VS·.Net WCF多项目调试方法
阅文时长 | 0.12分钟 字数统计 | 252.8字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·.Net WCF多项目调试方法』 编写人 | SCscHero 编写时间 | ...
- 使用gulp搭建项目
项目源码地址 前期准备工作 首先确保本机安装了 node gulp中文文档 安装 gulp 命令行工具 npm install --global gulp-cli 在项目目录下创建 package.j ...
- iozone测试方法-20191008
iozone 一.简介 磁盘设备之上是文件系统,测试磁盘的工具往往就是调用驱动块设备驱动的接口进行读写测试.而文件系统的测试软件就是,针对文件系统层提供的功能进行测试,包括文件的打开关闭速度以及顺 ...
- 064.Python开发虚拟环境
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题:亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难.此时,我们需要对于不同的工程使用不同 ...
- shell基础之变量及表达式
本节内容 1. shell变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 1 ...
- IDEA中配置maven 全解析教程(Day_08)
每一个你讨厌的现在,都有一个不够努力的曾经. 一.选择一个maven的版本下载 本文中 maven 下载链接:(apache-maven-3.5.2.rar) https://files-cdn.cn ...
- SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解
SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...