是的孩子们,贪心O(n)秒了(别用dp!别用dp!别用dp!)
查看原帖
是的孩子们,贪心O(n)秒了(别用dp!别用dp!别用dp!)
1088073
Axolotlwww楼主2024/12/15 02:43

别往dp去想 !

(byd题目硬控我30分钟)

只需要想到两点:

  • (传送范围k,只能传一次)=(找出1-n之间长度为k的和最大片段

  • ans=(不传送直接走的步数)-(1-n之间长度为k的和最大片段)


想到这里就可以鉴定为种地题了:

AC源码 (抄代码指定没你好果汁吃

#include<bits/stdc++.h>
using namespace std;

const int maxn=1e6+5;

long long a[maxn],maxk=-1;
int n,k;

int main(){
	memset(a,0,sizeof(a));
	cin>>n>>k;
	n--;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		a[i]+=a[i-1];
	}
	if(k==0){
		cout<<a[n];
		return 0;
	}
	for(int i=0;i<=n-k;i++){
		maxk=max(a[k+i]-a[i],maxk);
	}
	cout<<a[n]-maxk;
	
	return 0;
}
/*
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⡶⢤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠞⠛⠉⠁⠀⠀⠀⢹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⡀⠀⣰⣶⣶⡄⠀⠀⣿⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣯⣤⠾⢗⣤⡾⠿⠛⠛⠷⢶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠞⠛⠉⣁⣽⣧⠀⢈⣿⠶⠶⢦⣄⡀⢀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⢀⣤⡶⠟⠛⠋⣹⣿⠿⢿⡄⠀⣠⣼⣤⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⣠⡴⠟⠉⠀⠀⠀⣀⣹⣷⣶⣾⣧⣔⣿⡏⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠃⠀⣾⠋⠀⢀⣠⡤⠖⠛⠉⠉⠁⠀⠀⠀⠉⠉⠛⠳⢦⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠤⠤⠿⣶⠖⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣮⡙⠒⠤⠤⠖⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠘⣿⣦⣄⡀⠰⣇⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠀⠀⠀⠀⠀⠀⣦⠀⠀⠀⠀⠀⠀⠀⠈⣷⣄⠀⠀⣿⣿⣿⣿⠃⠀⠉⠉⠉⣹⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⣤⠾⠁⠀⠀⠀⠀⠀⠀⠀⡆⡏⢷⡀⠀⠀⠀⠀⠀⠀⢸⡈⣳⣮⡛⠻⣿⣿⡆⠀⠀⣠⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢤⡖⠚⠋⠁⠀⠀⠀⢀⠀⠀⠀⠀⢸⢰⠃⢀⡷⣶⠀⠀⠀⠀⠀⠀⣇⠀⠉⠻⣦⡈⠙⢷⠀⠘⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠙⠲⣤⣀⣀⠀⢀⠎⠀⠀⠀⠀⢸⡟⠀⠈⠀⠈⠳⣦⣀⠀⠻⣶⣿⡄⠀⢀⣈⢳⡄⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣹⠃⠀⡼⠀⠀⠀⠀⠀⣾⠁⠀⢀⣤⣤⣄⠀⠉⠛⠓⠛⠀⠀⢰⣿⣿⣷⢻⡄⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣼⠃⠀⠀⡇⠀⠀⠀⠀⠀⢻⠀⠀⢿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠈⠛⠛⠋⠀⢿⡀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢠⡏⠀⠀⢸⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀⠙⠋⠀⠀⠠⣀⡀⠀⠀⠀⠂⠀⠀⠀⠀⠘⣿⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⣸⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣠⣴⣞⢻⠀⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠘⣇⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠸⣶⣤⣤⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⡄⠀⢰⣿⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢻⣆⠀⠘⣇⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣁⣤⣾⠀⠀⣸⡏⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠹⢦⣄⠙⢦⡀⠀⠀⢺⣤⣀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠶⣿⠷⢲⣴⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢻⠗⠒⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⡛⠛⠿⠿⠿⠿⠿⠟⠛⠉⠀⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
*/
2024/12/15 02:43
加载中...