再见 懦弱者的泪滴 善恶判断舍弃 永别 那廉价的正义

news/2025/10/26 22:03:46/文章来源:https://www.cnblogs.com/chelsyqwq/p/19167487

test28

我用什么才能留住你liuzhuni

我当然知道正解符合人类直觉,但是任意错解难道不符合很多人的直觉吗,没有大样例好难啊好难啊。注意到最优解一定可以是某种田忌赛马,不妨枚举赢的断点,来做一个暴力的对拍。

首先套路又直觉的,我们想办法说明先最大化 \(+1\) 的贡献不劣,用 \(man_i\) 表示一个等级为 \(i\) 的类入,用 \(bike_i\) 表示一个等级为 \(i\) 的车车。考虑最优情况下存在一个 \(bike_i\) 匹配 \(man_i\),而后面有一个 \(man_{j(>i)}\) 被拥挤到不能 \(+1\),那么让 \(man_j\) 抢走 \(man_i\) 的车车贡献是 \((1/2)-(0/1)\geq 0\)

现在要想办法在最大化 \(+1\) 的前提下最大化 \(+0\) 的数量,显然确定了前者之后尽量 \(man_i\) 匹配 \(bike_i\) 即可,所以我们要思考什么样的情况下这个东西最大呢。考虑 \(bike_i\) 可以给 \(man_{l},man_r\) 匹配即 \(i<l<r\),那么匹配给 \(l\) 更优,因为剩下来的 \(bike\) 更容易给 \(man_r\) 匹配 \(1/0\) 的贡献。而对于 \(bike_l,bike_r\) 可以匹配到 \(man_i\)\(l<r<i\),显然匹配 \(r\) 更好。那么不妨按照 \(man\downarrow\) 的顺序贪心 \(+1\) 的贡献,每一次查找一个编号最大的车车,最后再补算 \(0/-1\) 的贡献喵 qwq

#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;int n, x[N], y[N], Ans, stk[N], top;signed main() {freopen("liuzhuni.in","r",stdin); freopen("liuzhuni.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n;up(i,1,n) cin >> x[i];up(i,1,n) cin >> y[i];up(i,1,n) {while(top&&y[i]) {int j=stk[top];int k=min(y[i],x[j]);x[j]-=k, y[i]-=k, Ans+=k;if(!x[j]) --top;}stk[++top]=i;}up(i,1,n) {int k=min(x[i],y[i]);x[i]-=k, y[i]-=k, Ans-=y[i];}cout << Ans << '\n';return 0;
}

我给你瘦落的街道、绝望的落日、荒郊的月亮wogeini

设计一个函数 \(f(a)=\sum_{i\neq j} [情侣i,j相交但不包含]\),显然这个必须下降到 \(0\),同时依次操作最多让这个下降 \(2\)(如果你认为 \(i,j\) 是有序对,那么就是下降 \(1\)),又注意到任意时刻肯定有这样的位置(符合直觉且容易反证),所以最优操作次数就很好求了。

