洛谷 P4933 大师
(实名推荐:本题的出题人小哥哥打球暴帅哦!(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 大师的更多相关文章
- 【洛谷P4933 大师】动态规划
题目描述 ljt12138首先建了n个特斯拉电磁塔,这些电塔排成一排,从左到右依次标号为1到n,第i个电塔的高度为h[i]. 建筑大师需要从中选出一些电塔,然后这些电塔就会缩到地下去.这时候,如果留在 ...
- 【洛谷4933】大师(DP)
题目: 洛谷4933 分析: (自己瞎yy的DP方程竟然1A了,写篇博客庆祝一下) (以及特斯拉电塔是向Red Alert致敬吗233) 这里只讨论公差不小于\(0\)的情况,小于\(0\)的情况进行 ...
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
随机推荐
- 小白学PYTHON时最容易犯的6个错误
最近又在跟之前的同学一起学习python,一起进步,发现很多测试同学在初学python的时候很容易犯一些错误,特意总结了一下.其实这些错误不仅是在学python时会碰到,在学习其他语言的时候也同样会碰 ...
- php gd实现简单图片验证码与图片背景文字水印
1.让水印文字铺满图片: 大致效果: 代码: <?php function appendSpreadTextMark($imageDir, $markText) { $fontFile = &q ...
- Windows安全日志
在运行中输入:eventvwr.msc,即可打开事件日志. 登录类型 描述 2 互动(键盘和屏幕的登录系统) 3 网络(即连接到共享文件夹从其他地方在这台电脑上网络) 4 批处理(即计划任务) 5 服 ...
- 微信小程序 路由跳转 异步请求 存储数据,微信登录接口
1小程序路由跳转 wx.switchTab(Object object) 这里的tabBar是底下的导航栏指定的页面 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 tabBar l ...
- Django Rest Framework 安装
1. 环境要求 Python (3.5, 3.6, 3.7): 查看 python版本:python -V Django (1.11, 2.0, 2.1, 2.2) 查看django版本:pip li ...
- python-gitlab 统计代码行数
需求:根据时间段,统计各个研发提交的代码行 实现逻辑:调用原生gitlab接口太复杂,引用python-gitlab 获取commit详情,然后进行统计 ======================= ...
- Java并发与多线程教程(3)
Java中的锁 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂.因为锁(以及其它更高级的线程同步机制)是由synchronized同步 ...
- 解决设置了display:none的元素,会先展示再隐藏
问题:元素明明设置了display:none,但是在刷新页面的时候却会先显示了出来,然后才会隐藏,实现display:none 原因:由于元素渲染的时候,样式还没有应用上去,导致的 解决办法:使用内联 ...
- 网页免费转换为可编辑的PDF
Chrome自带的"打印"功能中,另存为PDF 可选择保存选中的内容.如果浏览器/网络出错,不能纠正.(推荐0) https://www.printfriendly.com (有C ...
- Redis分布式缓存安装和使用
独立缓存服务器: LinuxCentOS Redis版本: 3.0 下面我们针对于Redis安装做下详细的记录: 编译和安装所需的包: #yum install gcc tcl创建安装目录:贵州中医肝 ...