「杂题乱刷2」CF1108E2

news/2024/9/19 9:00:50/文章来源:https://www.cnblogs.com/wangmarui/p/18417630

题目链接

CF1108E1(luogu)

CF1108E2(luogu)

CF1108E1(codeforces)

CF1108E2(codeforces)

解题思路

这篇题解分 E1,E2 两个部分来讲。

E1 sol:

我们发现可以暴力枚举最后经过所有操作之后的最大值,那么显然的,我们将不会做任何经过这个位置的操作,会做不经过这个区间的所有操作。

直接暴力进行操作即可。

时间复杂度 \(O(n^2 + nm)\)

B2 sol:

发现这个暴力的过程可以使用区间加,区间最大值,区间最小值的线段树来维护,此时时间复杂度变为 \(O(nm \log n)\),并不能通过此题,那么此时,我们可以再打一个标记表示当前树内是否加过这个区间,由于区间是连续的一段,并且我们枚举的最大值也是连续的一段,因此有一个性质,那就是每个区间至多被操作过两次,此时时间复杂度变为 \(O(n + m \log n)\),可以通过此题。

参考代码

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define re register
#define ll int
#define pb push_back
#define forl(i,a,b) for(re ll i=a;i<=b;i++)
#define forr(i,a,b) for(re ll i=a;i>=b;i--)
#define mid ((l+r)>>1)
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl '\n'
#define QwQ return 0;
template<typename T1,typename T2>bool Max(T1&x,T2 y){if(y>x)return x=y,1;return 0;}
template<typename T1,typename T2>bool Min(T1&x,T2 y){if(y<x)return x=y,1;return 0;}
ll _t_;
void _clear(){}
/*
0 -4 1 1 2
*/
ll n,m;
ll id;
ll maxn;
ll a[100010],b[100010],c[100010];
ll l[100010],r[100010];
ll vis[510];
struct node{ll l,r,minn,maxn,tag;
}tree[400010];
struct nide{ll x,id;
}d[100010];
bool cmp(nide x,nide y){return x.x<y.x;
}
void pushup(ll x){tree[x].minn=min(tree[x*2].minn,tree[x*2+1].minn);tree[x].maxn=max(tree[x*2].maxn,tree[x*2+1].maxn);
}
void pushdown(ll x)
{tree[x*2].minn+=tree[x].tag;tree[x*2+1].minn+=tree[x].tag;tree[x*2].tag+=tree[x].tag;tree[x*2+1].tag+=tree[x].tag;tree[x*2].maxn+=tree[x].tag;tree[x*2+1].maxn+=tree[x].tag;tree[x].tag=0;
}
void build(ll x,ll l,ll r)
{tree[x].l=l,tree[x].r=r;if(l==r){tree[x].minn=a[l];tree[x].maxn=a[l];return ;}build(x*2,l,mid);build(x*2+1,mid+1,r);pushup(x);
}
void add(ll x,ll l,ll r,ll y)
{if(l<=tree[x].l && tree[x].r<=r){tree[x].minn+=y;tree[x].maxn+=y;tree[x].tag+=y;return ;}pushdown(x);ll Mid=(tree[x].l+tree[x].r)/2;if(l<=Mid)add(x*2,l,r,y);if(Mid<r)add(x*2+1,l,r,y);pushup(x);
}
ll querymin(ll x,ll l,ll r)
{if(l<=tree[x].l && tree[x].r<=r)return tree[x].minn;pushdown(x);ll Mid=(tree[x].l+tree[x].r)/2,ans=1e9;if(l<=Mid)Min(ans,querymin(x*2,l,r));if(Mid<r)Min(ans,querymin(x*2+1,l,r));return ans;
}
ll querymax(ll x,ll l,ll r)
{if(l<=tree[x].l && tree[x].r<=r)return tree[x].maxn;pushdown(x);ll Mid=(tree[x].l+tree[x].r)/2,ans=-1e9;if(l<=Mid)Max(ans,querymax(x*2,l,r));if(Mid<r)Max(ans,querymax(x*2+1,l,r));return ans;
}
ll check(ll x)//x最终为最大值 
{
//	forl(i,0,n+2)
//		c[i]=0;forl(i,1,m){if(l[i]>x || r[i]<x){if(!vis[i])add(1,l[i],r[i],-1),vis[i]=1;}else{if(vis[i])add(1,l[i],r[i],1),vis[i]=0;}}//c[l[i]]--,c[r[i]+1]++;
//	forl(i,1,n)
//		c[i]+=c[i-1];ll maxn=-1e9,minn=1e9;maxn=querymax(1,1,n),minn=querymin(1,1,n);
//	forl(i,1,n)
//		cout<<querymax(1,i,i)<<' ';
//	cout<<endl;
//	forl(i,1,m)
//		if(l[i]>x || r[i]<x)
//			add(1,l[i],r[i],1);
///	forl(i,1,n)
//		Max(maxn,c[i]+a[i]),
//		Min(minn,c[i]+a[i]);
//		cout<<a[i]+c[i]<<' ';
//	cout<<endl;
//	cout<<"<"<<minn<<' '<<maxn<<endl;return maxn-minn;
}
void check2(ll x)//x最终为最大值 
{vector<ll>ans;forl(i,0,n+2)c[i]=0;forl(i,1,m)if(l[i]>x || r[i]<x)ans.pb(i);cout<<ans.size()<<endl;for(auto i:ans)cout<<i<<' ';
//		{
//			cout<<
//		}
//			c[l[i]]--,c[r[i]+1]++;
//	forl(i,1,n)
//		c[i]+=c[i-1];
//	ll maxn=-1e18,minn=1e18;
///	forl(i,1,n)
//		Max(maxn,c[i]+a[i]),
//		Min(minn,c[i]+a[i]);
//		cout<<a[i]+c[i]<<' ';
//	cout<<endl;
//	cout<<minn<<' '<<maxn<<endl;
//	return maxn-minn;
}
void solve()
{_clear();cin>>n>>m;forl(i,1,n)cin>>a[i];//,d[i].x=a[i],d[i].id=i;build(1,1,n);forl(i,1,m)cin>>l[i]>>r[i];maxn=-1e9;
//	check(5);
//	sort(d+1,d+1+n,cmp);forl(i,1,n)if(Max(maxn,check(i)))id=i;
/*	forr(i,n,max(5001,n-5000))if(Max(maxn,check(i)))id=i;	*/cout<<maxn<<endl;check2(id);}
int main()
{
//	freopen("tst.txt","r",stdin);
//	freopen("sans.txt","w",stdout);IOS;_t_=1;//	cin>>_t_;while(_t_--)solve();QwQ;
}

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

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

