P1410 子序列

题目描述

给定一个长度为N(N为偶数)的序列,问能否将其划分为两个长度为N/2的严格递增子序列,

输入输出格式

输入格式:

 

若干行,每行表示一组数据。对于每组数据,首先输入一个整数N,表示序列的长度。之后N个整数表示这个序列。

 

输出格式:

 

同输入行数。对于每组数据,如果存在一种划分,则输出“Yes!”,否则输出“No!“。

 

输入输出样例

输入样例#1: 复制
6 3 1 4 5 8 7
6 3 2 1 6 5 4
输出样例#1: 复制
Yes!
No!

说明

【数据范围】

共三组数据,每组数据行数<=50,0 <= 输入的所有数 <= 10^9

第一组(30%):N <= 20

第二组(30%):N <= 100

第三组(40%):N <= 2000

 

//。。这道题。。。。我竟然不会做
//如果一个序列中的不升子序列长度>2了,那么这个序列一定就不能被分成2个lis了
//一定是>2个lis
//emmmm   ----> 最长不升子序列长度就是最大最长上升子序列的个数。 <----
//所以,如果一个序列能被分成两个长度相等的lis,那么最长不升子序列长度一定<=2
//如果==2的话,正好可以分成两个,否则原序列是个完全单调上升序列,把它怎么拆都能拆成两个长度相等的lis 

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;

const int N=2005;

int n;
int a[N];
int dp[N];
int lis[N],len;

