`
Simone_chou
  • 浏览: 198171 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

13.7.31 Wed C(模拟)

 
阅读更多

      C - C

Description

Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones.

Your task is counting the segments of different colors you can see at last.

Input

The first line of each data set contains exactly one integer n, 1 <= n <= 8000, equal to the number of colored segments.

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

Each line of the output should contain a color index that can be seen from the top, following the count of the segments of this color, they should be printed according to the color index.

If some color can't be seen, you shouldn't print it.

Print a blank line after every dataset.

Sample Input

5
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

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

   总结:

   当时比赛的时候,连题目都不敢看,因为坚信自己是做不出来的。今天要不是师兄叫我再看下这题的话,我估计还不敢做这题。虽然不是用线段树做的,而且神奇的做出来之后才知道这是暴力。分析时间复杂度,然后根据时间来选择最适合最快速的方法解决题目真的很重要,又学到东西了。因为练得实在太少了,没有实力就没有信心,没有信心就没有勇气去坚持完一场比赛。这道题还需要用线段树来做一遍(迟点再添加),虽然这样子水过去了,但是还是有点不太踏实。

分享到:
评论

相关推荐

    高比例可再生能源电力系统的调峰成本量化与分摊模型——基于Matlab、Yalmip和Cplex的优化研究

    内容概要:本文探讨了高比例可再生能源接入对电力系统调峰能力的影响,提出了一种基于净负荷波动的调峰成本量化与分摊模型。首先,通过将负荷和可再生能源出力曲线转换为无波动的均值线,构建了无调峰需求的替代场景。接着,建立了含深度调峰和抽水蓄能的调度优化模型,用于计算不同场景下的调峰成本。通过比较有无调峰需求两种场景下的系统调峰成本,确定了单一主体导致的边际调峰成本,并采用Shapley值方法合理分摊调峰成本。研究表明,该模型可以有效反映各主体的调峰成本或贡献,有助于促进可再生能源的消纳和电力系统的稳定运行。 适合人群:从事电力系统规划、运营管理和可再生能源研究的专业人士,以及关注能源政策和技术发展的研究人员。 使用场景及目标:适用于评估和优化高比例可再生能源接入条件下的电力系统调峰成本,旨在提高电力系统的灵活性和经济性,同时促进可再生能源的有效利用。 其他说明:该模型需要根据实际情况进行调整和优化,以适应不同地区的电力市场特点和技术水平。

    ABB机器人与博图V16 Profinet通讯及外部启动配置详解

    内容概要:本文详细介绍了如何使用博图V16进行ABB机器人的外部启动及其与西门子设备的Profinet通讯配置。首先概述了ABB机器人和博图V16的基本概念,接着深入讲解了外部启动的重要性和实现方式,重点介绍了FB功能块的应用,以及Profinet通讯的具体配置步骤。文中还强调了GSD文件的作用,用于描述机器人的属性和行为,最后讨论了硬件配置的要求和注意事项,特别是对dsqc1030或dsqc652板卡的支持和888-2或888-3选项的需求。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些负责机器人集成和编程的专业人士。 使用场景及目标:适用于需要将ABB机器人与西门子设备通过Profinet网络进行通讯并实现外部启动的项目。目标是提高自动化生产线的灵活性和效率,确保机器人和PLC之间的无缝协作。 其他说明:本文不仅提供了理论指导,还包含了实际操作中的关键细节,有助于读者快速掌握相关技能并在实践中应用。

    scratch少儿编程逻辑思维游戏源码-3D环境.zip

    scratch少儿编程逻辑思维游戏源码-3D环境.zip

    少儿编程scratch项目源代码文件案例素材-泼溅猫.zip

    少儿编程scratch项目源代码文件案例素材-泼溅猫.zip

    新能源领域基于EMD-ARMA的风光出力预测方法及其应用

    内容概要:本文介绍了基于EMD-ARMA的组合风光出力预测方法,详细阐述了经验模态分解(EMD)和自回归移动平均(ARMA)模型的应用步骤。首先,通过EMD将原始发电数据分解为多个本征模态函数(IMF),然后用ARMA模型对各IMF分量进行建模和预测,最后将预测结果叠加重构,获得最终的风光功率预测值。文中还提供了简化的Python代码示例,帮助读者理解和实现该方法。 适合人群:从事新能源研究和技术开发的专业人士,尤其是对风光发电预测感兴趣的科研人员和工程师。 使用场景及目标:适用于需要提高风光发电预测精度的项目,旨在通过先进的数学模型优化电力调度和资源配置。 其他说明:本文提供的代码示例仅用于教学目的,实际应用中需根据具体情况调整和完善。此外,建议在实践中参考更多专业文献和寻求专家意见以确保预测模型的准确性和可靠性。

    scratch少儿编程逻辑思维游戏源码-scratch RPG 战斗.zip

    scratch少儿编程逻辑思维游戏源码-scratch RPG 战斗.zip

    scratch少儿编程逻辑思维游戏源码-窗户冒险.zip

    scratch少儿编程逻辑思维游戏源码-窗户冒险.zip

    scratch少儿编程逻辑思维游戏源码-FC经典游戏 沙罗曼蛇.zip

    scratch少儿编程逻辑思维游戏源码-FC经典游戏 沙罗曼蛇.zip

    少儿编程scratch项目源代码文件案例素材-跑酷版《我的世界》.zip

    少儿编程scratch项目源代码文件案例素材-跑酷版《我的世界》.zip

    scratch少儿编程逻辑思维游戏源码-抜刀.zip

    scratch少儿编程逻辑思维游戏源码-抜刀.zip

    永磁同步电机无传感器控制:基于反电动势估计的扰动观测器设计与应用

    内容概要:本文介绍了永磁同步电机(PMSM)无位置传感器控制的一种创新方法,重点探讨了通过反电动势估计和扰动观测器增益设计来实现转子位置的精确估算。该方法避免了传统的PLL等位置观测器,仅需一次反正切计算即可获得转子位置,极大简化了系统复杂度。此外,模型控制器采用离散域设计,便于参数调整和适应不同电机参数。文中还提供了具体的Python代码示例,展示了从初始化电机参数到主循环控制的具体实现步骤。 适合人群:从事电机控制系统设计的研究人员和技术工程师,尤其是关注永磁同步电机无传感器控制领域的专业人士。 使用场景及目标:适用于需要简化调试流程、提高系统灵活性和适应多种电机参数的应用场景。主要目标是在保持高性能的同时降低硬件成本和系统复杂性。 其他说明:该方法不仅简化了调试过程,还提高了系统的鲁棒性和可靠性,特别适合于工业自动化、机器人技术和电动汽车等领域。

    汽车制动系统中双腔制动主缸的精细化建模与Simulink-Amesim联合仿真验证

    内容概要:本文深入探讨了乘用车双腔制动主缸的精细化建模及其在Simulink和Amesim中的联合仿真验证。文章首先介绍了双腔制动主缸的物理结构和动力学方程,特别是考虑了液压特性和机械传动的耦合关系。接着,作者详细描述了如何在Simulink中实现这些模型,并通过S函数处理变步长积分问题,确保仿真精度。此外,还讨论了联合仿真过程中遇到的数据交换频率问题,并提出了使用二阶保持器来补偿相位滞后的解决方案。最终,通过对不同推杆力输入条件下的仿真结果对比,验证了精细化模型的有效性和稳定性。 适合人群:从事汽车制动系统研究的技术人员、高校相关专业师生、对车辆动力学仿真感兴趣的工程师。 使用场景及目标:①帮助研究人员更好地理解和掌握双腔制动主缸的工作原理;②为后续更复杂的整车制动系统仿真提供可靠的子系统模型;③提高仿真精度,减少因模型简化带来的误差。 其他说明:文中提供了详细的建模步骤、公式推导、代码实现以及仿真结果对比,附带完整视频教程和参考资料,便于初学者学习。同时强调了实际应用中需要注意的关键细节,如流量计算、数据交换频率调整等。

    scratch少儿编程逻辑思维游戏源码-Scratch版Windows11.zip

    scratch少儿编程逻辑思维游戏源码-Scratch版Windows11.zip

    少儿编程scratch项目源代码文件案例素材-青蛙.zip

    少儿编程scratch项目源代码文件案例素材-青蛙.zip

    基于Matlab Simulink的光伏交直流混合微电网离网模式双下垂控制仿真模型研究

    内容概要:本文详细介绍了光伏交直流混合微电网在离网(孤岛)模式下的双下垂控制仿真模型。该模型利用Matlab/Simulink工具进行构建和仿真,涵盖了直流微电网、交流微电网以及互联变换器(ILC)的结构和控制策略。直流微电网采用电压电流双闭环下垂控制,交流微电网则通过恒压控制和下垂控制来维持稳定的频率和电压。ILC采用双下垂控制策略,通过归一化处理和偏差调整,使得交流母线频率和直流母线电压趋于一致。此外,模型还包括采样保持、坐标变换、功率滤波、SVPWM等辅助环节,以确保系统的稳定运行和高效能量管理。实验结果显示,在负载突增的情况下,系统依然能够保持良好的波形质量和稳定性。 适合人群:对微电网控制系统感兴趣的科研人员、电力工程技术人员及高校师生。 使用场景及目标:适用于研究和验证光伏交直流混合微电网在离网模式下的控制策略,特别是双下垂控制的应用效果。目标是提升微电网的稳定性和能量管理效率。 其他说明:仿真环境为Matlab2020b及以上版本,部分模块仅支持高版本软件。对于希望深入了解双下垂控制机制的研究者,可以通过进一步的学习和交流获得更多信息。

    基于EKF的INS-GPS松组合导航:15状态NED坐标系下的精准定位技术

    内容概要:本文详细介绍了基于扩展卡尔曼滤波器(EKF)的INS(惯性测量单元)和GPS(全球定位系统)松组合导航技术。首先解释了为何需要松组合导航,即通过融合INS和GPS的优势,提高定位的稳定性和准确性。接着阐述了15状态下的EKF融合方法,涵盖速度、姿态、位置等多个系统动态参数的估计与更新。然后讨论了NED(北东地)坐标系的应用及其带来的直观物理意义。最后提供了简化的Python代码片段,演示了如何在EKF中融合INS和GPS数据,以获得连续、稳定的导航结果。 适合人群:从事导航技术研发的专业人士,尤其是对EKF、INS、GPS以及多传感器数据融合感兴趣的工程师和技术研究人员。 使用场景及目标:适用于需要高精度、高可靠性定位系统的应用场景,如自动驾驶汽车、无人机飞行控制系统等。目标是通过融合INS和GPS数据,克服单一传感器的局限性,提升整个导航系统的性能。 其他说明:文中提供的代码仅为概念验证性质,实际工程应用中还需考虑更多复杂的因素和优化措施。

    三相逆变器孤岛运行的双闭环控制策略及LCL滤波电路仿真实现

    内容概要:本文详细介绍了基于MATLAB Simulink平台的三相逆变器稳压控制仿真模型,重点探讨了孤岛运行环境下的电压电流双闭环控制策略及其LCL滤波电路的应用。首先,通过对主电路电流电压的采样并进行Park和Clark变换,将数据转换为dq坐标系下的电流电压值,然后输入双闭环控制系统进行精确调节。接着,通过反变换回到abc坐标系,并利用PWM调制对逆变器进行控制,最终实现了电压电流的稳定输出。文中还提供了简化的Matlab代码片段,展示了关键步骤的具体实现方法。此外,作者通过多次仿真实验验证了该控制策略的有效性和鲁棒性。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对逆变器控制策略感兴趣的读者。 使用场景及目标:适用于需要深入了解三相逆变器在孤岛运行环境下的稳压控制机制的研究人员和技术人员。目标是掌握电压电流双闭环控制策略以及LCL滤波电路的设计与应用,提高逆变器系统的稳定性和可靠性。 其他说明:本文不仅提供了理论分析,还包括具体的仿真模型和代码示例,有助于读者更好地理解和实践相关技术。

    少儿编程scratch项目源代码文件案例素材-七龙珠RPG 测试.zip

    少儿编程scratch项目源代码文件案例素材-七龙珠RPG 测试.zip

    scratch少儿编程逻辑思维游戏源码-城市世界.zip

    scratch少儿编程逻辑思维游戏源码-城市世界.zip

    少儿编程scratch项目源代码文件案例素材-黏糊糊的圣诞节.zip

    少儿编程scratch项目源代码文件案例素材-黏糊糊的圣诞节.zip

Global site tag (gtag.js) - Google Analytics