#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=1000005;int n, a[N], lst[N], Ans, tr[N];void add(int x,int v) {for( ; x<=n; x+=x&-x) tr[x]+=v;
}int ask(int x) {int ret=0;for( ; x; x-=x&-x) ret+=tr[x];return ret;
}signed main() {freopen("wogeini.in","r",stdin); freopen("wogeini.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n, Ans=n=(n<<1);up(i,1,n) cin >> a[i];up(i,1,n) {if(!lst[a[i]]) {lst[a[i]]=i;add(i,1);}else {int j=lst[a[i]];add(j,-2), add(i,1);Ans+=ask(i-1)-ask(j);}}cout << Ans/2 << '\n';return 0;
}

我给你一个one

我做过原题,且因为年代久远,我完全只记得怎么做,所以我毫不知情怎么写题解比较自然。在虚构推理的过程中,其实感觉有点像要直接 yy 出一组充要的东西,但是这个题目好想到的东西就那么点、凑起来又恰好是正解弥补了这一点。

DAG 图上的问题我们我们一般希望分层处理,其实也就是按照拓扑序考虑了,经验告诉我们用拓扑序当新标号很赞。那么对于一个 \(i\),我们能用的边分为 \(u/v<i,u/v>i,u<i<v\),三种前两种的贡献可以直接处理成正/反图上的最短路,单边贡献就是前后缀最大值惹,第三种刚好可以用来合并贡献,即动态维护 \(\max_{u<i<v} \{f_u+g_v+1\}\),这个显然可以扫,来个 multiset 即可。

#include<bits/stdc++.h>
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)
#define pb push_backusing namespace std;const int N=500005, inf=1e9;int n, m, tot, in[N], f[N], g[N], pre[N], suf[N], p[N], pos, Ans=inf;
vector<int> F[N], G[N];
queue<int> q;
multiset<int> counter;void eadd(int u,int v) {F[u].pb(v), G[v].pb(u), ++in[v];
}signed main() {freopen("one.in","r",stdin); freopen("one.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;while(m--) {int u, v;cin >> u >> v;eadd(u,v);}up(i,1,n) if(!in[i]) q.push(i);while(q.size()) {int x=q.front(); q.pop();p[++tot]=x;for(int y:F[x]) if(!--in[y]) q.push(y);}up(u,1,n) {int i=p[u];for(int j:F[i]) f[j]=max(f[j],f[i]+1);pre[u]=max(pre[u-1],f[i]);}dn(u,n,1) {int i=p[u];for(int j:G[i]) g[j]=max(g[j],g[i]+1);suf[u]=max(suf[u+1],g[i]);}up(u,1,n) {int i=p[u], Pluto=max(pre[u-1],suf[u+1]);for(int j:G[i]) {int val=f[j]+g[i]+1;counter.erase(counter.find(val));}if(counter.size()) Pluto=max(Pluto,*--counter.end());if(Pluto<Ans||Pluto==Ans&&i<pos) pos=i, Ans=Pluto; for(int j:F[i]) {int val=f[i]+g[j]+1;counter.insert(val);}}cout << pos << ' ' << Ans << '\n';return 0;
}

久久地望着孤月的人的悲哀beiai

本质不同的子序列的求法,设 \(f_i\) 表示考虑到 \(i\) 且强制 \(a_i\) 选的方案数,枚举不同的值 \(j\) 转移其最后一个位置的 \(f\),放到这个题目里面就是 \(f_i=\sum_{j=1}^i f_{i-j}\),发现好改成前缀和减少转移点数,\(s_i-s_{i-1}=s_{i-1}-s_{i-m-1}\) 也就是 \(s_i=2s_{i-1}-s_{i-m-1}\)

想要来一点组合意义,就是可以 \(i\to i+1\) 乘上系数 \(2\),或者可以 \(i\to i+(m+1)\) 乘上系数 \(-1\),枚举多少次第二种走,可以得到 \(Ans=\sum_{i=0}^{\lfloor\frac{n}{m+1}\rfloor}(-1)^i2^{n-(m+1)i\binom{n-mi}{i}}\),上标和求和是调和级数,暴力求解即可。

#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=1000005, P=1e9+7;int n, q, m, f[N], tag[N], Ans;
int pw[N], mul[N], inv[N];inline int C(int n,int m) {if(m<0||n<m) return 0;return mul[n]*inv[m]%P*inv[n-m]%P;
}int solve(int m) {if(tag[m]) return f[m];tag[m]=1, Ans=0;up(i,0,n/(m+1)) {int val=pw[n-(m+1)*i]*C(n-m*i,i)%P;if(i&1) Ans=(Ans-val)%P; else Ans=(Ans+val)%P;}return f[m]=(Ans%P+P)%P;
}signed main() {freopen("beiai.in","r",stdin); freopen("beiai.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> q;pw[0]=mul[0]=inv[0]=inv[1]=1;up(i,1,n) pw[i]=pw[i-1]*2%P;up(i,1,n) mul[i]=mul[i-1]*i%P;up(i,2,n) inv[i]=inv[P%i]*(P-P/i)%P;up(i,2,n) inv[i]=inv[i-1]*inv[i]%P;while(q--) {cin >> m;cout << solve(m) << '\n';}return 0;
}

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

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

相关文章

2025年东莞环评公司权威推荐榜:环评手续/环评报告/环评验收一站式服务,专业高效合规首选厂家

2025年东莞环评公司权威推荐榜:环评手续/环评报告/环评验收一站式服务,专业高效合规首选厂家 行业背景分析 随着国家环保政策的持续收紧和企业环保意识的提升,环评服务市场正迎来前所未有的发展机遇。在制造业重镇东…

【CI130x-离在线】FreeRTOS的信号量

CI130x ALG SDK库中的audio_play_os_state_t audio_play_semaphore_give(audio_play_os_sem_t xSemaphore)函数是对 FreeRTOS 内置函数 xSemaphoreGive()的简单封装/*** @brief 发送信号量** @param xSemaphore 信号量…

践行 “学思行”,解锁学习新境界

践行 “学思行”,解锁学习新境界—— 读三篇学习类文章有感 在阅读了《大学生上课为什么一定要认真听讲?》《“做中学(Learning By Doing)” 之乒乓球刻意训练一年总结》《优秀的教学方法 --- 做教练与做中学》这三…

Windows Archive

MSDN and TechNetMSDN and TechNet LibrariesWe started the migration of MSDN Library and TechNet Library to docs.microsoft.com in late 2017, and completed the migration this year.MSDN and TechNet ForumsW…

变盲从为探索:专注听课

在阅读《大学生为何必须重视课堂专注?》及后续两篇关于“学用结合”的分享后,我如醍醐灌顶,深刻领悟到真正的成长,绝非被动地接受知识灌输,而是一场需要主动发力的修行——既需要高效的课堂输入,也需要扎实的实践…

以听为基,以做为翼

以听为基,以做为翼,共赴学习成长之途 阅读了三篇关于学习方法的文章后,我对大学阶段的学习有了更深刻的认知,它们从不同维度为我指明了学习的方向,让我获益匪浅。 在《大学生上课为什么一定要认真听讲?》一文中,…

[java 虚拟线程 ]

package com.hugh.java17.v19;import java.time.Duration; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.IntStream;import org.slf4j.Logger; imp…

【ArcMap】按属性表复制字段并上移一段距离

将属性表中 LXMC 为 名称2 的字段复制并上移20米,在py编辑器中插入以下代码:# -*- coding: utf-8 -*- import arcpy import os import sys# 重新加载sys并设置默认编码 reload(sys) sys.setdefaultencoding(utf-8)# …

WPF 关闭程序 Aforge摄像头关闭不了 问题

public static Bitmap StaticBitmap = new Bitmap(100,100); public void Cam_NewFrame(object sender, NewFrameEventArgs eventArgs){lock (StaticHelper.StaticBitmap){using (Bitmap b = (Bitmap)eventArgs.Frame)…

CF1060

题目 C(Hard Version) 因为制造两个2的倍数只需至多两次操作,因此按价格排序后,选择方案只有\(1+i\),\(i\) 和 \(1\) 三种,直接判断即可。\(\Omicron(n\ln{n})\) D 按树的深度进行奇偶分类,从叶节点开始删除,设当前奇…

以专注筑基,以实践致远

以专注筑基,以实践致远——三篇文章带给我的学习启示 细读三篇关于学习与成长的文章,仿佛为我混乱的大学学习状态点亮了一盏明灯。从Scalers强调的课堂专注,到娄老师践行的刻意训练与“做中学”,字里行间的真知灼见…

2025.10.24 测试

2025.10.24 测试提高组模拟赛, shanganze 2h AK me 只会两道,被踩爆了 把简单题想复杂了,写太慢了 1. 谔谔,不知道为什么浪费好长时间 就做个前缀和 然后想用 set 但求不了 个数 然后写了个线段树 2. 一眼 每一列答…

102302139 尚子骐 数据采集与融合作业1

作业一: 1. 完整代码以及运行结果点击查看代码 import requests from bs4 import BeautifulSoup import timedef get_university_ranking(url):try:headers = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64…

CF1152F2 Neko Rules the Catniverse (Large Version) 题解

\(\text{CF1152F2 Neko Rules the Catniverse (Large Version) 题解}\) 这个题有点意思啊。 我们大胆猜想这个题的 dp 是从每个星球一个一个线性转移的。得到这个结论有两种方式: 法一:发现按照 Neko 飞行的轨迹直接…

Audacity:开源音频编辑器的完整指南

Audacity是一款功能强大的开源音频编辑器和录音软件,支持多轨编辑、多种音频格式导入导出、实时效果处理等专业功能,适用于Windows、macOS和Linux等操作系统。Audacity:开源音频编辑器的完整指南 项目概述 Audacity…

【CI130x】音频传输的数据结构——FreeRTOS的消息队列

一句话概括 xQueueCreate 是 FreeRTOS 实时操作系统中用于动态创建消息队列的函数。它负责分配内存并返回一个可以用于发送和接收数据的队列句柄。详细解释 1. 什么是消息队列? 在深入函数本身之前,理解“队列”的概…

123456789

看到题目条件找一下性质然后将其转化掉。 任何东西都只是方向,不一定是正解。 如果感觉他答案不大并要求输出类似最小步数的时候可以猜一下答案上界。 可以从最特殊的东西入手。 可以适当找一下必要条件或充分条件。 …

#20232408 2025-2026-1 《网络系统与攻防技术》实验三实验报告 - 20232408

北京电子科技学院(BESTI) 实 验 报 告课程名称: 网络与系统攻防技术实验序号: 实验三实验名称: 免杀原理与实践学 号: 20232408姓 名: 李易骋指导老师: 王志强必修/选修: 必修实验日期: 20…

C_结构体学习_1

这里记录一下怎么为结构体成员变量实现内存连续且为动态 #include <iostream> #include <conio.h> #include <stdlib.h> #include <string.h> #include <stdio.h> using namespace std;…