相关文章

存储论——确定性存储模型模型精解

运筹学中的存储问题主要研究如何通过优化库存管理,确保在满足需求的同时,尽可能降低与库存相关的成本。这一问题在生产制造、物流运输、仓储等各个领域具有重要应用。核心目标是通过合理规划进货、存货和出货策略,实现成本最小化和资源的高效利用。在实际应用中,由于需求的…

软工实践第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253这个作业的目标 了解小型项目的设计学号 082100170github:完成情况因为对游戏设计没有多大兴趣,所以只是简单地完成了基本的消…

[MySQL]深分页优化

limit深分页为什么会变慢? 先看下表结构: CREATE TABLE account (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键Id,name varchar(255) DEFAULT NULL COMMENT 账户名,balance int(11) DEFAULT NULL COMMENT 余额,create_time datetime NOT NULL COMMENT 创建时间,update_t…

后台地址改了,忘记了,去哪个文件能查看啊

如果您忘记了EyouCMS后台地址,并且知道后台地址曾经被修改过,可以通过查找相关配置文件来确定后台地址。以下是查找EyouCMS后台地址的一般步骤: 查找EyouCMS后台地址查找登录入口文件:EyouCMS后台登录页面通常是在网站根目录下的某个文件,例如 admin.php 或 login.php。您…

如何查杀空间木马

查杀空间木马通常指的是检测和清除托管在Web服务器上的恶意代码或木马程序。这些木马可能是通过漏洞入侵您的网站或服务器后留下的。以下是一些查杀空间木马的基本步骤: 1. 使用安全软件进行扫描安装安全软件:可以使用如360安全卫士等安全软件来进行木马查杀。如果您的服务器…

后台登陆验证码怎么关闭

关闭后台登录验证码的方法因所使用的CMS系统不同而有所差异。以下是针对几个不同版本的织梦CMS(DedeCms)关闭后台登录验证码的方法: 织梦CMS 5.5 版本打开织梦CMS根目录下的 dede 文件夹。 找到 login.php 文件,并用文本编辑器打开。 查找以下代码:phpif($validate== || $…

开源项目dotnet/eshop 和 dotnet/eshopsupport

dotnet/eshop[1] 和 dotnet/eshopsupport[2] 是两个与 .NET 相关的开源项目,分别用于展示电子商务应用的不同方面。dotnet/eshop:功能与架构:dotnet/eshop 是一个基于 .NET Aspire 的参考电商应用,展示了服务架构在构建现代在线购物平台中的应用。项目涵盖产品目录、购物车和…

忘记eyoucms后台密码怎么办?

如果您忘记了EyouCMS后台的密码,可以通过以下几种方法来重置或恢复密码:使用官方提供的重置工具:官方提供了专门用于重置密码的工具 setpwd.php。您需要下载该文件,并将其上传到网站的根目录下。 访问 http://yousite.com/setpwd.php(将 yousite.com 替换为您自己的域名)…

能否判断自定义变量是否为空?

不同的编程语言有不同的方式来判断一个变量是否为空。下面列出了一些常见编程语言中判断变量是否为空的方法: 1. Java 在Java中,你可以使用多种方法来判断一个变量是否为空:对于对象:检查是否为 null。javaif (object == null) {System.out.println("变量为空");…

孙若涛第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc/这个作业的目标 介绍自己姓名 学号 孙若涛 2022329301090自我介绍 大家好,我是22电气二班的孙若涛,来自浙江慈溪。 兴趣爱好以及生活经历 我喜欢阅读和旅行,还有游戏。在暑假,我去了日本,度过了一段难忘的…

数字图像处理-实验2

实验E2:图像代数运算 实验2.1:对比度调整设计一个Sigmoid函数,实现对图像的对比度调整,并使得调整幅度可以通过参数控制;通过查阅资料得知,Sigmoid函数的标准形式为:其中,x 表示输入的像素值,并且可以归一化到[0,1]范围内。 k 表示的是控制对比度调整幅度的参数,k 值…

如何修改URL命名规则 让他更适合Google SEO优化

为了使URL更符合Google的SEO优化标准,您可以遵循以下原则来修改您的URL命名规则:简洁明了:URL应该尽可能短小,避免冗长的路径。 使用有意义的单词而不是数字或不相关的短语。使用关键词:在URL中包含目标关键词可以帮助搜索引擎理解页面的内容。 但是避免过度堆砌关键词,这…