C - C
Description
Your task is counting the segments of different colors you can see at last.
Input
Each of the following n lines consists of exactly 3 nonnegative integers separated by single spaces:
x1 x2 c
x1 and x2 indicate the left endpoint and right endpoint of the segment, c indicates the color of the segment.
All the numbers are in the range [0, 8000], and they are all integers.
Input may contain several data set, process to the end of file.
Output
If some color can't be seen, you shouldn't print it.
Print a blank line after every dataset.
Sample Input
0 4 4
0 3 1
3 4 2
0 2 2
0 2 3
4
0 1 1
3 4 1
1 3 2
1 3 1
6
0 1 0
1 2 1
2 3 1
1 2 0
2 3 0
1 2 1
Sample Output
2 1
3 1
1 1
0 2
1 1
题意:
在n个区间中填色,x1代表起点,x2代表终点,c代表颜色的名字(或者说第c种颜色),填的颜色后面的可以覆盖前面的,求最后可看到的颜色一共被分成几段。
思路:
用数组模拟染色的情况,从 [ X1 , X2 )(X1是可取的,X2是不可取的),每次从下标为X1循环到X2-1,都赋值为这次要染的颜色的名字。最后通过判断每个数字有多少截就能对应输出相应的颜色有多少截了。
Wrong and test:
#include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h> using namespace std; int main() { int N,color,from,to,i,sum,max,j,temp; int number[8005]; int co[8005]; while(scanf("%d",&N)!=EOF) { memset(number,0,sizeof(number)); memset(co,0,sizeof(co)); max=0; i=0; while(N--) { scanf("%d%d%d",&from,&to,&color); if(to>max) max=to; for(from;from<to;from++) { number[from]=color; } co[i++]=color; } sum=i; //一开始忘了sum的初始化 sort(co,co+sum); number[max]=-1; max++; //测试数据 // printf("\nThe number's color is:\n"); // for(i=0;i<max;i++) // printf("%d ",number[i]); // printf("\n"); // system("pause"); // printf("\nThe color is:\n"); // for(i=0;i<sum;i++) // printf("%d ",co[i]); // printf("\n"); // system("pause"); temp=0; for(j=1;j<max;j++) if(number[j]!=co[0]&&number[j-1]==co[0]) temp++; if(temp) printf("%d %d\n",co[0],temp); for(i=1;i<sum;i++) { temp=0; if(co[i]!=co[i-1]) { for(j=1;j<max;j++) if(number[j]!=co[i]&&number[j-1]==co[i]) temp++; if(temp) printf("%d %d\n",co[i],temp); } } if(i==sum) printf("\n"); } } 错误说明: 1.当例子为 5 1 3 0 2 3 0 1 2 1 5 6 3 3 5 2 的时候,模拟的线段应该是(0)1 0 2 2 3但是1前面还有个0,这个0是初始化的时候设置的,所以这里存在着盲点,所以要将颜色的0和初始化的0区分开,用颜色-1来代表0; 2.还有每个CASE之间要空一行; 3.填完色后要在最后加个-1(因为判断number[j]!=co[i]&&number[j-1]==co[i]是后一个与前一个对比判断的,所以为了保证最后一个数能被判断到,所以要最后加个-1。
AC:
#include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h> using namespace std; int main() { int N,color,from,to,i,sum,max,j,temp; int number[8005]; int co[8005]; while(scanf("%d",&N)!=EOF) { memset(number,0,sizeof(number)); memset(co,0,sizeof(co)); max=0; i=0; while(N--) { scanf("%d%d%d",&from,&to,&color); if(to>max) max=to; for(from;from<to;from++) { if(color==0) number[from]=-1; else number[from]=color; } if(color==0) co[i++]=-1; else co[i++]=color; } sum=i; sort(co,co+sum); number[max]=-10; max++; temp=0; for(j=1;j<max;j++) if(number[j]!=co[0]&&number[j-1]==co[0]) temp++; if(temp) { if(co[0]==-1) printf("%d %d\n",co[0]+1,temp); else printf("%d %d\n",co[0],temp); } for(i=1;i<sum;i++) { temp=0; if(co[i]!=co[i-1]) { for(j=1;j<max;j++) if(number[j]!=co[i]&&number[j-1]==co[i]) temp++; if(temp) { if(co[i]==-1) printf("%d %d\n",co[i]+1,temp); else printf("%d %d\n",co[i],temp); } } } if(i==sum) printf("\n"); } }
总结:
当时比赛的时候,连题目都不敢看,因为坚信自己是做不出来的。今天要不是师兄叫我再看下这题的话,我估计还不敢做这题。虽然不是用线段树做的,而且神奇的做出来之后才知道这是暴力。分析时间复杂度,然后根据时间来选择最适合最快速的方法解决题目真的很重要,又学到东西了。因为练得实在太少了,没有实力就没有信心,没有信心就没有勇气去坚持完一场比赛。这道题还需要用线段树来做一遍(迟点再添加),虽然这样子水过去了,但是还是有点不太踏实。
相关推荐
用于施工安全设施计算,施工方案,技术交底,应急预案、可以计算模板支架体系,高支模,地基承载力,边坡承载力,卸料平台安全计算等,网络收集,请支持正版
它提供了一系列内置函数和命令,用于控制窗口、模拟键盘和鼠标操作、处理文件和目录等。 2. **Windows GUI 创建**:AutoIt 可以创建自己的图形用户界面(GUI),用户可以自定义按钮、输入框、列表框等控件,用于...
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 ...
iOS是iPhone、iPad和iPod touch设备的操作系统,由Apple Inc.开发并维护。它提供了丰富的功能和应用程序生态系统,同时有着严格的隐私和安全政策。 考虑到文件名列表只有一个条目:“13.7”,这可能是项目或更新的...
2. **C++接口**:除了传统的C接口,OpenCV 2.4引入了更现代、更面向对象的C++接口,提供更加简洁和高效的代码编写方式。 3. **支持多种平台**:OpenCV 2.4.13.7可以在多个操作系统上运行,包括Windows、Linux、Mac ...
在版本13.7.9中,Draw.io进一步提升了用户体验,提供了一系列增强和改进,使绘图过程更为流畅。 首先,Draw.io的核心功能在于其丰富的图形库。用户可以找到各种各样的形状,包括但不限于流程图、组织结构图、思维...
"xcode真机 13.7.zip"这个压缩包很可能包含了一个特定版本为13.7的Xcode真机调试所需的组件和资源。在iOS应用开发中,真机调试是一个重要的环节,因为模拟器虽然可以模拟大部分设备行为,但某些功能和性能问题只有在...
北京鼎汉通技术有限公司无线测温说明书_13.7.10.doc
安卓UC浏览器V13.7.5.1321国际2024清爽版 UC 浏览器谷歌商店版,可以切换为繁体中文,相比国内版本,干净得有点过分。主页无新闻推送 语言设置: 点击底部菜单>设置语言选择繁体中文即可
高中物理 13.7.8 光的颜色 色散 激光课件 新人教选修34 .ppt
【朋友圈广告助手最新版13.7.0(1).rar】是一款专为微信小程序设计的广告管理工具,主要用于帮助用户更加高效地管理和优化在微信朋友圈投放的广告。这款工具的最新版本13.7.0引入了新的特性和改进,以适应不断变化的...
每个iOS版本都有相应的DeviceSupport目录,里面包含了一系列的系统模拟文件,这些文件让Xcode能够在模拟器中模拟不同iOS版本的行为,或者在连接真机时识别并支持相应的系统。 在iOS 13.7这个特定的版本中,苹果引入...
SDK 13.7.zip 是一个与Xcode相关的软件开发工具包,主要针对的是iOS、iPadOS以及其他基于Apple平台的应用程序开发。Xcode是Apple官方提供的集成开发环境(IDE),它包含了编写、测试和调试软件所需的所有工具。SDK,...
资源分类:Python库 所属语言:Python 资源全名:pyginx-0.1.13.7.7-cp36-cp36m-macosx_10_13_x86_64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
这款软件的最新版本为13.7.9,特别针对Windows用户提供了无需安装的版本,即"draw.io-13.7.9-windows-no-installer.exe",方便用户直接运行,无需担心系统冲突或繁琐的安装步骤。 流程图是一种图形化表示工作流程或...
版本13.7.0的免安装特性使得用户无需复杂安装过程即可快速启动并使用。这个压缩包包含了ShareX的主要组件和辅助库,方便用户直接解压使用。 1. **截图功能**:ShareX的核心功能之一就是提供高质量的截图工具。它...
《Xcode iOS 设备支持库:DeviceSupport 13.7 深度解析》 在iOS开发领域,Xcode是不可或缺的工具,它包含了众多用于构建、测试和部署iOS应用的功能。其中,`DeviceSupport`目录对于开发者来说至关重要,因为它包含...
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 ...