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");
    }

}

胚胎实例分割数据集 一、基础信息 • 数据集名称:胚胎实例分割数据集 • 图片数量: 训练集:219张图片 验证集:49张图片 测试集:58张图片 总计:326张图片 • 训练集:219张图片 • 验证集:49张图片 • 测试集:58张图片 • 总计:326张图片 • 分类类别: 胚胎(embryo):表示生物胚胎结构,适用于发育生物学研究。 • 胚胎(embryo):表示生物胚胎结构,适用于发育生物学研究。 • 标注格式:YOLO格式,包含实例分割的多边形标注,适用于实例分割任务。 • 数据格式:图片来源于相关研究领域,格式为常见图像格式,细节清晰。 二、适用场景 • 胚胎发育AI分析系统:构建能够自动分割胚胎实例的AI模型,用于生物学研究中的形态变化追踪和量化分析。 • 医学与生物研究:在生殖医学、遗传学等领域,辅助研究人员进行胚胎结构识别、分割和发育阶段评估。 • 学术与创新研究:支持计算机视觉与生物医学的交叉学科研究,推动AI在胚胎学中的应用,助力高水平论文发表。 • 教育与实践培训:用于高校或研究机构的实验教学,帮助学生和从业者掌握实例分割技术及胚胎学知识。 三、数据集优势 • 精准与专业性:实例分割标注由领域专家完成,确保胚胎轮廓的精确性,提升模型训练的可靠性。 • 任务专用性:专注于胚胎实例分割,填补相关领域数据空白,适用于细粒度视觉分析。 • 格式兼容性:采用YOLO标注格式,易于集成到主流深度学习框架中,简化模型开发与部署流程。 • 科学价值突出:为胚胎发育研究、生命科学创新提供关键数据资源,促进AI在生物学中的实际应用。
<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、付费专栏及课程。

余额充值