uva1493 - Draw a Mess 并查集路径压缩

C#实战:基于ONNX与SCRFD/ArcFace的高效人脸识别系统开发 本文详细介绍了如何在C#环境中,利用ONNX Runtime高效部署SCRFD人脸检测与ArcFace人脸识别模型,构建一个完整的、高性能的人脸识别系统。内容涵盖环境搭建、模型推理、人脸对齐、特征提取等核心模块,并提供了从Demo到生产系统的优化思路与实战代码,为.NET开发者提供了一套开箱即用的解决方案。 阅读详情

It's graduated season, every students should leave something on the wall, so....they draw a lot of geometry shape with different color.

When teacher come to see what happened, without getting angry, he was surprised by the talented achievement made by students. He found the wall full of color have a post-modern style so he want to have an in-depth research on it.

To simplify the problem, we divide the wall into n*m (1$ \le$n$ \le$200, 1$ \le$m$ \le$50000) pixels, and we have got the order of coming students who drawing on the wall. We found that all students draw four kinds of geometry shapes in total that is Diamond, Circle, Rectangle and Triangle. When a student draw a shape in pixel (i, j) with color c (1$ \le$c$ \le$9), no matter it is covered before, it will be covered by color c.

There are q (1$ \le$q$ \le$50000) students who have make a drawing one by one. And after q operation we want to know the amount of pixels covered by each color.

Input 

There are multiple test cases.

In the first line of each test case contains three integers n, m, q. The next q lines each line contains a string at first indicating the geometry shape:

  • Circle: given xc, yc, r, c, and you should cover the pixels (x, y) which satisfied inequality (x - xc)2 + (y - yc)2$ \le$r2 with color c;
  • Diamond: given xc, yc, r, c, and you should cover the pixels (x, y) which satisfied inequality | x - xc| + | y - yc|$ \le$r with color c;
  • Rectangle: given xc, yc, l, w, c, and you should cover the pixels (x, y) which satisfied xc$ \le$x$ \le$xc + l - 1, yc$ \le$y$ \le$yc + w - 1 with color c;
  • Triangle: given xc, yc, w, c, W is the bottom length and is odd, the pixel (xc, yc) is the middle of the bottom. We define this triangle is isosceles and the height of this triangle is (w + 1)/2, you should cover the correspond pixels with color c;


Note: all shape should not draw out of the n*m wall! You can get more details from the sample and hint. (0$ \le$xc, x$ \le$n - 1, 0$ \le$yc, y$ \le$m - 1)

Output 

For each test case you should output nine integers indicating the amount of pixels covered by each color.

  N*M的矩阵,总共个有9种颜色,有4种操作,每种操作在一定范围内涂上某种颜色,后涂的可以覆盖前面涂的,问最后每种颜色有多少个。

  因为行数很少列数很多,所以对每行进行并查集路径压缩。倒着处理,相当于先涂上的颜色不会被后涂上的颜色覆盖,pa为下一个未涂色的结点,那么对行处理路径压缩就会跳过已经涂色的结点,比如当前行第i列涂完了下次就要涂pa[i+1],并且把pa[i+1]也赋给pa[i]。

 

#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<stack>
#include<algorithm>
#define INF 0x3f3f3f3f
#define eps 1e-9
#define MAXNODE 105
#define MOD 10000007
#define SIGMA_SIZE 4
typedef long long LL;
using namespace std;

const int MAXN=210;
const int MAXM=50010;
const int MAXQ=50010;

int N,M,Q,pa[MAXN][MAXM],ans[15];

int findset(int *pa,int x){
    return pa[x]==x?x:pa[x]=findset(pa,pa[x]);
}

struct OP{
    char str[20];
    int xc,yc,l,r,w,c;
    OP(){}
    OP(char* str,int xc,int yc,int l,int r,int w,int c):xc(xc),yc(yc),l(l),r(r),w(w),c(c){
        strcpy(this->str,str);
    }
}op[MAXQ];

void solve(int l,int r,int c,int *pa){
    l=findset(pa,l);
    while(l<=r){
        ans[c]++;
        int t=findset(pa,l+1);
        pa[l]=t;
        l=t;
    }
}


