首页 > 其他分享 >第五周周报

第五周周报

时间:2024-02-25 12:45:23浏览次数:22  
标签:ve minn int sum bound 100005 第五 周报

寒假的训连已经接近尾声,这个寒假的主要训练就是牛客,以及队里组织的比赛还有自己参加的codeforces比赛。总的来说收获还是挺多的,对各个算法的运用和了解也加深了很多,这一周还是比较忙的,不仅打牛客上的比赛还把以前的题目补了一下,还有就是codeforces上的比赛也没有落下,还是挺忙的。牛客上的比赛有点痛苦,好多就是思路出的很快但是提交时就一直卡着,一道题提交五六次也不对,不断自己找例子代入也没办法解决,赛后补题发现要么是没有特判,要么是没有考虑特殊情况。大概是自己做题时没有想太多的缘故,也可能是训练的还是不够。开学前会把这个寒假习题尽量补全,但那种用到很复杂的算法,看半天还一知半解的习题感觉与自己水平相差甚远。就会有选择的去补。
时空的交织
这道题写的真是造孽了,明明是分别求出两个数组的最大字段和和最小字段和,然后求出相乘的最大值。我直接用dp模板复制粘贴,但没想到模板那个求的是大于零的最大字段和,我说怎么一直不对,真是粗心的想给自己一巴掌。写一下最通用的模板;
maxx=-1e9,minn=1e9;
s[100005],dp1[100005],dp2[100005];
for(int i=1;i<=n;i++){
cin>>s[i];//
dp1[i]=dp2[i]=s[i];
}
for(int i=1;i<=n;i++)
{
dp1[i]=max(dp1[i-1]+s[i],s[i]);
dp2[i]=min(dp2[i-1]+s[i],s[i]);
maxx=max(dp1[i],maxx);
minn=min(dp2[i],minn);
}
cout<<maxx<<minn;//maxx是最大字段和,minn最小字段和。
注意这里maxx求的是包含负数的最大字段和,如果有其他要求。通过修改maxx,minn的初始值来达到目的。
例如要求最大字段和必须是非负数,可以把maxx=0;根据特殊情况来进行特殊讨论。
以下是这道题代码

include <bits/stdc++.h>

define int long long

using namespace std;
int n,m;
int a[100005],b[100005];
int maxa=-1e10,mina=1e10,maxb=-1e10,minb=1e10;
int f[100005],g[100005];
void solve(){
cin >> n >> m;
for(int i=1;i<=n;i++){
cin>>a[i];
f[i]=a[i];
g[i]=a[i];
}
for(int i=1;i<=n;i++){
f[i]=max(f[i-1]+a[i],a[i]);
g[i]=min(g[i-1]+a[i],a[i]);
mina=min(mina,g[i]);
maxa=max(maxa,f[i]);
}
for(int i=1;i<=m;i++){
cin>>b[i];
f[i]=b[i];
g[i]=b[i];
}
for(int i=1;i<=m;i++){
f[i]=max(f[i-1]+b[i],b[i]);
g[i]=min(g[i-1]+b[i],b[i]);
minb=min(minb,g[i]);
maxb=max(maxb,f[i]);
}
cout<<max({maxamaxb,maxaminb,minamaxb,minaminb});
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int =1;
while(
--) solve();
return 0;
}
真的要特别注意人家要你求的是哪种字段和;
爱恨的纠葛
这道题用的是二分,把两个数组排序,二分出答案;
3
2 6 4//a[i]
1 3 5//b[i]
这道题只需要会找第一个数组的每个数在第二个数组中范围是多少。
2
l=lower_bound(b+1,b+4,2-1);
r=lower_bound(b+1,b+4,2);
i=1,r=3;
6
l=lower_bound(b+1,b+4,6-1);
r=lower_bound(b+1,b+4,6);
l=r=5;
4
l=lower_bound(b+1,b+4,4-1);
r=lower_bound(b+1,b+4,4);
l=3,r=5;
设一个结果ans
ans=min({abs(a[i]-l),abs(a[i]-r),ans});
ans就是最小值;

include<bits/stdc++.h>

define int long long

using namespace std;
int n,s[100005],q[100005],d[100005];
void solve(){
for(int i=1;i<=n;i++)
cin>>s[i];
for(int i=1;i<=n;i++){
cin>>q[i];
d[i]=q[i];
}
sort(s+1,s+n+1);
sort(d+1,d+n+1);
int minn=1e9,vis=0,vi=0;
for(int i=1;i<=n;i++){
int sum=lower_bound(d+1,d+n+1,s[i]-1);
if(minn>=abs(sum-s[i])){
minn=abs(sum-s[i]);
vis=sum;
vi=s[i];
//cout<<vis<<' ';
}
sum=
lower_bound(d+1,d+n+1,s[i]);
if(minn>=abs(sum-s[i])){
minn=abs(sum-s[i]);
vis=sum;
vi=s[i];
}
}
int y=0,u=0;
for(int i=1;i<=n;i++){
if(q[i]vis){
y=i;
break;
}
}
for(int i=1;i<=n;i++){
if(s[i]
vi){
u=i;
break;
}
}
int t=s[y];
s[y]=s[u];
s[u]=t;
for(int i=1;i<=n;i++)
cout<<s[i]<<' ';
}
signed main(){
cin>>n;
solve();
}
心绪的解剖
这道题有点像把数分解为质数相加那一题
先用vector存储斐波那契数
void df(){
ve.emplace_back(0);
ve.emplace_back(1);
for(int i=2;i<=50;i++)
{
int t=ve[i-1]+ve[i-2];
ve.emplace_back(t);
}
}
斐波那契数到45时就已经达到1e9了
然后用暴力vector求最大小于 m的数,m-=vector[i];
遍历三次,用a,b,c存储结果
for(int i=0;i<=45;i++){
if(ve[i]>m){
a=ve[i-1];
m-=ve[i-1];
break;
}
}

	for(int i=0;i<=45;i++){
		if(ve[i]>m){
			b=ve[i-1];
			m-=ve[i-1];
			break;
		}
	}
	for(int i=0;i<=45;i++){
		if(ve[i]>m){
			c=ve[i-1];
			m-=ve[i-1];
			break;
		}
	}
	if(m==0){
		cout<<a<<' '<<b<<' '<<c<<'\n';
	}
	else
		cout<<"-1\n";
}

}

