CF-14E - Camels(DP)

本文介绍了一种使用四维动态规划的方法来解决绘制带有驼峰的骆驼图形的问题。通过输入驼峰数量和总点数,输出不同形状的骆驼图形数量。该方法涉及边界条件设置、状态转移方程设计以及复杂度控制,适用于计算机科学领域的算法设计与动态规划问题求解。
E - Camels

Crawling in process...Crawling failedTime Limit:2000MS    Memory Limit:65536KB    64bit IO Format:%I64d & %I64u

Description

Bob likes to draw camels: with a single hump, two humps, three humps, etc. He draws a camel by connecting points on a coordinate plane. Now he's drawing camels with t humps, representing them as polylines in the plane. Each polyline consists of n vertices with coordinates (x1, y1), (x2, y2), ..., (xn, yn). The first vertex has a coordinate x1 = 1, the second — x2 = 2, etc. Coordinates yi might be any, but should satisfy the following conditions:

  • there should be t humps precisely, i.e. such indexes j (2 ≤ j ≤ n - 1), so that yj - 1 < yj > yj + 1,
  • there should be precisely t - 1 such indexes j (2 ≤ j ≤ n - 1), so that yj - 1 > yj < yj + 1,
  • no segment of a polyline should be parallel to the Ox-axis,
  • all yi are integers between 1 and 4.

For a series of his drawings of camels with t humps Bob wants to buy a notebook, but he doesn't know how many pages he will need. Output the amount of different polylines that can be drawn to represent camels with t humps for a given number n.

Input

The first line contains a pair of integers n and t (3 ≤ n ≤ 20, 1 ≤ t ≤ 10).

Output

Output the required amount of camels with t humps.

Sample Input

Input
6 1
Output
6
Input
4 2
Output
0

Sample Output

Hint

In the first sample test sequences of y-coordinates for six camels are: 123421, 123431, 123432, 124321, 134321 и 234321 (each digit corresponds to one value of yi).

 

思路:四维DP,d[n][t][j][s] n代表点数(步长),t代表尖峰数,j代表高度,s代表上升(0)还是下降(1)。

          E(dp[1][1][j][0])=1,用上升峰代表完成一个尖峰。初始值看做一个上升峰。

          初始值看成上升峰,那么步长为2就会出现下降峰,但这是不合法的,把它都置0就OK了。

       f[n][t][i][0]+=f[n-1][t-1][j][1]+f[n-1][t][j][0];///更新上升峰(1:上升峰再加一个上升,2:下降峰加个上升)

       f[n][t][i][1]+=f[n-1][t][j][1]+f[n-1][t][j][0];///更新下降峰(1:下降峰再加一个下降,2:上升峰加个下降)

失误:比赛的时候想过用DP,但觉得搜索+减枝也行,就直接搜了,后来才发现搜索会爆。。。

 

#include<iostream>
#include<cstring>
using namespace std;
const int mm=22;
int f[mm][mm][mm][2];
int main()
{
  memset(f,0,sizeof(f));

    for(int i=1;i<5;i++)
      f[1][1][i][0]=1;///边界上升尖峰为1
    ///0代表上升,1下降,上升时尖峰减1
    for(int k=2;k<=20;k++)
    for(int l=1;l<=10;l++)
    for(int i=1;i<=4;i++)
    {
        for(int j=1;j<i;j++)///更新上升峰(1:上升峰再加一个上升,2:下降峰加个上升)
        f[k][l][i][0]+=f[k-1][l-1][j][1]+f[k-1][l][j][0];
        if(k==2)f[k][l][i][1]=0;///2步不可能的情况
        else for(int j=i+1;j<5;j++)///更新下降峰(1:下降峰再加一个下降,2:上升峰加个下降)
          f[k][l][i][1]+=f[k-1][l][j][1]+f[k-1][l][j][0];
    }
    int n,t;
    int ans;
    while(cin>>n>>t)
    {  ans=0;
      for(int i=1;i<=4;i++)
        ans+=f[n][t][i][1];
      cout<<ans<<"\n";
    }
}


 

 

 

 

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
### 使用CAMels-GB 数据集进行径流预测 #### CAMels-GB 数据集概述 CAMels-GB 是一个综合性的水文数据集合,涵盖了英国多个流域的气象、地理和水文观测数据。这些数据对于构建和验证径流预测模型至关重要[^1]。 #### 准备工作 为了有效利用 CAMels-GB 进行径流预测,需完成如下准备工作: - **下载并处理数据**:从官方渠道获取最新版本的数据文件,并按照研究需求提取所需变量。 - **预处理阶段**:清洗缺失值、异常值;标准化不同单位下的物理量;确保时间序列的一致性和连续性。 ```python import pandas as pd # 加载数据 data = pd.read_csv('path_to_camels_gb_data.csv') # 处理缺失值 data.fillna(method='ffill', inplace=True) # 转换日期列格式 data['date'] = pd.to_datetime(data['date']) ``` #### 构建预测模型 针对无监测数据或缺乏足够历史记录的情况,可以采用多种机器学习算法来弥补传统统计方法的不足。以下是几种常用的技术路径及其特点: ##### 统计学方法 基于经典的时间序列分析框架,如 ARIMA 或者 SARIMAX 模型能够捕捉到季节性和趋势成分,在短期预报方面表现良好。 ##### 物理机制驱动模型 例如 GR4J 结构化水文模型通过模拟降水入渗过程实现对河流流量的有效估计。这类模型依赖于先验知识设定参数范围,适合有较多背景资料支持的应用场景。 ##### 人工智能技术 近年来兴起的人工神经网络(ANN)、长短期记忆网络(LSTM)等深度学习架构因其强大的特征表达能力而备受关注。特别是 LSTM 可以较好地应对长时间跨度内的动态变化模式识别任务。 ```python from sklearn.model_selection import train_test_split from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, LSTM X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) model = Sequential() model.add(LSTM(50, activation='relu', input_shape=(n_steps, n_features))) model.add(Dense(1)) model.compile(optimizer='adam', loss='mse') model.fit(X_train, y_train, epochs=200, verbose=False) ``` #### 验证与评估 建立好模型之后,还需要经过严格的测试环节才能投入实际应用。常用的性能指标包括但不限于均方误差(MSE)、纳什效率系数(Nash-Sutcliffe Efficiency),以及相对体积偏差(Volume Bias)等。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值