雨水从黑云降临到了人间 果实脱落枝叶吸收于地面 时间流逝再也回不到从前 曾经珍藏回忆变成不可逆爱恋

news/2025/11/19 20:04:18/文章来源:https://www.cnblogs.com/chelsyqwq/p/19243865

test42

寻雾启示

首先最终的走法一定是找到位置序列 \(p_1,\dots,p_m\) 满足 \(p_i<p_{i+1},p_m=n\) 然后依次铺羊毛到 \(p_i\),为了不思考那么多,我们设 \(f_i\) 表示铺到 \(i\) 回到 \(1\) 的最小时间,转移显然是 \(f_i=\min\{\max(f_j,ik)+2t_1j+(i-j)(t_1+t_2)\}\),没有除了最开始那个 \(\max\{f_j,ik\}\) 没有 \(i,j\) 复合的项,独立出来看作常数,然后 \(f_j\) 显然 \(\uparrow\),所以我们可以双指针扫出两种贡献的区间,前面那个前缀 \(\max\),后面那个用 multiset 找出最大常数。

#include<bits/stdc++.h>
#define int long long
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)using namespace std;const int N=100005, inf=1e18;int T, m, k, t1, t2, f[N];void mian() {cin >> m >> k >> t1 >> t2, t1+=t2;int j=1, ran=0;multiset<int> coel;coel.insert(inf);up(i,1,m) {while(j<i&&f[j]<i*k) {coel.erase(coel.find(f[j]+(2*t2-t1)*j));ran=min(ran,(2*t2-t1)*j++);}f[i]=min(ran+i*k,*coel.begin())+i*t1;coel.insert(f[i]+(2*t2-t1)*i);cout << f[i]-t2*i << ' ';}cout << '\n';
}signed main() {ios::sync_with_stdio(0);cin.tie(0);cin >> T;while(T--) mian();return 0;
}

青年晚报

题面写的真的好恶心。

首先发现 \(f/g\) 贡献独立,当成俩问题,自己多抄写几次,然后把算式组合意义一下,可以看作每个点有一个 \([0,m]\) 的初始等级,每次可以直接 \(\times 1\) 走到下一层,或者根据层数的 \(\text{odd/eve}\) 下降等级 \(\times (+/-)rk\) 走向下一层,注意等级始终在 \([0,m]\)

那我们想想怎么考虑 \(f_i\to (F/G)_j\) 的贡献,首先 \(j\leq i\),等级下降绝对值系数有一个 \(\frac{i!}{j!}\),然后还想知道选择下降位置的系数,这个容易预处理出来,枚举走 \(l/r\)\(+/1\) 用组合数乘正负然后贡献给 \(dp_{l+r}\) 即可。

#include<bits/stdc++.h>
#define int long long
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)using namespace std;const int N=5005, P=1e9+7;int n, m, f[N], g[N], F[N], G[N], mul[N], inv[N];
int l[N], r[N], sav[2][N];inline int C(int x,int y) {if(y<0||x<y) return 0;int u=x-n/2, val=1;if(sav[u][y]) return sav[u][y];up(i,x-y+1,x) val=val*i%P;up(i,1,y) val=val*inv[i]%P;return sav[u][y]=val;
}inline void add(int &a,int b) { a=(a+b)%P; }signed main() {ios::sync_with_stdio(0);cin.tie(0);mul[0]=inv[0]=inv[1]=1;up(i,1,5000) mul[i]=mul[i-1]*i%P;up(i,2,5000) inv[i]=inv[P%i]*(P-P/i)%P;cin >> n >> m;up(i,0,m) cin >> f[i];up(i,0,m) cin >> g[i];up(i,0,m) {int L=n/2+(n%2==1), R=n/2;up(j,0,i) add(l[i],C(L,j)*C(R,i-j)%P*(j%2==0?1:-1));}up(i,0,m) {int L=n/2, R=n/2+(n%2==1);up(j,0,i) add(r[i],C(L,j)*C(R,i-j)%P*(j%2==0?1:-1));}up(i,2,5000) inv[i]=inv[i-1]*inv[i]%P;up(i,0,m) up(j,0,i) {int v=l[j]*mul[i]%P*inv[i-j]%P*f[i]%P;if(n%2==0) add(F[i-j],v); else add(G[i-j],v);}up(i,0,m) up(j,0,i) {int v=r[j]*mul[i]%P*inv[i-j]%P*g[i]%P;if(n%2==0) add(G[i-j],v); else add(F[i-j],v);}up(i,0,m) cout << (F[i]%P+P)%P << ' '; cout << '\n';up(i,0,m) cout << (G[i]%P+P)%P << ' '; cout << '\n';return 0;
}

寻宝游戏

如果 \(l+1=r\),那么必须同时操作俩,如果是 \(1,1\) 需要 \(1\) 次,如果是 \(1,2\) 答案是 \(-1\),别的都会变成 \(len=3\) 的问题,我们只用下面考虑 \(len\geq 3\) 的怎么做(虽然我写代码的时候很蠢地对这个进行了分类讨论)。

