`
bmqnc
  • 浏览: 125994 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Srm 225 div2 1000pts

阅读更多
这题很简单,只要会灵活的运用java的库函数即可,当然,库函数的复杂度事先也是应该要有所知道的。
代码如下:
public class ImageSteganography {
   public String[] encode(String[] img, String message) {
		String[] ans=null;
		
		String encodeMes=encodeMessage(message);
		String encodeImg[]=new String[img.length];
		for(int i=0;i<img.length;i++)
			encodeImg[i]=encodeImage(img[i]);
		
		String con=complete6Chars(Integer.toBinaryString(63));
		String cons[]=new String[3];
		for(int i=0;i<con.length();){
			cons[i/2]=con.substring(i,i+2);
			i=i+2;
		}
		
		StringBuffer sb=new StringBuffer();
		for(String s:encodeImg)
			sb.append(s);
		
		//System.out.println(sb.length()+":"+img[0].length()/3);
	
		int k=0;
		for(int i=0;i<encodeMes.length();){
			String replaceStr=encodeMes.substring(i,i+6);
			String temp[]=new String[3];
			for(int j=0;j<replaceStr.length();){
				temp[j/2]=replaceStr.substring(j,j+2);
				j=j+2;
			}
			for(int j=temp.length-1;j>=0;j--){
				int start=k*8+6;
				int end=k*8+8;
				sb.replace(start,end,temp[j]);
				k++;
			}
	
			i=i+6;
		}
	
		int m=cons.length-1;
		int size=sb.length()/8;
		for(;k<size;k++){
			String replaceStr=cons[m];
			int start=k*8+6;
			int end=k*8+8;
			sb.replace(start,end,replaceStr);
			m=(m-1+3)%3;
		}
			
		ans=decodeImage(sb,img);
		
		return ans;
   }
   
   public String[] decodeImage(StringBuffer sb,String[] img){
   			String[] imgs=new String[img.length];
   			int start=0;
   			int end=0;
   			for(int i=0;i<imgs.length;i++){
   				start=end;
   				end=end+img[i].length()/3*8;
   				imgs[i]=sb.substring(start,end);
   			}
   			
   			for(int i=0;i<imgs.length;i++){
   				int n=imgs[i].length();
   				StringBuffer st=new StringBuffer();
   				for(int j=0;j<n;){
   					String c=imgs[i].substring(j,j+8);
   					String s=complete3Chars(Integer.parseInt(c,2)+"");
   					st.append(s);
   					j=j+8;	
   				}
   				imgs[i]=st.toString();
   			}
   			
   			return imgs;
   }
   
  public String complete3Chars(String s){
  			StringBuffer sb=new StringBuffer();
  			for(int i=0;i<3-s.length();i++){
  				sb.append('0');
  			}
  			sb.append(s);
  			
  			return sb.toString();
  }
   
   public String encodeImage(String img){
		   	StringBuffer sb=new StringBuffer();
		 		int n=img.length();
		 		for(int i=0;i<n;){
		 			int c=Integer.parseInt(img.substring(i,i+3));
		 			sb.append(complete8Chars(Integer.toBinaryString(c)));
		 			i=i+3;
		 		}
		   	
		   	return sb.toString();
   }
   
   public String complete8Chars(String s){
   			StringBuffer sb=new StringBuffer();
   			for(int i=0;i<8-s.length();i++)
   				sb.append('0');
   			
   			sb.append(s);	
   			
   			return sb.toString();
   }
   
   public String encodeMessage(String message){
		   	StringBuffer sb=new StringBuffer();
		   	HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
		   	hm.put(' ',0);
		   	for(int i=0;i<26;i++){
		   		hm.put((char)('A'+i),i+1);
		   		hm.put((char)('a'+i),i+27);
		   	}
		   	for(int i=0;i<10;i++){
		   		hm.put((char)('0'+i),i+53);
		   	}
		   	
		   	for(char c:message.toCharArray()){
		   		int i=hm.get(c);
		   		sb.append(complete6Chars(Integer.toBinaryString(i)));
		   	}
		   	
		   	return sb.toString();
   }
	
		public String complete6Chars(String s){
				StringBuffer sb=new StringBuffer();
				for(int i=0;i<6-s.length();i++){
					sb.append('0');
				}
				sb.append(s);
				
				return sb.toString();
		}
}


complete那几个函数有点冗余,可以重构一下,但我懒得再去重构了。。。。。
分享到:
评论

相关推荐

    TC SRM 388 div 2 problem 3

    topcoder的数学类算法题目。一个整数被称为k-smooth当且仅当它的最大素因子不大于k,给定N和K,计算出1 - N中有多少个整数是k-smooth。1 , 1 &lt;= K &lt;= 1000.

    SRM2Mult_1.2_srm2_compositionqw7_

    SRM2Multi dumper for hsap

    VMWARE SRM快速部署手册

    2. **SRM服务器**:运行SRM软件的物理或虚拟服务器,操作系统需为Server 2008 x64。 3. **支持SRM的数据库**:这里指能够被SRM兼容的数据库系统,例如SQL Server 2005。该数据库用于存储SRM的相关配置信息。 4. **...

    SRM SRM 平台功能介绍.pdf

    SAP SRM 介绍

    HASP-SRM-emulator-D.rar_SRM_SRM emulator_emulator_emulator hasp_

    Driver HASP SRM emulator (x86)

    SRM-MDM Catalog Setup – Ready Reference

    根据给定的文件信息,我们将深入探讨“SRM-MDM Catalog Setup – Ready Reference”这一主题,专注于SAP NetWeaver MDM系统中的SRM-MDM目录设置过程。这份文档不仅适用于SAP SRM(Supplier Relationship Management...

    omron系列CPM1/CPM1A/CPM2A/CPM2C/SRM1(-V2) PLC编程手册.pdf

    2. OMRON产品命名约定:OMRON公司产品的型号在本手册中都是以大写形式出现,包括“CPM1”,“CPM1A”,“CPM2A”,“CPM2C”,“SRM1(-V2)”等。这可能是为了方便阅读时对产品型号的快速识别。此外,手册中提到的...

    srm image segmentation code

    2. **边界长度**:`srm_boundarylen.cpp`可能是用于计算相邻区域边界的长度,这是评估区域合并代价的另一个因素。较长的边界通常意味着更高的合并成本,因为这会引入更多的不确定性。 3. **SRM主程序**:`srm.m`是...

    TopCoders:TopCoders 问题

    版本: 1.0.0 作者: Semen Zhydenko ... BridgeCrossingOptimized.java - SRM 146 DIV 2,1000 点问题,时间复杂度 O(n^(n^2))。 BridgeCrossingBest.java - SRM 146 DIV 2,1000 点问题,时间复杂度 O(n)。

    VSAN和SRM.rar

    【标题】"VSAN与SRM"涉及到的是VMware虚拟化环境中的两个关键组件:Virtual SAN(VSAN)和Site Recovery Manager(SRM)。这两个工具在企业级数据中心中发挥着至关重要的作用,确保业务连续性和灾难恢复能力。 VSAN...

    HASP SRM加密狗简介

    HASP SRM加密狗简介 HASP SRM加密狗是一种软件保护解决方案,由阿拉丁公司开发。它提供了多种型号,以满足不同业务需要。下面将对HASP SRM加密狗的各种型号进行详细介绍。 首先是HASP HL基本型,这是阿拉丁公司最...

    SRM系统资源管理器

    **SRM系统资源管理器详解** SRM(System Resource Manager)系统资源管理器是一个专为Linux环境设计的工具,它的主要功能是作为一个守护进程在后台持续监控非root用户的进程,以便控制系统的CPU和内存(MEM)资源...

    SAP SRM用途以及功能简介

    2. 扩展、加强与重要供应商的关系:SRM 能够帮助企业与其建立合作关系,共享计划、产品设计和规范信息,并运作方式上进行改进。 3. 建立竞争优势:SRM 能够主动地帮助企业去建立、改进与供应商之间的战略同盟,不是...

    SRM 210 供应商关系管理

    【标题】"SRM 210 供应商关系管理"涉及的是SAP的企业级采购解决方案,SAP Supplier Relationship Management(SRM)系统的一个特定版本。SRM 210是这个模块的一个迭代,旨在帮助企业更有效地管理和优化其与供应商的...

    SRM系统框架

    多年SRM实施经验总结,对希望从事SRM实施或规划的同学们有帮助

    手把手教你玩SRM

    2. **合同管理**:制定明确的合同条款,确保双方权益,同时设定性能指标和违约处理机制。 3. **供应链协同**:通过信息共享,提高供应链的透明度,实现供需同步,减少库存和响应时间。 4. **供应商绩效评估**:...

    SRM系统框架图设计

    分块描述SRM系统的作用:寻源、协同和考核 涉及具体的业务用途,供前期规划作参考,可根据实际情况调整,再考虑如何实现

    SRM需求分析.doc

    **2. 任务概述** 2.1 现状与目标:当前,企业在供应商管理上存在信息不统一、流程复杂等问题。目标是通过SRM系统实现采购流程自动化,提高数据准确性和决策效率。 2.2 项目运行环境:系统需适应企业现有的IT基础设施...

    SAP NetWeaver MDM – SRM Catalog Configuration

    2. **从客户端SRM系统加载参考数据** 3. **在SRM中设置外部Web服务** 4. **在组织计划中使目录Web服务可用** 5. **配置WebDynpro中的搜索UI** ##### 1. 准备主数据客户端(SRM)系统 - **激活MDM-SRM接口**:确保...

Global site tag (gtag.js) - Google Analytics