和Leo一起做爱贪心的好孩子之PA2014 Final Zarowki

探讨了在有限次数内,如何通过更换灯泡以最小化总功率消耗来满足房间照明需求的贪心算法解决方案。

有n个房间和n盏灯,你需要在每个房间里放入一盏灯。每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮。 
你可以去附近的商店换新灯泡,商店里所有正整数功率的灯泡都有售。但由于背包空间有限,你至多只能换k个灯泡。 
   你需要找到一个合理的方案使得每个房间都被完全照亮,并在这个前提下使得总功率尽可能小。

不错的贪心。

首先考虑当前灯泡跟新尽可能更新的

然后每个不能的自然就是其的值。

然后如果k还有剩的你在开一个multiset存差

然后从大到小维护

这个贪心似乎可以反悔?雾

HZY费用流72分

注意开LL

不用堆是因为:堆不能回收内存(它不是用vector写的

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
using namespace std;
typedef int INT;
#define int long long
const int N=1e6+10;
multiset<int>Up,Down;
int A[N];
int B[N];
int n,k;
int ans=0;
INT main(){
	freopen("zarowki.in","r",stdin);
	freopen("zarowki.out","w",stdout);
	scanf("%lld%lld",&n,&k);	
	for(int i=1;i<=n;++i){
		scanf("%lld",&B[i]);
	}
	for(int i=1;i<=n;++i){
		scanf("%lld",&A[i]);
		Up.insert(A[i]);
	}
	sort(B+1,B+1+n);
	for(int i=1;i<=n;++i){
		multiset<int>:: iterator It;
		It=Up.upper_bound(B[i]);
		if(It==Up.begin())continue;
		--It;
		int x=*It;
		Up.erase(Up.find(x));
		ans+=B[i];
		Down.insert(B[i]-x);
	}
	if(Up.size()>k)cout<<"NIE";
	else{
		int cnt=0;
		multiset<int>:: iterator It;
		It=Up.begin();
		for(;It!=Up.end();++It){
			ans+=*It;
			++cnt;
		}
		for(int i=cnt+1;i<=k;++i){
			It=Down.end();
			--It;
			int x=*It;
			ans-=x;
			Down.erase(Down.find(x));
		}
		cout<<ans;
	}
	
	return 0;
}

 

### LEO卫星仿真与钟差建模 STK(Satellite Tool Kit)是一个强大的航天器任务分析可视化工具,广泛用于低地球轨道(LEO)卫星的轨道仿真任务规划。在进行LEO卫星仿真时,可以使用STK来模拟卫星的运动轨迹、覆盖区域、链路预算等关键参数,并结合其他工具如MATLAB或Python对系统中的时钟偏差进行建模与补偿。 #### 使用STK进行LEO卫星仿真的步骤: 1. **定义卫星轨道参数** 在STK中创建LEO卫星对象时,可以通过输入两行根数(TLE)、开普勒轨道参数或数值积分轨道数据来定义其轨道特性。例如,对于一个高度为500公里、倾角为97°的太阳同步轨道卫星,可以设定轨道半长轴、偏心率、轨道倾角、升交点赤经、近地点幅角真近点角等参数[^3]。 2. **轨道动力学建模** STK支持多种轨道摄动模型,包括地球非球形引力场(如J2效应)、大气阻力、太阳辐射压力等,这些因素对LEO卫星轨道影响显著。通过启用高精度积分器(如Runge-Kutta 8(7)),可提升轨道预测的准确性。 3. **建立通信或导航场景** 若应用涉及卫星通信或导航系统,可以在STK中添加地面站、用户终端或其他星座成员,配置链路预算、可视性条件信号传播延迟等参数。 4. **可视化与分析** STK提供多维度可视化功能,包括三维地球视图、轨道路径动画、覆盖区域热力图等。此外,还可以生成各种时间序列图表,如仰角变化、链路损耗、可见时间窗口等。 #### 钟差建模与处理 在LEO卫星通信或导航系统中,星载原子钟地面参考钟之间存在频率漂移相位偏移,这种时钟偏差会直接影响定位精度通信同步性能。通常采用以下方法进行钟差建模与补偿: 1. **钟差模型构建** - **线性模型**:假设时钟偏差随时间呈线性变化,即: $$ \Delta t(t) = a_0 + a_1 t $$ 其中 $a_0$ 为初始钟偏,$a_1$ 为钟漂速率。 - **二次模型**:考虑时钟老化效应,引入加速度项: $$ \Delta t(t) = a_0 + a_1 t + a_2 t^2 $$ - **多项式模型**:适用于更复杂的时钟行为,可扩展至更高阶次。 2. **钟差估计与校正** 利用GNSS观测数据或星间链路测量值,结合最小二乘法或卡尔曼滤波器对钟差参数进行估计。例如,在MATLAB中实现卡尔曼滤波器对钟差动态建模: ```matlab % 初始化卡尔曼滤波器 kf = trackingKF('StateTransitionModel', [1 dt; 0 1], ... 'MeasurementModel', [1 0], ... 'State', [0; 0], ... 'ProcessNoise', diag([1e-6, 1e-8]), ... 'MeasurementNoise', 1e-4); % 更新观测值并估计钟差 for k = 1:length(measurements) kalman_state = predict(kf); kalman_state = correct(kf, measurements(k)); clock_bias(k) = kalman_state(1); end ``` 3. **集成到STK中** 可以通过STK的接口(如Connect模块或STK Engine API)将MATLAB计算出的钟差模型导入STK,从而在仿真过程中实时修正信号传播时间定位误差。例如,利用STK的Time API控制仿真时间流,并通过MATLAB脚本更新钟差参数,实现联合仿真[^2]。 #### 应用示例 在某LEO导航增强系统中,利用STK构建卫星轨道运动模型,同时使用MATLAB进行钟差建模与Kalman滤波估计,最终将结果反馈至STK进行可视化展示。这种方法不仅提高了轨道与时间同步的精度,还增强了整个系统的鲁棒性可用性[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值