int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;++i)
            scanf("%d",a+i);
        lis[len=1]=a[1];
        bool flag=0;
        for(int i=2;i<=n;++i)
        {
            if(a[i]>lis[len])
            {
                int pos=lower_bound(lis+1,lis+len+1,a[i],greater<int>() )-lis;        //lower_bound()真好用啊 
                if(pos==len+1)
                    lis[1]=a[i];
                //cout<<pos<<" ";
                else lis[pos]=a[i];
            }
            else
                lis[++len]=a[i];
            if(len>2)
            {
                flag=1;
                break;
            }
        }
        if(flag)
            puts("No!");
        else
            puts("Yes!");
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/lovewhy/p/8476991.html

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
标题基于SpringBoot的学生学习成果管理平台研究AI更换标题第1章引言介绍研究背景、目的、意义以及论文结构。1.1研究背景与目的阐述学生学习成果管理的重要性及SpringBoot技术的优势。1.2研究意义分析该平台对学生、教师及教育机构的意义。1.3论文方法与结构简要介绍论文的研究方法和整体结构。第2章相关理论与技术概述SpringBoot框架、学习成果管理理论及相关技术。2.1SpringBoot框架简介介绍SpringBoot的基本概念、特点及应用领域。2.2学习成果管理理论基础阐述学习成果管理的核心理论和发展趋势。2.3相关技术分析分析平台开发所涉及的关键技术,如数据库、前端技术等。第3章平台需求分析与设计详细分析平台需求,并设计整体架构及功能模块。3.1需求分析从学生、教师、管理员等角度对平台需求进行深入分析。3.2整体架构设计设计平台的整体架构,包括技术架构和逻辑架构。3.3功能模块设计具体设计平台的核心功能模块,如成果展示、数据分析等。第4章平台实现与测试阐述平台的实现过程,并进行功能测试与性能分析。4.1平台实现详细介绍平台的开发环境、关键代码实现及技术难点解决方案。4.2功能测试对平台各项功能进行全面测试,确保功能正确无误。4.3性能分析分析平台的性能指标,如响应时间、并发处理能力等。第5章平台应用与效果评估探讨平台在实际教学中的应用,并对其效果进行评估。5.1平台应用案例选取典型应用案例,展示平台在实际教学中的使用情况。5.2效果评估方法介绍平台效果评估的具体方法和指标。5.3评估结果分析根据评估数据,对平台的应用效果进行深入分析。第6章结论与展望总结论文的主要研究成果,并指出未来研究方向。6.1研究结论概括性地阐述论文的研究结论和主要贡献。6.2研究展望针对当前研究的不足之处,提出未来改进和扩展的方向。
module constants implicit none ! 物理常数 real, parameter :: pi = 3.141592653589793 real, parameter :: R_univ = 8.314462618 ! 通用气体常数 [J/(mol·K)] real, parameter :: k_B = 1.380649e-23 ! 玻尔兹曼常数 [J/K] real, parameter :: N_A = 6.02214076e23 ! 阿伏伽德罗常数 [1/mol] ! 水物性参数 real, parameter :: M_H2O = 0.018015 ! 水的摩尔质量 [kg/mol] real, parameter :: rho_l = 1000.0 ! 液态水密度 [kg/m³] real, parameter :: sigma_H2O = 0.072 ! 表面张力 [N/m] real, parameter :: h_fg = 2.257e6 ! 汽化潜热 [J/kg] real, parameter :: cp_v = 1410.0 ! 水蒸气比热 [J/(kg·K)] ! 发动机参数 real, parameter :: De = 0.2 ! 喷口直径 [m] real, parameter :: T0 = 1000.0 ! 喷口温度 [K] real, parameter :: P0 = 50000.0 ! 喷口压力 [Pa] real, parameter :: U0 = 2000.0 ! 喷口速度 [m/s] real, parameter :: X_H2O = 0.22 ! 水蒸气摩尔分数 ! 数值参数 integer, parameter :: nx = 100 ! 空间网格数 integer, parameter :: nt = 1000 ! 时间步数 real, parameter :: dt = 1e-5 ! 时间步长 [s] real, parameter :: L_domain = 10.0 * De ! 计算域长度 [m] end module constants program condensation_model use constants implicit none ! 场变量定义 real :: x(nx), dx real :: T_g(nx), P_g(nx), U_g(nx), rho_g(nx) real :: N_d(nx), Y_d(nx), r_d(nx) ! 液滴数密度、质量分数、半径 real :: m_v(nx), J_nuc(nx), dr_dt(nx) ! 凝结速率、成核率、半径增长率 ! 辅助变量 real :: S(nx), r_c(nx), P_sat(nx) integer :: i, t_step ! 初始化网格 dx = L_domain / (nx - 1) do i = 1, nx x(i) = (i - 1) * dx end do ! 初始化流场 (简化线性分布) do i = 1, nx P_g(i) = P0 * (1.0 - 0.8 * x(i)/L_domain) T_g(i) = T0 * (1.0 - 0.6 * x(i)/L_domain) U_g(i) = U0 * (1.0 - 0.3 * x(i)/L_domain) rho_g(i) = P_g(i) / (287.0 * T_g(i)) ! 空气气体常数 end do ! 初始化液相变量 N_d = 0.0 Y_d = 0.0 r_d = 0.0 ! 时间迭代循环 do t_step = 1, nt ! 计算过饱和比和临界半径 call calculate_saturation_ratio(P_g, T_g, S, P_sat, r_c) ! 应用Schmidt-Appleman冷凝判据 where(S > 1.0) ! Schmidt-Appleman条件: 仅当S>1时计算成核 call nucleation_model(T_g, rho_g, S, r_c, J_nuc) call droplet_growth_model(T_g, rho_g, r_d, r_c, S, dr_dt) elsewhere J_nuc = 0.0 dr_dt = 0.0 end where ! 计算凝结质量速率 do i = 1, nx if (r_d(i) > 0.0) then m_v(i) = 4.0 * pi * r_d(i)**2 * rho_l * dr_dt(i) * N_d(i) else m_v(i) = 0.0 endif end do ! 更新液相控制方程 call update_liquid_phase(N_d, Y_d, r_d, J_nuc, m_v, dr_dt) ! 更新气相控制方程 call update_gas_phase(T_g, P_g, U_g, rho_g, m_v) ! 输出数据 (每100步输出一次) if (mod(t_step, 100) == 0) then call output_data(t_step, x, T_g, P_g, N_d, Y_d, r_d) end if end do ! 输出最终结果 call output_data(nt, x, T_g, P_g, N_d, Y_d, r_d) contains ! 计算饱和比和临界半径 subroutine calculate_saturation_ratio(P, T, S, P_sat, r_c) real, intent(in) :: P(:), T(:) real, intent(out) :: S(:), P_sat(:), r_c(:) integer :: i do i = 1, size(P) ! Antoine方程计算饱和蒸气压 (简化形式) P_sat(i) = 611.0 * exp(5423.0 * (1.0/273.0 - 1.0/T(i))) ! [Pa] ! 过饱和比 S(i) = (X_H2O * P(i)) / P_sat(i) ! Kelvin-Helmholtz临界半径 if (S(i) > 1.0) then r_c(i) = 2.0 * sigma_H2O / (rho_l * (R_univ/M_H2O) * T(i) * log(S(i))) else r_c(i) = 1e-9 ! 极小值 end if end do end subroutine ! 成核模型 (经典成核理论) subroutine nucleation_model(T, rho_g, S, r_c, J_nuc) real, intent(in) :: T(:), rho_g(:), S(:), r_c(:) real, intent(out) :: J_nuc(:) real :: A, B, DeltaG integer :: i do i = 1, size(T) if (S(i) > 1.0) then ! 吉布斯自由能变化 DeltaG = 4.0 * pi * r_c(i)**2 * sigma_H2O / 3.0 ! 成核率计算 (简化阿伦尼乌兹形式) A = 1e30 ! 指前因子 [1/(m³·s)] B = 4.0 * pi * r_c(i)**2 * sigma_H2O / (3.0 * k_B * T(i)) J_nuc(i) = A * exp(-B) else J_nuc(i) = 0.0 end if end do end subroutine ! Gyarmathy液滴生长模型 subroutine droplet_growth_model(T, rho_g, r, r_c, S, dr_dt) real, intent(in) :: T(:), rho_g(:), r(:), r_c(:), S(:) real, intent(out) :: dr_dt(:) real :: lambda_v, Kn, Pr_v, T_sat integer :: i do i = 1, size(T) if (S(i) > 1.0 .and. r(i) > 0.0) then ! 蒸汽导热系数 lambda_v = 0.026 ! 克努森数 Kn = sqrt(pi * M_H2O / (2.0 * R_univ * T(i))) / r(i) ! 普朗特数 Pr_v = 0.71 ! 过冷度 T_sat = 373.0 - (P_g(i) - 101325.0) * 0.00025 ! Gyarmathy模型 dr_dt(i) = lambda_v * (T_sat - T(i)) * (1.0 - r_c(i)/r(i)) & / (rho_l * h_fg * r(i) * (1.0 + 3.78*(1.0 - 0.82*Kn)/Pr_v * Kn)) else dr_dt(i) = 0.0 end if end do end subroutine ! 更新液相变量 subroutine update_liquid_phase(N_d, Y_d, r_d, J_nuc, m_v, dr_dt) real, intent(inout) :: N_d(:), Y_d(:), r_d(:) real, intent(in) :: J_nuc(:), m_v(:), dr_dt(:) integer :: i do i = 1, size(N_d) ! 更新数密度 (考虑对流和成核) N_d(i) = N_d(i) + dt * (J_nuc(i) - U_g(i) * (N_d(i) - N_d(max(1,i-1)))/dx) ! 更新质量分数 (考虑对流和凝结) Y_d(i) = Y_d(i) + dt * (m_v(i)/rho_l - U_g(i) * (Y_d(i) - Y_d(max(1,i-1)))/dx) ! 更新液滴半径 (考虑生长) if (N_d(i) > 0.0) then r_d(i) = r_d(i) + dt * dr_dt(i) ! 从质量和数量计算半径 (作为验证) r_d(i) = (3.0 * Y_d(i) / (4.0 * pi * rho_l * N_d(i)))**(1.0/3.0) else r_d(i) = 0.0 end if end do end subroutine ! 更新气相变量 subroutine update_gas_phase(T, P, U, rho, m_v) real, intent(inout) :: T(:), P(:), U(:), rho(:) real, intent(in) :: m_v(:) integer :: i do i = 2, size(T)-1 ! 连续方程 rho(i) = rho(i) - dt * m_v(i) ! 动量方程 U(i) = U(i) - dt * U(i) * (U(i) - U(i-1))/dx - dt*(P(i)-P(i-1))/(dx*rho(i)) ! 能量方程 T(i) = T(i) - dt * U(i) * (T(i) - T(i-1))/dx + dt * m_v(i) * h_fg / (rho(i) * cp_v) ! 状态方程 P(i) = rho(i) * 287.0 * T(i) end do end subroutine ! 数据输出 subroutine output_data(step, x, T, P, N, Y, r) integer, intent(in) :: step real, intent(in) :: x(:), T(:), P(:), N(:), Y(:), r(:) character(len=50) :: filename integer :: i ! 云图数据 write(filename, '(a,i6.6,a)') 'cloud_data_', step, '.dat' open(unit=10, file=filename, status='replace') write(10, *) 'Variables = "x", "T", "P", "N", "Y", "r"' do i = 1, size(x) write(10, '(6e16.7)') x(i), T(i), P(i), N(i), Y(i), r(i) end do close(10) ! 时间序列数据 (在特定位置) if (step == nt) then open(unit=11, file='time_data.dat', status='replace') write(11, *) 'Variables = "Time", "N_center", "Y_center", "r_center"' do i = 1, nt, 100 write(11, '(4e16.7)') i*dt, N(nx/2), Y(nx/2), r(nx/2) end do close(11) end if end subroutine end program condensation_model修改程序error #7361: Only array assignment-stmt, where-stmt, where-construct-stmt, elsewhere-stmt, masked-elsewhere-stmt, or endwhere-stmt permitted. Compilation Aborted (code 1) Compilation Aborted (code 1) error #7361: Only array assignment-stmt, where-stmt, where-construct-stmt, elsewhere-stmt, masked-elsewhere-stmt, or endwhere-stmt permitted. error #7361: Only array assignment-stmt, where-stmt, where-construct-stmt, elsewhere-stmt, masked-elsewhere-stmt, or endwhere-stmt permitted. error #7361: Only array assignment-stmt, where-stmt, where-construct-stmt, elsewhere-stmt, masked-elsewhere-stmt, or endwhere-stmt permitted.
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值