题面

(实名推荐:本题的出题人小哥哥打球暴帅哦!(APIO/CTSC/WC的时候一起打过球w,而且大学在我隔壁喔) )

没仔细看数据范围的时候真是摸不着头脑。。。还以为要 O(N^2) dp 爆锤。。

后来发现v<=20000,这能干啥呢?

至少我的暴力是可以趁机跑过了2333,暴力如下:

我们枚举每一种公差,然后每一轮     先把所有 a[j]-a[i]=公差 的 i在图中连一条到j的边(i<j), 再跑一遍拓扑排序求这种公差的方案数。(因为任意一种选法都可以且仅可以对应到唯一的一轮的建出的DAG(为什么是DAG这个不用证吧。。。)上的一条链,我们直接统计总链数即可)

这里有一点疏忽,因为仅仅一个数构成等差数列这种情况会在每一轮都被算一遍,而我们最后只需要算它一次。一种解决办法是把每轮的答案-n,然后所有算完了之后再+n。

算一下这个暴力的复杂度,O(2*N^2*log(N) + N*V ),后面拓扑排序总边数的 O(N^2)被前面更大的那个复杂度给按下去了,而那个复杂度是因为我懒得写基数排序而多出来的,但因为本题 2*N^2*log(N) 与 N*V 在 N与V同时取到最大值的时候恰好相等,所以我就懒得优化这个玩意了hhhh

#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define pb push_back
const int N=1005,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>=ha) x-=ha;} vector<int> g[N];
int f[N],n,h[N],num,ans,id[N];
struct node{
int x,y,z;
bool operator <(const node &u)const{
return z<u.z;
}
}a[N*600+5]; inline void TSort(){
queue<int> q;
for(int i=1;i<=n;i++) if(!id[i]) q.push(i); for(int x;!q.empty();q.pop()){
x=q.front(),ADD(ans,f[x]);
for(int i:g[x]){
ADD(f[i],f[x]);
if(!(--id[i])) q.push(i);
}
}
} inline void solve(){
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++) a[++num]=(node){i,j,h[j]-h[i]};
sort(a+1,a+num+1); for(int i=1,j;i<=num;i=j){
fill(f+1,f+n+1,1),j=i,memset(id,0,sizeof(id));
for(int i=1;i<=n;i++) g[i].clear(); while(j<=num&&a[j].z==a[i].z) g[a[j].x].pb(a[j].y),id[a[j].y]++,j++; TSort(),ADD(ans,ha-n);
} ADD(ans,n);
} int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",h+i);
solve(),printf("%d\n",ans);
return 0;
}

  

洛谷 P4933 大师的更多相关文章

  1. 【洛谷P4933 大师】动态规划

    题目描述 ljt12138首先建了n个特斯拉电磁塔,这些电塔排成一排,从左到右依次标号为1到n,第i个电塔的高度为h[i]. 建筑大师需要从中选出一些电塔,然后这些电塔就会缩到地下去.这时候,如果留在 ...

  2. 【洛谷4933】大师(DP)

    题目: 洛谷4933 分析: (自己瞎yy的DP方程竟然1A了,写篇博客庆祝一下) (以及特斯拉电塔是向Red Alert致敬吗233) 这里只讨论公差不小于\(0\)的情况,小于\(0\)的情况进行 ...

  3. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  4. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  5. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  8. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  9. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

随机推荐

  1. php 求两个数组的差集应该注意的事情

    对于 phper 来说 array_diff 这个函数应该知道它的用途,获取两个数组的差集,我理解中的差集是这样的 但是执行下代码会发现结果并不是 <?php $a = [1,2,3,4,5]; ...

  2. python 修改文件的创建时间、修改时间、访问时间

    目录 python 修改文件创建.修改.访问时间 方案一 方案二(无法修改文件创建时间) python 修改文件创建.修改.访问时间 突如其来想知道一下 python 如何修改文件的属性(创建.修改. ...

  3. 3.解决git不可用问题

    升级gityum -y update git   配置阿里云yum源yum -y update nssyum -y update nss curl libcurl

  4. docker-get拉取镜像

    docker-get Let you get all docker images without having network problem. Install curl -kLO https://s ...

  5. k8s组件通信或者创建pod生命周期

    Kubernetes 多组件之间的通信原理: apiserver 负责 etcd 存储的所有操作,且只有 apiserver 才直接操作 etcd 集群 apiserver 对内(集群中的其他组件)和 ...

  6. python基础知识0-1

    绝对值:abs age = -19 age.__abs__() 19 相加: add age.__add__() 与运算:and age.__add__() 比较两个数大小:cmp age._cmp_ ...

  7. Oracle 表分区介绍与使用

    什么是表分区 分区表是将大表的数据分成称为分区的许多小的子集,类型有FAT32,NTFST32,NTFS.另外,分区表的种类划分主要有:range,list,和hash分区.划分依据主要是根据其表内部 ...

  8. IntelliJ IDEA 搭建 Go 开发环境

    本文介绍 Windows7 x64 基于 IntelliJ IDEA 搭建 Go 语言开发环境.主要是一些操作过程截图以及简单文字描述,如有不清楚的地方​,欢迎指正.所有软件使用当前(2016.12. ...

  9. 怎样获取xhr的当前状态

    一个XMLHttpRequets实例从创建到发起请求再到获取数据, 期间会有一些中间状态, 这些状态是必要的, 我们可以通过判断这些状态值来进行不同的动作. xhr中获取请求状态的属性是: xhr.r ...

  10. hdu 3500 还是搜索

    这道题目由于每走一步的时候毛毛球是可以变换的 换言之 主体不唯一 所以这里搜索的设计有变化 再就是几个回溯的过程要注意.,.  小心使得万年船 #include <iostream> #i ...