void Circle(int xc,int yc,int r,int c){
    for(int i=max(0,xc-r);i<=min(N-1,xc+r);i++){
        int len=(int)sqrt(r*r-(i-xc)*(i-xc));
        solve(max(0,yc-len),min(M-1,yc+len),c,pa[i]);
    }
}

int Diamond(int xc,int yc,int r,int c){
    for(int i=max(0,xc-r);i<=min(N-1,xc+r);i++){
        int len=r-abs(i-xc);
        solve(max(0,yc-len),min(M-1,yc+len),c,pa[i]);
    }
}

void Rectangle(int xc,int yc,int l,int w,int c){
    for(int i=xc;i<=min(N-1,xc+l-1);i++){
        solve(yc,min(M-1,yc+w-1),c,pa[i]);
    }
}

void Triangle(int xc,int yc,int w,int c){
    for(int i=xc;i<=min(N-1,xc+(w+1)/2-1);i++){
        int len=xc+(w-1)/2-i;
        solve(max(0,yc-len),min(M-1,yc+len),c,pa[i]);
    }
}

int main(){
    freopen("in.txt","r",stdin);
    while(scanf("%d%d%d",&N,&M,&Q)!=EOF){
        memset(ans,0,sizeof(ans));
        for(int i=0;i<N;i++)
            for(int j=0;j<=M;j++) pa[i][j]=j;
        int XC,YC,L,R,W,C;
        char str[10];
        for(int i=0;i<Q;i++){
            scanf("%s",str);
            if(str[0]=='C'||str[0]=='D'){
                scanf("%d%d%d%d",&XC,&YC,&R,&C);
                op[i]=OP(str,XC,YC,0,R,0,C);
            }
            else if(str[0]=='R'){
                scanf("%d%d%d%d%d",&XC,&YC,&L,&W,&C);
                op[i]=OP(str,XC,YC,L,0,W,C);
            }
            else if(str[0]=='T'){
                scanf("%d%d%d%d",&XC,&YC,&W,&C);
                op[i]=OP(str,XC,YC,0,0,W,C);
            }
        }
        for(int i=Q-1;i>=0;i--){
            if(op[i].str[0]=='C') Circle(op[i].xc,op[i].yc,op[i].r,op[i].c);
            else if(op[i].str[0]=='D') Diamond(op[i].xc,op[i].yc,op[i].r,op[i].c);
            else if(op[i].str[0]=='R') Rectangle(op[i].xc,op[i].yc,op[i].l,op[i].w,op[i].c);
            else if(op[i].str[0]=='T') Triangle(op[i].xc,op[i].yc,op[i].w,op[i].c);
        }
        for(int i=1;i<=8;i++) printf("%d ",ans[i]);
        printf("%d\n",ans[9]);
    }
    return 0;
}


【YOLO26实战全攻略】19——智慧交通(一):高速抛洒物与事故检测全流程落地 在智慧交通领域,高速公路抛洒物、交通事故等突发状况常导致二次事故与大规模拥堵,传统人工监控存在响应滞后、覆盖有限等痛点。本文基于Ultralytics YOLO26算法,结合ByteTrack多目标跟踪技术,构建从数据准备、模型训练到边缘部署的全栈式智慧交通检测系统。核心内容包括:多车型专属数据集构建、抛洒物检测模型优化、ByteTrack轨迹跟踪集成、异常事件(违停/逆行/碰撞)识别逻辑实现,以及NVIDIA Jetson边缘设备部署方案。 阅读详情

相关推荐

导出库的版本_Windows下PaddleOCR在C++中的推理部署(CPU版本)CMake + VS2017