标签:ve,minn,int,sum,bound,100005,第五,周报
From: https://www.cnblogs.com/niubuniu/p/18032262

相关文章

  • 《程序是怎么跑起来》的第五次读后感(11 12章)
    《程序是怎么跑起来的》第11章计算机的硬件是计算机系统中各种设备的总称。计算机的硬件应包括5个基本部分,即运算器、控制器、存储器、输入设备、输出设备,各基本部件的功能各异。运算器能进行加、减、乘、除等基本运算。存储器不仅能存放数据,而且也能存放指令,计算机应能区分是数据......
  • 第五章
    在第五章中主要讲述了内存和磁盘的关系,内容有下:从都具有存储程序命令和数据这点来看,内存和磁盘的功能是相同的。在计算机的5大部件"中,内存和磁盘也都被归类为存储部件。不过,利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,还是有差异的。而从存储容量来看,内存是高速高价,......
  • 《系统科学方法概论》第五章读后感
    第五章是自组织系统方法,看完这一章后,我才间接理解这章的名字,之前我一直以为它是一种新颖的理论,但是是字面意思,自己组织并循环的规律,我对系统分析方法有了更深入的理解。这一章详细介绍了系统分析的步骤和方法,包括问题定义、目标设定、数据收集、模型建立和分析等,我认识到系统分析......
  • 《系统科学方法概论》第五章
    自组织系统理论的历史发展经历了从早期概念的提出到复杂系统研究的兴起,再到跨学科研究与应用的阶段。随着对系统复杂性认识的深化和技术手段的不断进步,自组织系统理论将继续拓展研究领域,为理解和应对复杂系统带来新的启示和方法。耗散结构理论是由比利时物理学家伊利亚·普里戈金......
  • 程序是怎么跑起来的第五章
    学习本章内容之前我认为磁盘和内存卡的作用大差不差,我以为运行电脑程序加载出来的文件及其垃圾缓存都在内存和磁盘上,但是学习到这一章,我对磁盘和内存的关系有了更加清晰的了解,一般磁盘的一个扇区是512字节从存储程序的命令和数据来看,两者功能几乎相同,但从存储容量来看,内容是高数高......
  • 程序是怎样跑起来的第五章观后感
    读完第五章,我了解到了内存和磁盘之间的关系。磁盘缓存,是通过使用内存来提高磁盘访问速度的,虚拟内存是指把磁盘的一部分作为假想内存来使用的,一般来说,程序需要被解读出来,然后运行,如果不读入内存就无法运行这一机制,我们称为储存程序方式。由于WINDOWS具有多重任务,有时同时运行多个......
  • 《程序是怎样跑起来的》第五章读后感
    我是计应232班的赵精艺。在阅读过书籍第五章之后我知道了,从具有存储程序和数据这点来看,内存和磁盘的功能是相同的,而在计算机的五大部件中,内存和磁盘也都被归类为存储部件。从储存能量来看,内存是高速高价,而磁盘是低速廉价。内存主要是指主内存(负责储存CPU中运行的程序指令和数据的......
  • 《程序是怎样跑起来的》第五章读后感
        读完《程序是怎样跑起来的》第五章后,我对内存和磁盘的关系有了更深刻的认识。    内存就像是计算机系统中的“临时工”,它速度快但容量有限,专门负责处理当前正在使用的数据。而磁盘则像是“长期员工”,容量大但速度较慢,用于存储大量的持久数据。    这种分......
  • 《程序是怎样跑起来的》第五章读书笔记
    从都具有存储程序命令和数据这点来看,内存和磁盘的功能是相同的。在计算机的五大部位中,内存和磁盘也都也都被归类为存储部件。不过利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,还是有差异的,而从存储容量来看,内存是告诉高价,而磁盘则是低速廉价。程序保护在存储设备中,通过......
  • 《程序是怎样跑起来的》第五章读后感
    阅读第五章我很受启发。首先,我了解到内存和磁盘虽然都是计算机的存储部件,但它们的工作机制和特性却截然不同。内存利用电流进行高速存储,但由于成本较高所以容量有限;而磁盘则是通过磁效应实现数据存储,速度较慢但价格相对低廉,能提供大量存储空间。程序以存储程序方式保存在磁盘等存......