CodeForces - 940E Cashback

CodeForces - 940E Cashback

传送门:Codeforces 940E
题意:给一个串,现在把一个串分成任意多个区间,设一个区间长度为k,然后每个区间将自己最小的k/c(向下取整)个数删除,问删除数后所有区间的数字之和。
题解:首先先想这很符合dp,但是没有办法处理区间中最小的那些数,就算处理好了,dp也是 O ( n 2 ) O(n^2) O(n2)级别的,所以要先想别的办法。贪心修改数学模型是不错的方法,这题我们可以想到如果一个区间长度为2c,那我们可以删两个数。但如果我们把区间变成c+c两个区间,答案一定会更优。如果一个区间长度是(c+a)(a<c),那这个区间就可以拆成c+a两个区间,答案没有影响。于是,这题就变为如果要用删除操作,那么这个区间长度一定是c,剩下的区间长度都小于c(等于直接相加)。
先考虑那些区间小于c的那么 d p [ i ] = m i n ( d p [ i − k ] + S u m [ i ] − S u m [ i − k ] ) ( k &lt; c ) dp[i]=min(dp[i-k]+Sum[i]-Sum[i-k])(k&lt;c) dp[i]=min(dp[ik]+Sum[i]Sum[ik])k<c这个可以用单调队列实现 O ( n ) O(n) O(n),然后再加一个 d p [ i ] = m i n ( d p [ i ] , d p [ i − c ] + S u m [ i ] − S u m [ i − c ] − M i n [ i ] ) dp[i]=min(dp[i],dp[i-c]+Sum[i]-Sum[i-c]-Min[i]) dp[i]=min(dp[i],dp[ic]+Sum[i]Sum[ic]Min[i])Min[i]表示i前c个数的最小一个的值,其中Min[i]也可以用单调队列实现 O ( n ) O(n) O(n)

代码:

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn=1e5+5;
const int INF=1e9+5;
struct node
{
	long long num;
	int id;
};
long long dp[maxn];
int a[maxn];
node Q[maxn];
long long sum[maxn];
int Mi[maxn];
int l,r,n,c;
int main()
{
	int n;
	cin >> n >> c;
	for (int i=1;i<=n;i++)
	{
		cin >> a[i];
		sum[i]=sum[i-1]+a[i];
	}
	l=r=1;
	Q[l]={INF,0};
	if (c==1) cout <<0;
	else
	{
		for (int i=1;i<=n;i++)
		{
			while (i-Q[l].id>=c)
				l++;
			while (Q[r].num>a[i]&&l<=r) 
				r--;
			Q[++r]={a[i],i};
			Mi[i]=Q[l].num;
		}
		l=r=1;
		Q[l]={0,0};
		for (int i=1;i<=n;i++)
		{
			while (i-Q[l].id>=c-1) l++;
			if (c==2)
				dp[i]=dp[i-1]+a[i];
			else
				dp[i]=Q[l].num+sum[i];
			if (i>=c)
				dp[i]=min(dp[i-c]+sum[i]-sum[i-c]-Mi[i],dp[i]);
			long long u=dp[i]-sum[i];
			while (Q[r].num>u&&l<=r) r--;
			Q[++r]={u,i};
		}
		cout << dp[n];
	}
}
该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### Codeforces Problem 976C Solution in Python For solving problem 976C on Codeforces using Python, efficiency becomes a critical factor due to strict time limits aimed at distinguishing between efficient and less efficient solutions[^1]. Given these constraints, it is advisable to focus on optimizing algorithms and choosing appropriate data structures. The provided code snippet offers insight into handling string manipulation problems efficiently by customizing comparison logic for sorting elements based on specific criteria[^2]. However, for addressing problem 976C specifically, which involves determining the winner ('A' or 'B') based on frequency counts within given inputs, one can adapt similar principles of optimization but tailored towards counting occurrences directly as shown below: ```python from collections import Counter def determine_winner(): for _ in range(int(input())): count_map = Counter(input().strip()) result = "A" if count_map['A'] > count_map['B'] else "B" print(result) determine_winner() ``` This approach leverages `Counter` from Python’s built-in `collections` module to quickly tally up instances of 'A' versus 'B'. By iterating over multiple test cases through a loop defined by user input, this method ensures that comparisons are made accurately while maintaining performance standards required under tight computational resources[^3]. To further enhance execution speed when working with Python, consider submitting codes via platforms like PyPy instead of traditional interpreters whenever possible since they offer better runtime efficiencies especially important during competitive programming contests where milliseconds matter significantly.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值