这个srm的500pts要讲一下,这题主要关键点在于要将target中的数组快速定位到离current最近的前后n个数中,纯暴力的做法是会超时的。这题还想了很久,1000pts我觉得简单,而500pts这次反而比1000pts要难。
看500pts的代码:
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class StepperMotor {
public int rotateToNearest(int n, int current, int[] target) {
long step=Long.MAX_VALUE;
for(int tar:target){
long temStep=getStep(tar,current,n);
if(Math.abs(temStep)<Math.abs(step)){
step=temStep;
}else if(Math.abs(temStep)==Math.abs(step)){
if(temStep>step){
step=temStep;
}
}
}
return (int)step;
}
public long getStep(long tar,long current,long n){
if(tar>=current){
long gap=tar-current;
tar=tar-gap/n*n;
long t1=tar-current;
long t3=current-(tar-n);
if(t1<=t3)
return t1;
else
return -1*t3;
}else{
long gap=current-tar;
tar=tar+gap/n*n;
long t1=current-tar;
long t3=tar+n-current;
if(t3<=t1)
return t3;
else
return -1*t1;
}
}
}
至于1000pts,主要是数据结构的问题,理解了挺简单的。不过注意一点,如A B A三篇文章的话,如果B引用了0,2文章,则实际上A要计数两次的,一开始这地方没注意到,wa了一次。
代码如下:
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class AcademicJournal {
public String[] rankByImpact(String[] papers) {
String[] ans=null;
Vector<Arr> hm=new Vector<Arr>();
for(String s:papers){
String s1[]=s.split("\\.");
HashSet<Integer> vec=new HashSet<Integer>();
hm.add(new Arr(s1[0],vec));
if(s1.length>1){
String s2[]=s1[1].trim().split(" ");
for(String t:s2)
vec.add(Integer.parseInt(t));
}//if
}//for
HashMap<String,Jour> ps=new HashMap<String,Jour>();
for(int j=0;j<hm.size();j++){
Arr arr=hm.get(j);
String name=arr.name;
Jour jour=ps.get(name);
if(jour==null){
jour=new Jour();
jour.name=name;
ps.put(name,jour);
}
jour.addPaper(j+"");
HashSet<Integer> vec=arr.vec;
for(int i:vec){
String otherJour=hm.get(i).name;
Jour otherJ=ps.get(otherJour);
if(otherJ==null){
otherJ=new Jour();
otherJ.name=otherJour;
ps.put(otherJour,otherJ);
}
if(!name.equals(otherJour)){
otherJ.citaCount++;
}
}//for
}//for
Jour jours[]=ps.values().toArray(new Jour[0]);
for(Jour jour:jours){
jour.caluRank();
}
Arrays.sort(jours);
ans=new String[jours.length];
for(int i=0;i<jours.length;i++){
ans[i]=jours[i].name;
}
return ans;
}
class Arr{
String name;
HashSet<Integer> vec;
public Arr(String name,HashSet<Integer> vec){
this.name=name;
this.vec=vec;
}
}
class Jour implements Comparable<Jour>{
double rank;
String name=null;
int citaCount;
HashSet<String> papers=new HashSet<String>();
public int compareTo(Jour jour){
if(rank<jour.rank)
return 1;
if(rank>jour.rank)
return -1;
if(papers.size()>jour.papers.size())
return -1;
if(papers.size()<jour.papers.size())
return 1;
return name.compareTo(jour.name);
}
public void addPaper(String paper){
papers.add(paper);
}
public void caluRank(){
rank=citaCount/(double)papers.size();
}
}
}
分享到:
相关推荐
topcoder的数学类算法题目。一个整数被称为k-smooth当且仅当它的最大素因子不大于k,给定N和K,计算出1 - N中有多少个整数是k-smooth。1 , 1 <= K <= 1000.
SRM2Multi dumper for hsap
2. **SRM服务器**:运行SRM软件的物理或虚拟服务器,操作系统需为Server 2008 x64。 3. **支持SRM的数据库**:这里指能够被SRM兼容的数据库系统,例如SQL Server 2005。该数据库用于存储SRM的相关配置信息。 4. **...
SAP SRM 介绍
Driver HASP SRM emulator (x86)
根据给定的文件信息,我们将深入探讨“SRM-MDM Catalog Setup – Ready Reference”这一主题,专注于SAP NetWeaver MDM系统中的SRM-MDM目录设置过程。这份文档不仅适用于SAP SRM(Supplier Relationship Management...
2. OMRON产品命名约定:OMRON公司产品的型号在本手册中都是以大写形式出现,包括“CPM1”,“CPM1A”,“CPM2A”,“CPM2C”,“SRM1(-V2)”等。这可能是为了方便阅读时对产品型号的快速识别。此外,手册中提到的...
2. **边界长度**:`srm_boundarylen.cpp`可能是用于计算相邻区域边界的长度,这是评估区域合并代价的另一个因素。较长的边界通常意味着更高的合并成本,因为这会引入更多的不确定性。 3. **SRM主程序**:`srm.m`是...
版本: 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"涉及到的是VMware虚拟化环境中的两个关键组件:Virtual SAN(VSAN)和Site Recovery Manager(SRM)。这两个工具在企业级数据中心中发挥着至关重要的作用,确保业务连续性和灾难恢复能力。 VSAN...
HASP SRM加密狗简介 HASP SRM加密狗是一种软件保护解决方案,由阿拉丁公司开发。它提供了多种型号,以满足不同业务需要。下面将对HASP SRM加密狗的各种型号进行详细介绍。 首先是HASP HL基本型,这是阿拉丁公司最...
**SRM系统资源管理器详解** SRM(System Resource Manager)系统资源管理器是一个专为Linux环境设计的工具,它的主要功能是作为一个守护进程在后台持续监控非root用户的进程,以便控制系统的CPU和内存(MEM)资源...
2. 扩展、加强与重要供应商的关系:SRM 能够帮助企业与其建立合作关系,共享计划、产品设计和规范信息,并运作方式上进行改进。 3. 建立竞争优势:SRM 能够主动地帮助企业去建立、改进与供应商之间的战略同盟,不是...
【标题】"SRM 210 供应商关系管理"涉及的是SAP的企业级采购解决方案,SAP Supplier Relationship Management(SRM)系统的一个特定版本。SRM 210是这个模块的一个迭代,旨在帮助企业更有效地管理和优化其与供应商的...
多年SRM实施经验总结,对希望从事SRM实施或规划的同学们有帮助
2. **合同管理**:制定明确的合同条款,确保双方权益,同时设定性能指标和违约处理机制。 3. **供应链协同**:通过信息共享,提高供应链的透明度,实现供需同步,减少库存和响应时间。 4. **供应商绩效评估**:...
分块描述SRM系统的作用:寻源、协同和考核 涉及具体的业务用途,供前期规划作参考,可根据实际情况调整,再考虑如何实现
**2. 任务概述** 2.1 现状与目标:当前,企业在供应商管理上存在信息不统一、流程复杂等问题。目标是通过SRM系统实现采购流程自动化,提高数据准确性和决策效率。 2.2 项目运行环境:系统需适应企业现有的IT基础设施...
2. **从客户端SRM系统加载参考数据** 3. **在SRM中设置外部Web服务** 4. **在组织计划中使目录Web服务可用** 5. **配置WebDynpro中的搜索UI** ##### 1. 准备主数据客户端(SRM)系统 - **激活MDM-SRM接口**:确保...