Children's Game UVA - 10905 贪心

本文介绍了一种使用C++实现的字符串排序方法,通过自定义比较函数实现字符串数组的排序,并分享了循环处理技巧和数学函数复习等内容。

转自。。http://www.cnblogs.com/scau20110726/archive/2013/04/23/3039236.html

我没有想到用string或者char* 自带的比较函数,,还打算自己比较。。

感觉这种想法很好。。

还有一个收获就是另一种写法中的;

对于循环的处理。。可以用(j+1)%lenj;

还有各种lcm  gcd 的复习。。


#include<bits/stdc++.h>

using namespace std;
#define mem(a,b) memset(a,b,sizeof(a));
#define sf scanf
#define pf printf
#define bug1 printf("bug1\n");
#define N 35
#define M 55
#define LL long long
string num[M];
bool cmp(string a,string b){
    return a+b>b+a;
}
int main(){
    int n;
    while(~sf("%d",&n)&&n){
        for(int i=1;i<=n;++i)
            cin>>num[i];
        sort(num+1,num+1+n,cmp);
        for(int i=1;i<=n;++i)
            cout<<num[i];
        pf("\n");
    }

}

具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)内容概要:本文介绍了一个涵盖多个科研领域的综合性MATLAB仿真资源集合,重点聚焦于光伏发电系统中基于粒子群优化(PSO)算法的最大功率点追踪(MPPT)技术的Simulink仿真实现。文档还列举了多种MPPT方法(如P&O、增量电导法、神经网络、模糊逻辑控制等),并展示了该团队在电力系统、智能优化算法、机器学习、路径规划、无人机控制、信号处理等多个方向的技术服务能力与代码实现案例。整体内容以科研仿真为核心,提供大量可复现的Matlab/Simulink模型和优化算法应用实例。; 适合人群:具备一定电力电子、自动控制或新能源背景,熟悉MATLAB/Simulink环境,从事科研或工程仿真的研究生、科研人员及技术人员。; 使用场景及目标:①学习并实现光伏系统中基于粒子群算法的MPPT控制策略;②掌握多种智能优化算法在电力系统与自动化领域的建模与仿真方法;③获取可用于论文复现、项目开发和技术攻关的高质量仿真资源。; 阅读建议:建议结合提供的网盘资料,按照研究方向选取对应模块进行实践,重点关注Simulink模型结构与算法代码逻辑的结合,注重从原理到仿真实现的全过程理解,提升科研建模能力。
热成像人物检测数据集 一、基础信息 数据集名称:热成像人物检测数据集 图片数量: 训练集:424张图片 验证集:121张图片 测试集:61张图片 总计:606张热成像图片 分类类别: - 热成像人物:在热成像图像中的人物实例 - 非热成像人物:在非热成像或普通图像中的人物实例,用于对比分析 标注格式: YOLO格式,包含边界框和类别标签,适用于目标检测任务。数据来源于热成像和视觉图像,覆盖多种场景条件。 二、适用场景 热成像监控与安防系统开发: 数据集支持目标检测任务,帮助构建能够在低光、夜间或恶劣环境下自动检测和定位人物的AI模型,提升监控系统的可靠性和实时响应能力。 红外视觉应用研发: 集成至红外摄像头或热成像设备中,实现实时人物检测功能,应用于安防、军事、救援和工业检测等领域。 学术研究与创新: 支持计算机视觉与热成像技术的交叉研究,助力开发新算法用于人物行为分析或环境适应型检测模型。 教育与培训: 可用于高校或培训机构,作为学习热成像人物检测和AI模型开发的教学资源,提升实践技能。 三、数据集优势 精准标注与多样性: 每张图片均由专业标注员标注,确保边界框定位准确,类别分类清晰。包含热成像和非热成像类别,提供对比数据,增强模型的泛化能力和鲁棒性。 场景实用性强: 数据覆盖多种环境条件,如不同光照和天气,模拟真实世界应用,适用于复杂场景下的人物检测任务。 任务适配性高: YOLO标注格式兼容主流深度学习框架(如YOLOv5、YOLOv8等),可直接加载使用,支持快速模型开发和评估。 应用价值突出: 专注于热成像人物检测,在安防、监控和特殊环境检测中具有重要价值,支持早期预警和高效决策。
<think>我们正在讨论QTreeView的分支样式设置,特别是涉及open、closed、has-children、has-siblings等状态的样式规则。这些规则使用Qt样式表(QSS)来定义树视图中分支指示器的外观。下面我将逐一解释用户提到的四个选择器组合,并讨论它们的作用和可能出现的问题。 ### 1. `branch:open:has-children:!has-siblings` - **含义**:匹配处于展开状态(open)、有子节点(has-children)且没有兄弟节点(!has-siblings)的分支。 - **作用**:这种状态通常对应树中的唯一子节点(即该节点是其父节点的唯一子节点)且已展开。可以为这种情况设置特定的图标(例如一个没有竖线的展开图标)。 - **示例样式**: ```css QTreeView::branch:open:has-children:!has-siblings { image: url(branch-open-alone.png); /* 没有兄弟节点时的展开图标 */ } ``` ### 2. `branch:open:has-children:has-siblings` - **含义**:匹配处于展开状态(open)、有子节点(has-children)且有兄弟节点(has-siblings)的分支。 - **作用**:这种状态对应树中有兄弟节点且已展开的节点。通常需要显示一个带有竖线(表示有兄弟节点)的展开图标。 - **示例样式**: ```css QTreeView::branch:open:has-children:has-siblings { image: url(branch-open-with-siblings.png); /* 有兄弟节点时的展开图标 */ } ``` ### 3. `branch:has-children:!has-siblings:closed` - **含义**:匹配有子节点(has-children)、没有兄弟节点(!has-siblings)且处于折叠状态(closed)的分支。 - **作用**:这种状态对应树中唯一子节点(无兄弟节点)且处于折叠状态。可以设置一个特定的折叠图标(例如没有竖线的折叠图标)。 - **示例样式**: ```css QTreeView::branch:has-children:!has-siblings:closed { image: url(branch-closed-alone.png); /* 没有兄弟节点时的折叠图标 */ } ``` ### 4. `branch:closed:has-children:has-siblings` - **含义**:匹配处于折叠状态(closed)、有子节点(has-children)且有兄弟节点(has-siblings)的分支。 - **作用**:这种状态对应树中有兄弟节点且处于折叠状态的节点。通常需要显示一个带有竖线的折叠图标(表示有兄弟节点)。 - **示例样式**: ```css QTreeView::branch:closed:has-children:has-siblings { image: url(branch-closed-with-siblings.png); /* 有兄弟节点时的折叠图标 */ } ``` ### 注意事项和常见问题 1. **选择器优先级**: - 当多个规则匹配同一个分支时,后定义的规则会覆盖前面的规则。因此,应该按照从一般到特殊的顺序排列规则。 - 如果规则冲突,可能导致图标显示不正确。 2. **图标资源路径**: - 在指定图片URL时,使用绝对路径或资源路径(如`:/images/branch-open.png`)。如果路径错误,图标将无法显示。 3. **图标尺寸和清晰度**: - 确保提供的图标尺寸适合树视图的分支指示器区域。过大的图标会被压缩,过小的图标可能不清晰。 - 建议使用SVG格式或与设备像素比匹配的多分辨率PNG图标。 4. **样式继承**: - 分支指示器的样式不会继承树视图的其他样式(如背景色)。如需改变背景,需要单独设置。 5. **动态状态更新**: - 当节点展开/折叠或兄弟节点被添加/删除时,样式会自动更新。但在编程中动态修改树结构后,可能需要调用`update()`或`style()->unpolish()`确保样式刷新。 6. **跨平台一致性**: - 不同的平台(Windows、macOS、Linux)可能有不同的分支指示器默认样式。如果希望保持一致,需要为所有状态定义样式。 ### 示例完整样式 结合用户提供的引用[1]和引用[2],一个完整的样式设置可能如下: ```css QTreeView::branch:has-siblings:!adjoins-item { border-image: url(vline.png) 0; /* 用于绘制节点之间的垂直线 */ } QTreeView::branch:has-siblings:adjoins-item { border-image: url(branch-more.png) 0; /* 有兄弟节点且相邻项的分支样式 */ } QTreeView::branch:!has-children:!has-siblings:adjoins-item { border-image: url(branch-end.png) 0; /* 没有子节点且没有兄弟节点(末尾节点) */ } /* 以下为问题中关注的四个状态 */ QTreeView::branch:has-children:!has-siblings:closed, QTreeView::branch:closed:has-children:has-siblings { border-image: none; image: url(branch-closed.png); /* 折叠状态 */ } QTreeView::branch:open:has-children:!has-siblings, QTreeView::branch:open:has-children:has-siblings { border-image: none; image: url(branch-open.png); /* 展开状态 */ } ``` ### 相关问题 §§相关问题§§ 1. 如何为QTreeView的不同层级设置不同的分支图标? 2. 当自定义分支图标后,如何调整图标与文本之间的间距? 3. 在Qt中,除了使用样式表,还有哪些方法可以自定义树视图的分支指示器? 4. 当树视图节点非常多时,自定义分支图标是否会影响性能?如何优化? </think>### QTreeView分支样式设置详解 在QTreeView中,分支样式通过伪状态选择器控制,以下是对关键状态组合的解释: #### 1. `branch:open:has-children:!has-siblings` - **含义**:匹配**已展开**、**有子节点**且**没有兄弟节点**的分支 - **作用**:用于树形结构中唯一子节点的展开状态 - **典型场景**:顶级节点或独立分支的展开图标 - **示例样式**: ```css image: url(branch-open-alone.png); ``` #### 2. `branch:open:has-children:has-siblings` - **含义**:匹配**已展开**、**有子节点**且**有兄弟节点**的分支 - **作用**:处理非唯一子节点的展开状态 - **典型场景**:中间节点展开时的分支连接线 - **示例样式**: ```css image: url(branch-open-group.png); ``` #### 3. `branch:has-children:!has-siblings:closed` - **含义**:匹配**有子节点**、**没有兄弟节点**且**已折叠**的分支 - **作用**:独立节点的折叠指示器 - **典型场景**:单个子节点的折叠状态 - **示例样式**: ```css image: url(branch-closed-alone.png); ``` #### 4. `branch:closed:has-children:has-siblings` - **含义**:匹配**已折叠**、**有子节点**且**有兄弟节点**的分支 - **作用**:处理分支组中的折叠状态 - **典型场景**:多子节点树结构的折叠指示器 - **示例样式**: ```css image: url(branch-closed-group.png); ``` ### 完整分支状态系统 Qt的分支样式基于四个核心状态属性: 1. **展开状态**:`open`/`closed` 2. **子节点存在**:`has-children`/`!has-children` 3. **兄弟节点存在**:`has-siblings`/`!has-siblings` 4. **相邻关系**:`adjoins-item` 状态组合形成树形结构的完整视觉表示: ```mermaid graph TD A[根节点] --> B[分支:!has-siblings] A --> C[分支:has-siblings] B --> D[open状态] B --> E[closed状态] C --> F[open状态] C --> G[closed状态] D --> H[有子节点] D --> I[无子节点] ``` ### 常见问题及解决方案 1. **图标显示异常** - **现象**:自定义图标不显示或尺寸错误 - **解决方案**: ```css QTreeView::branch { background: none; /* 清除默认背景 */ image: url(default.png); /* 设置默认图标 */ } ``` 2. **状态覆盖问题** - **现象**:特定状态样式被覆盖 - **原因**:选择器优先级冲突 - **解决方案**:按从通用到特殊的顺序排列规则 ```css /* 通用规则 */ QTreeView::branch:closed { ... } /* 特殊规则 */ QTreeView::branch:closed:has-children { ... } ``` 3. **性能问题** - **现象**:大型树结构渲染卡顿 - **优化方案**: - 使用`QPixmapCache`缓存图标 - 避免在样式表中使用高分辨率图片 - 设置`QTreeView::setUniformRowHeights(true)` 4. **样式继承问题** - **现象**:分支线颜色不匹配 - **解决方案**:显式设置所有相关属性 ```css QTreeView::branch:has-siblings:!adjoins-item { border-image: url(vline.png) 0; border-color: #333; /* 显式定义颜色 */ } ``` ### 最佳实践建议 1. **图标设计原则**: - 展开/折叠图标应有明显视觉差异 - 分支线颜色需与文本颜色协调(建议对比度至少4.5:1) - 推荐尺寸:16×16像素(支持高DPI缩放) 2. **状态检测技巧**: ```cpp // 调试用:打印节点的状态组合 qDebug() << "hasChildren:" << index.model()->hasChildren(index) << "hasSiblings:" << (index.model()->rowCount(index.parent()) > 1); ``` 3. **跨平台适配**: ```css /* Windows高DPI适配 */ @media (-webkit-device-pixel-ratio: 2) { QTreeView::branch { image: url(icon@2x.png); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值