PaddleOCR是一个与OCR相关的开源项目,不仅支持超轻量级中文OCR预测模型,总模型仅8.6M(单模型支持中英文数字组合识别、竖排文本识别、长文本识别,其中检测模型DB(4.1M)+识别模型CRNN(4.5M)),而且提供多种文本检测训练算法(EAST、DB)和多种文本识别训练算法(Rosetta、CRNN、STAR-Net、RARE)。本文将教大家通过PaddleOCR(CPU版...

weixin_31304817的博客 1914

zoj 3544 路径压缩

Draw a Mess Time Limit: 5 Seconds      Memory Limit: 262144 KB It's graduated season, every students should leave something on the

ywhorizen 1186

别只盯着Spectre!Cadence Virtuoso里APS和Spectre X该怎么选?一份给模拟IC新手的指南

本文深入解析Cadence Virtuoso中的三大仿真引擎Spectre、APS和Spectre X,帮助模拟IC新手根据电路规模、精度需求和计算资源做出智能选择。通过对比技术指标和应用场景,提供射频电路、混合信号系统和电源管理IC的优化仿真策略,显著提升设计效率。

weixin_26841743的博客 707

ACdream群赛(4) - D - Draw a Mess

Problem D: Draw a Mess Time Limit:1 SecMemory Limit:128 MBSubmit:123Solved:19[Submit][Status][Web Board] Description It's graduated season, every students should leave something on the ...

weixin_30311605的博客 152

汇川伺服Modbus-RTU通讯实战:从帧结构解析到西门子PLC配置

本文详细解析了汇川伺服与西门子PLC通过Modbus-RTU协议进行通讯的实战步骤,包括帧结构解析、硬件连接、参数设置及PLC程序配置。通过具体案例和常见问题排查指南,帮助工程师快速掌握工业自动化中的通讯技术,提升设备调试效率。

weixin_33670713的博客 453

刚入职,软件测试岗,有点迷茫不知道下一步怎么提升自己

软件测试前景和发展都是不错,已经入了软件测试这行业就坚挺下去

大白的博客 2218

Draw a Mess (并查集)

It's graduated season, every students should leave something on the wall, so....they draw a lot of geometry shape with different color. When teacher come to see what happened, withou...

weixin_30888413的博客 156

AI大模型应用性能核心指标:TTFT 与 TPOT 详解

这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。

lovehu6686的博客 3965

UVa1493/LA5698 Draw a Mess

​本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 首先线段树可以做,并且行数很少,不需要用二维线段树,按行数开线段树数组即可。 但其实用并查集做更优,并查集在处理一些区间问题(区间合并快速跳表,区间覆盖路径压缩)上有奇效。并查集处理思路:对每行进行并查集路径压缩。倒着处理,相当于先涂上的颜色不会被后涂上的颜色覆盖,pa为下一个未涂色的结点,那么对行处理路径压缩就会跳过已经涂色的结点,比如当前行第i列涂完了下次就要涂pa[i+1],并且把pa[i+1]也赋给pa[i]。

hlhgzx的博客 456

FOC电机控制中电流采样延迟补偿的原理和方法

摘要: FOC电机控制中,电流采样、计算与PWM更新存在固有延迟(约1.5个PWM周期),导致相位滞后,限制电流环带宽。主流补偿方法包括: 一阶前向预测法:基于历史电流值预测未来电流,抵消延迟,工程应用广泛; 相位超前补偿:通过s/z域校正器设计实现等效预测; 状态观测器法(如龙伯格观测器):通过电机模型闭环估计状态,兼具噪声抑制和参数辨识能力,但复杂度高。实际需注意参数敏感性、离散化精度及延迟时间校准,避免过补偿风险。一阶预测法因平衡效果与复杂度成为工业首选。

jifengzhiling的博客 2232

筹码峰五句口诀,看懂主力的秘密动作!(附实战图示)

筹码图的价值在于,它不像K线那样容易造假。主力可以骗线,但骗不了筹码分布。主力在不在;是吸筹还是出货;接下来是变盘还是震荡。这五句口诀可以说是“筹码阅读的入门圣经”:单峰坚挺变盘在即,双峰对垒高抛低吸;上峰不移主力在跑,多峰林立行情不止;下峰不移不离不弃,筹码识庄稳中取利!📌市场从来不是靠猜,而是靠看清。筹码,就是主力最真实的痕迹。如果你想学会提前布局、跟庄不被甩,学会看筹码峰——这一步必须打牢!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1164

UVA 1493 - Draw a Mess(并查集)

UVA 1493 - Draw a Mess 题目链接 题意:在一个n*m平面上,有4种操作,对应把相应区域颜色涂成v(1 思路:并查集,由于颜色涂上去会覆盖,这样我们就可以反向执行操作,这样保证每次操作如果之前有颜色就不能涂,如果没有就可以涂,然后一共有200行,每行都利用并查集压缩路径,查找下一个能涂色的位置即可 题目中说三角形边一定是奇数,可居然有偶数的。。。被这个坑

Remilia's 1082

手把手教你学pcie--内存管理和保护机制(一):MPU与其他内存管理和保护机制详解

MPU(Memory Protection Unit)是一种专门用于 ​。,这些机制通常协同工作,形成多层防御体系,兼顾安全性、性能和灵活性。

MHD0815的博客 279

uva11996 - Jewel Magic 伸展树

Problem J Jewel Magic I am a magician. I have a string of emeralds and pearls. I may insert new jewels in the string, or remove old ones. I may even reverse a consecutive part of the string. At

7527

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

堆 优先队列

首先看完全二叉树的定义: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。   如果一个完全二叉树的某个结点值都不大于或小于他的父结点,那就叫做堆。根结点是所有结点里最大的叫大根堆,最小的叫小根堆。   比如:  9-1 a是大根堆,9-2 a是小根堆,剩下的都不是堆(因为不是完全二叉树)

2234

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

uva10410 - Tree Reconstruction BFS和DFS重建树

You have just finished a compiler design homework question whereyou had to find the parse tree of an expression. Unfortunately youleft your assignment in the library, but luckily your friend picked it

1221

uva12206 - Stammering Aliens 哈希LCP和后缀数组两种做法

Dr. Ellie Arroway has established contact with an extraterrestrialcivilization. However, all efforts to decode their messages have failed so farbecause, as luck would have it, they have stumbled upon

1034

uva12003 - Array Transformer 分块结构

Write a program to transform an array A[1], A[2], . . . , A[n] according to m instructions. Each instruction(L, R, v, p) means: First, calculate how many numbers from A[L] to A[R] (inclusive) are stri

929

并查集

在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。   有n个元素,一开始每个元素都是一个集合,我们用p[x]表示x的父亲结点,当p[x]=x时是根结点,那么一开始p[i]=i(i=1...n)。如果想把两个集合合并,只需要把一个集合的根结点接到另一个集合的根结点下就行了(我们只

920

uva12232 - Exclusive-OR 加权并查集

You are not given n non-negative integers X0, X1,..., Xn-1 less than 220, but they do exist, and their values never change. I'll gradually provide you some facts about them, and ask you some ques

883

uva10829 - L-Gap Substrings 后缀数组+RMQ

Problem J L-Gap Substrings Input:StandardInput Output: Standard Output If a string is in the form UVU, where Uis not empty, and V has exactly L characters, we say UVUis an L-Gap string. For exa

876

哈夫曼树

给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。树的带权路径长度规定为所有叶子结点的带权路径长度之和。   1*3+2*3+3*2+4*1  = (1+2)+(1+2+3)+(1+2+3+4) =19   整个树的带权

869

uva11992 - Fast Matrix Operations 区间修改 二维线段树

//修改、查询区间均为[y1,y2] struct IntervalTree{ //同一结点先考虑set,再考虑add //sumv[o],minv[o],maxv[o]保存的是以o为根结点的树内修改后的和,最大,最小值,o的父节点及以上结点修改的情况没有包括在里面 int setv[MAXNODE],addv[MAXNODE],sumv[MAXNODE],minv[MAX

860

hdu 1542 upcoj 2540 矩形面积并 线段树

几天没AC了 。。。太爷跟我说什么有个线段树的题很简单,可以做一下。。于是被坑了。。   那个题是upcoj 2540,求一堆矩形重叠2次部分的面积,现在我还只会线段树简单的点修改区间修改,呵呵呵一看这题我果断不会做。。百度了一下,看了太爷给的一个不错的线段树汇总http://www.notonlysuccess.com/index.php/segment-tree-complete/,算是对这

798

hdu5044 Tree 上海网络赛1003 LCA+输入输出外挂

Tree Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 668    Accepted Submission(s): 141 Problem Description You are given a tree (an a

778
上一篇: Codeforces Round #283 (Div. 2) D. Tennis Game
下一篇: uva1406 - A Sequence of Numbers 树状数组
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值