警钟长鸣
查看原帖
警钟长鸣
572133
潘德理2010楼主2024/1/23 14:58

1.在 int 乘 int 时,记得开 long long 以及进行强制类型转换。

2.假如你有一个序列 d1,d2,...,dnd_1,d_2,...,d_n 且这些数中有负数,你要求出 m1,m2,...,mnm_1,m_2,...,m_n 使得 mim_i 为 max(d1,d2,...,di)max(d_1,d_2,...,d_i),请一定注意代码不要写成:

for(int i=1;i<=n;i++){
	m[i]=max(m[i-1],d[i]); 
}

而应该是:

for(int i=1;i<=n;i++){
	if(i==1) m[i]=d[i];
	else m[i]=max(m[i-1],d[i]); 
}

因为前者会在 d1d_1 为负数时算出 m1=0m_1=0。

2024/1/23 14:58
加载中...