pat Data Stucture 海盗分赃

#include<iostream>
#include<algorithm>

using namespace std;
int Median(int a[],int start,int end)
{
	sort(a+start,a+end);
	return a[(end-start-1)/2+start];
}
int main()
{
	int d,p;
	cin>>d>>p;
	int a[p],b[p];
	a[p-2]=0;
	a[p-1]=d;
	for(int i=0;i<p-2;++i)
	{
		for(int j=p-2-i;j<p;++j)
		{
			b[j]=a[j];
		}
		int mid=Median(b,p-2-i,p);
		int count=0;
		for(int j=p-2-i;j<p;++j)
		{
			if(a[j]<=mid) {a[j]+=1;++count;}
			else a[j]=0;
		}
		int j=p-1;
		while(count>(i+3)/2)
		{
			if(a[j]-1==mid)
			{
				a[j]=0;
				--j;
				--count;
			}
			else --j;
		}
		int sum=0;
		for(int j=p-2-i;j<p;++j)
		{
			sum+=a[j];
		}
		a[p-3-i]=d-sum;
	}
	cout<<a[0];
}
		


### 将 Simulink Scope 数据导出为结构体带时间格式并绘制图形 为了在 MATLAB 中使用 `plot` 函数绘制来自 Simulink 的 Scope 数据,需遵循特定的数据导出流程。当选择以 "structure with time" 形式保存数据时,这允许用户获取带有时间戳的信号值集合。 配置 Scope 块以便它能输出这种类型的结构体之后,在 MATLAB 工作空间中将会存在一个名为类似于 `ScopeDataX` 的变量(这里的 X 表示具体的 Scope 编号),其中包含了 `.time` 和 `.signals.values` 字段用于表示时间和对应的测量数值[^1]。 下面是一个简单的例子展示如何读取这些字段并将它们作为参数传递给 `plot()` 来创建图表: ```matlab % 使用 plot() 方法绘制单个通道的时间序列图 figure; plot(ScopeData8.time, ScopeData8.signals.values); title('Signal from Scope'); xlabel('Time (s)'); ylabel('Amplitude'); grid on; % 如果有多个通道,则可以通过索引来访问不同的子数组 if iscell(ScopeData8.signals.values) figure; subplot(3, 1, 1); % 创建三个子图布局中的第一个位置 plot(ScopeData8.time, ScopeData8.signals.values{1}); title(['Channel ', num2str(1)]); subplot(3, 1, 2); plot(ScopeData8.time, ScopeData8.signals.values{2}); title(['Channel ', num2str(2)]); subplot(3, 1, 3); plot(ScopeData8.time, ScopeData8.signals.values{3}); title(['Channel ', num2str(3)]); end ``` 这段代码首先尝试绘制所有可用信道上的数据作为一个整体,如果检测到多于一个信道的话就会分别单独处理每一个,并放置在一个包含三个子窗口的图形文件之中[^3]。 对于更复杂的场景,比如想要在同一张图上叠加不同颜色的不同信号线,还可以通过连续调用 `hold on` 实现这一点,如下所示: ```matlab figure; plot(out.ScopeData1.time, out.ScopeData1.signals.values, 'r'); hold on; plot(out.ScopeData2.time, out.ScopeData2.signals.values, 'g'); xlabel('t/s'); ylabel('yd,y/mm'); axis([0 10 -2.5 2.5]); legend({'Signal 1', 'Signal 2'}); ``` 此片段展示了两个独立源产生的两组数据被赋予红色 ('r') 及绿色 ('g') 显示风格后共同呈现在同一坐标系内的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值