我们希望把所有的泡面扔到一个目标桶里面,我们分类考虑一下,首先目标桶一定是最大的 \((\text{odd/eve})a_i\),设去掉这个桶之后最大的桶有 \(sec\) 桶、总和为 \(sum\)

  • \(2|sum\),理想型。
  1. \(sec\leq sum-sec\),那么 \(\frac{sum}{2}\) 次得了。
  2. \(sec>sum-sec\),那么 \(sec\) 是下界,并且操作 \(sec\) 次是可以做到的,\(sec-\frac{sum}{2}+\frac{sum}{2}\) 说是。
  • \(2\nmid sum\),不算理想(?

    此时必须调整目标桶,不然奇偶性永远对不上,然后就变成上面那种了喵 >w<

#pragma GCC optimize(1,2,3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)using namespace std;const int N=300005, M=21, inf=1e18;int Pluto, n, T, q, a[N], s[N], odd[N][M], eve[N][M], fc[N], lg[N];inline int Odd(int l,int r) {if(l>r) return 0;int k=lg[r-l+1], x=odd[l][k], y=odd[r-(1<<k)+1][k];return a[x]>a[y]?x:y;
}inline int Eve(int l,int r) {if(l>r) return 0;int k=lg[r-l+1], x=eve[l][k], y=eve[r-(1<<k)+1][k];return a[x]>a[y]?x:y;
}int ran(vector<int> sav) {int res=0;for(int u:sav) if(a[u]>a[res]) res=u;return res;
}void mian() {cin >> n >> q, T=log2(n);up(i,1,n) {cin >> a[i];fc[i]=fc[i-1]+(a[i]==1);s[i]=s[i-1]+a[i];odd[i][0]=(a[i]%2==1?i:0);eve[i][0]=(a[i]%2==0?i:0);}up(j,1,T) up(i,1,n-(1<<j)+1) {int x=odd[i][j-1], y=odd[i+(1<<j-1)][j-1];odd[i][j]=(a[x]>a[y]?x:y);} up(j,1,T) up(i,1,n-(1<<j)+1) {int x=eve[i][j-1], y=eve[i+(1<<j-1)][j-1];eve[i][j]=(a[x]>a[y]?x:y);}while(q--) {int l, r, p, sum, sec, ans=inf;cin >> l >> r;if(l==r) { cout << 0 << '\n'; continue; }if(fc[r]-fc[l-1]==r-l+1) { cout << (r-l+1)/2 << '\n'; continue; }if(l+1==r) {l=a[l], r=a[r];if(r<l) swap(l,r);if(l==1) {if(r==1) { cout << 1 << '\n'; continue; }if(r==2) { cout << -1 << '\n'; continue; }p=r-2;if(p==1) cout << 3 << '\n';if(p==2) cout << 4 << '\n';if(p>2) cout << 5 << '\n'; }else {--l, --r;if(l==1) {if(r==1) cout << 2 << '\n';if(r==2) cout << 3 << '\n';if(r>2) cout << 4 << '\n';continue;}if(l==2) { cout << 3 << '\n'; continue; }if(l==r) { cout << l+1 << '\n'; continue; }if(l%2==1) cout << 2+max(l-1,(l+3)/2) << '\n';else cout << 1+max(l,(l+2)/2) << '\n';}continue;}if(p=Odd(l,r)) {sum=s[r]-s[l-1]-a[p];sec=a[ran({Odd(l,p-1),Eve(l,p-1),Odd(p+1,r),Eve(p+1,r)})];int res=max(sum/2,sec);if(sum%2==1) res=max((sum+1)/2,sec-1)+1;ans=min(ans,res);}if(p=Eve(l,r)) {sum=s[r]-s[l-1]-a[p];sec=a[ran({Odd(l,p-1),Eve(l,p-1),Odd(p+1,r),Eve(p+1,r)})];int res=max(sum/2,sec);if(sum%2==1) res=max((sum+1)/2,sec-1)+1;ans=min(ans,res);}cout << ans << '\n';}
}signed main() {ios::sync_with_stdio(0);cin.tie(0);up(i,1,3e5) lg[i]=log2(i);cin >> Pluto;while(Pluto--) mian();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/970342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高州市胃癌手术专家选择指南:茂名陈医生专业医学背景+丰富临床经验+精湛手术技术!

高州市胃癌手术专家选择指南:茂名陈医生专业医学背景+丰富临床经验+精湛手术技术!随着胃癌发病率上升,寻找一位技术精湛、经验丰富的胃癌手术专家成为茂名高州地区患者及家属的核心诉求。面对“专家信息难辨”、“技…

c#构建日报

日期​ 2005.11.19 今日工作时长​ 360 分钟​ 核心工作内容​ 执行 GitHub 项目分支变基操作(git rebase),解决代码冲突后推进变基流程;​ 处理多人协作中远程分支更新导致的本地代码同步问题;​ 恢复误操作丢失…

linux ftp 修改密码

在 Linux 系统中,FTP(File Transfer Protocol) 本身并不是一个直接支持修改用户密码的协议。通常,FTP 服务器(如 vsftpd、ProFTPD 等)会通过配置文件(如 /etc/vsftpd.conf 或 /etc/proftpd/proftpd.conf)来管理…

linux ftp shell

你提到的“Linux FTP Shell”可能是指在 Linux 系统中使用 FTP(File Transfer Protocol)进行文件传输的 Shell 脚本或命令。下面我将为你提供一些常见的 Linux FTP 命令和 Shell 脚本示例,用于在 Linux 系统中进行文…

我讨厌 DP 和 COUNT 的100个理由(下)

好耶!是长篇!51 王之钦定 感觉比较困难。

详细介绍:数组初阶(2)

详细介绍:数组初阶(2)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

Gemini 3 Pro入门教程:从零开始学会使用最新gemini-3-pro-preview API接入

Gemini 3 Pro入门教程:从零开始学会使用最新gemini-3-pro-preview API接入Gemini 3 是 Google 发布的新一代大型多模态模型(LLM),代表了其在 推理(reasoning)、多模态理解、agent 能力 和 编程协作 等方面的重要…

20232314 2025-2026-1 《网络与系统攻防技术》实验七实验报告

一、实验内容 (1)简单应用SET工具建立冒名网站。 (2)ettercap DNS spoof。 (3)结合应用两种技术,用DNS spoof引导特定访问到冒名网站。 二、实验过程 (1)简单应用SET工具建立冒名网站。查看虚拟机ip。root账户…

高州市陈郁强副主任擅长做肠癌手术:口碑优秀+医术高超!

高州市陈郁强副主任擅长做肠癌手术:口碑优秀+医术高超!近年来,肠癌作为粤西地区常见的消化道恶性肿瘤之一,发病率持续上升。高州地区不少患者在确诊肠癌后,常面临“专家信息不透明”“手术技术不了解”“就医路径…

102302156 李子贤 数据采集第三次作业

作业1 要求:指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。实现单线程和多线程的方式爬取。 –务必控制总页数(学号尾数2位)、总下载的图片数量(尾数后3位)等限…

SHELL脚本的基础入门

一、背景知识 1.脚本语言 脚本语言区别于编译语言的最大特征,就是不需要编译,例如Python、JS、Perl,当然也包括本课程重点讲述的 Shell,它们都是不需要编译的解释性编程语言。 下表罗列了一些常见的编程语言的类别…

roocode_kilocode对比

kilo 版本 4.119.4 2.roocode 版本 3.33.1大模型 glm-4.6 kilo code用HTML、CSS和JavaScript(若更偏好p5.js也可选用),创建一个带有动画效果的天气卡片。要在卡片里呈现当前温度、具体位置以及天气状况,像晴天、雨天…

工程成本管理软件新纪元:选软件看这三点!

随着建筑行业利润空间持续收窄,工程成本管理已从传统的记账核算向全过程精细化管理转变。行业数据显示,2025年有超过80%的施工企业将“动态成本管控能力”列为核心竞争力。面对市场上众多的工程成本管理软件,如何选…

全国计算机等级考试——二级JAVA完整大题题库【五十三道】

全国计算机等级考试——二级JAVA完整大题题库【五十三道】全国计算机等级考试——二级JAVA完整大题题库【五十三道】全国计算机等级考试二级 JAVA 题目内容 编写于2023.04.10 分为40道选择题和3道大题(大题是程序填空…

【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析 - 实践

【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

Spring AI 代码分析(一)--工程结构

Spring AI 工程分析文档 请关注微信公众号:阿呆-bot 1. 工程结构概览 Spring AI 是一个大型的多模块 Maven 项目,采用模块化设计,主要分为核心模块、模型实现、向量存储、自动配置等几大类。下面我们来看看主要的目…

Spring Boot迅速集成MiniMax、CosyVoice实现文本转语音

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Cursor接入飞书MCP

痛点 以往cursor都没办法读取prd中的内容,然后都需要⼈⼯提炼出来喂给他,就导致效率⽐较低下;同时 ⼈⼯阅读prd难免会有疏漏,就导致往往review prd的时候才发现功能点遗漏或者理解错误。 希望能让cursor直接阅读pr…

完整教程:微信生态新机遇:视频号推客模式助力商家突围

完整教程:微信生态新机遇:视频号推客模式助力商家突围2025-11-19 19:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; …

linux framework

“Linux framework”通常指的是基于 Linux 内核构建的系统架构或软件框架,用于开发和管理 Linux 系统。它包括以下几个关键部分:1. Linux 内核(Kernel)作用:管理硬件资源、进程调度、内存管理、文件系统等。 关键…