HDU 1556 Color the ball

Problem Description
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?
 

Input
每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。
当N = 0,输入结束。
 

Output

每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。

#include<bits/stdc++.h>
using namespace std;
const int N=400010;
int n,tree[N],laz[N];
void pushdown(int node,int len1,int len2){
    if(laz[node]!=0){
        tree[node*2]+=len1*laz[node];
        tree[node*2+1]+=len2*laz[node];
        laz[node*2]+=laz[node];
        laz[node*2+1]+=laz[node];
        laz[node]=0;
    }
}
void pushup(int node){
    tree[node]=tree[node*2]+tree[node*2+1];
}
void add(int node,int L,int R,int l,int r){
    if(l<=L&&R<=r){
        laz[node]++;
        tree[node]+=R-L+1;
        return;
    }
    int mid=(L+R)/2;
    pushdown(node,mid-L+1,R-mid);
    if(mid>=l)add(node*2,L,mid,l,r);
    if(mid<r)add(node*2+1,mid+1,R,l,r);
    pushup(node);
}
void query(int node,int L,int R){
    if(L==R){
        printf("%d",tree[node]);
        if(L!=n)printf(" ");
        return;
    }
    int mid=(L+R)/2;
    pushdown(node,mid-L+1,R-mid);
    query(node*2,L,mid);
    query(node*2+1,mid+1,R);
    pushup(node);
}
int main(){
    int i,x,y;
    while(scanf("%d",&n)){
        if(n==0)return 0;
        for(i=1;i<=n;i++){
            scanf("%d%d",&x,&y);
            add(1,1,n,x,y);
        }
        query(1,1,n);
        printf("\n");
        memset(tree,0,sizeof(tree));
        memset(laz,0,sizeof(laz));
    }
    return 0;
}


内容概要:本文是一份关于“Soldiers”问题的算法设计与分析实践报告,研究如何将分布在网格点上的n个士兵重排成一条水平队列,使得总体移动步数最少。解决方案基于中位数性质,分别处理x和y方向的最优位置:y坐标取所有士兵y坐标的中位数,x坐标通过预调整(原始x坐标减去对应索引)后再取中位数来确定最佳起始位置。算法时间复杂度为O(n logn),主要开销来自三次排序操作;空间复杂度为O(n),用于存储坐标数据。实验验证了算法在样例输入下的正确性,得出最小移动步数为8,符合预期输出。报告还指出了实现过程中常见的索引处理错误及偶数情况下中位数选择的一致性问题,并建议加强极端情况的测试覆盖。; 适合人群:具备一定算法基础、正在学习算法设计与分析的计算机相关专业学生或初级开发者,尤其是对中位数优化、贪心策略和排序应用感兴趣的人员。; 使用场景及目标:①掌握利用中位数求解曼哈顿距离最小和的经典方法;②理解如何将二维问题分解为两个独立的一维问题进行优化;③学习排序与索引变换在实际算法中的巧妙应用;④提升对边界条件和代码细节的调试能力。; 阅读建议:此资源侧重于算法思想的理解与实现细节的剖析,建议读者结合代码逐步调试,重点关注x坐标调整与重新排序的过程,同时自行构造多种测试用例(包括边界和极端情况)以加深理解。
内容概要:本文介绍了基于Simulink的光伏阵列常见故障仿真模型,旨在通过建模仿真手段研究光伏系统在不同故障条件下的运行特性。文中详细构建了光伏阵列在局部遮蔽、组件老化、旁路二极管失效等典型故障情况下的仿真模型,利用Simulink平台实现动态响应分析,帮助理解故障对输出功率、电流电压特性的影响,并为光伏系统的故障诊断、运维优化和可靠性提升提供技术支持。同时文档还列举了多个电力系统相关仿真案例,涵盖电力系统N-k故障、短期负荷预测、无功优化、储能配置、无人机路径规划等多个方向,展示了MATLAB/Simulink在新能源与智能系统仿真中的广泛应用。; 适合人群:具备一定电力电子、新能源或自动化背景的高校研究生、科研人员及工程技术人员;熟悉MATLAB/Simulink基本操作的学习者;从事光伏系统设计、故障诊断或智能优化研究的相关从业者; 使用场景及目标:①用于光伏系光伏阵列常见故障仿真模型(Simaulink仿真实现)统故障机理分析与诊断算法开发;②支撑科研项目中的仿真验证环节;③辅助教学实验与课程设计,提升对光伏系统动态行为的理解;④为后续智能诊断模型(如神经网络、深度学习)提供数据支持; 阅读建议:建议结合提供的网盘资源下载完整代码与模型文件,边学习边实践,重点掌握Simulink建模流程与故障设置方法,同时可拓展学习文中提及的BP神经网络、粒子群优化、YALMIP工具箱等关联技术,以实现更复杂的系统集成与优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值