TLE求diao
查看原帖
TLE求diao
1043209
lmayyds楼主2024/3/14 19:26
#include<bits/stdc++.h>
using namespace std;
#define N 405
int n,m,a[N],v,c1,c2,c3,c4,maxn=-1,ans=0,maxe,dp[N];
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		cin>>v;
		switch(v){
			case(1):{
				c1++;
				break;
			}
			case(2):{
				c2++;
				break;
			}
			case(3):{
				c3++;
				break;
			}
			case(4):{
				c4++;
				break;
			}
		}
	}
	for(int i=1;i<=n;++i){
		cin>>a[i];
	}
	for(int i=1;i<=n;){
		maxn=-1;
		for(int j=1;j<=4;++j){
			switch(j){
				case(1):{
					if(a[i]>maxn&&c1){
						maxn=a[i];
						maxe=j;
					}
					break;
				}
				case(2):{
					if(a[i]>maxn&&c2){
						maxn=a[i];
						maxe=j;
					}
					break;
				}
				case(3):{
					if(a[i]>maxn&&c3){
						maxn=a[i];
						maxe=j;
					}
					break;
				}
				case(4):{
					if(a[i]>maxn&&c4){
						maxn=a[i];
						maxe=j;
					}
					break;
				}
			}
		}
		switch(maxe){
			case(1):{
				if(c1){
					c1-=1;
					i+=maxe;
					ans+=a[i];
				}
				break;
			}
			case(2):{
				if(c2){
					c2-=1;
					i+=maxe;
					ans+=a[i];
				}
				break;
			}
			case(3):{
				if(c3){
					c3-=1;
					i+=maxe;
					ans+=a[i];
				}
			break;
			}
			case(4):{
				if(c4){
					c4-=1;
					i+=maxe;
					ans+=a[i];
				}
				break;
			}
		}
	}
	cout<<ans;
	return 0;
} 
2024/3/14 19:26
加载中...