博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
topcoder srm 370 div1
阅读量:5741 次
发布时间:2019-06-18

本文共 2214 字,大约阅读时间需要 7 分钟。

problem1

枚举每一种大于等于$n$的计算其概率即可。

problem2

首先二分答案,然后计算。令$f[i][j]$表示移动完前$i$最后一个在位置$j$的最小代价。

problem3

假如一个数质因子分解为$n=p_{1}^{x_{1}}p_{2}^{x_{2}}..p_{t}^{x_{t}}$,那么其约数的个数为$(x_{1}+1)(x_{2}+1)..(x_{t}+1)$

所以只需要将$k$分解成若干数字之积,然后分配每个约数最小的一些质数即可。

令$f[i][j]$表示到第$i$个质数,还剩下的数字之积为$j$的最小值。

 

code for problem1 

import java.util.*;import java.math.*;import static java.lang.Math.*;public class DrawingMarbles {		public double sameColor(int[] colors,int n) {		int m=0;		for(int i=0;i

  


code for problem2

import java.util.*;import java.math.*;import static java.lang.Math.*;public class ConnectTheCities {		public int minimalRange(int distance, int funds, int[] position) {		Arrays.sort(position);		int low=1,high=distance;		int result=high;		while(low<=high) {			int mid=(low+high)>>1;			if(check(mid,distance,funds,position)) {				result=Math.min(result,mid);				high=mid-1;			}			else {				low=mid+1;			}		}		return result;	}	boolean check(int mid,int distance,int funds,int[] positions) {		final int n=positions.length;		int[][] f=new int[n+1][distance+1];		for(int i=0;i
funds) { continue; } if(f[i][k]==-1||f[i][k]>cost) { f[i][k]=cost; } } } } for(int i=distance-mid;i<=distance;++i) { if(i>=0&&f[n][i]!=-1) { return true; } } return false; }}

  


code for problem3

import java.util.*;import java.math.*;import static java.lang.Math.*;public class NumberOfDivisors {	final static int N=100;	final static int MAX=50000;	final static long INF=1000000000000000000L;	long[][] f=new long[N][MAX+1];	int[] p=new int[N];	public long smallestNumber(int n) {		if(n==1) {			return 1;		}		for(int i=0,k=2;i
INF/dfs(id+1,nxt)) { t=INF+1; } else { t*=dfs(id+1,nxt); } if(f[id][n]>t&&t!=INF+1) { f[id][n]=t; } } } return f[id][n]; } long pow(long n,long m) { long result=1; while(m>0) { if(1==(m&1)) { if(result>INF/n) { return INF+1; } result*=n; if(m==1) { break; } } if(n>INF/n) { return INF+1; } n=n*n; m>>=1; } return result; } boolean isPrime(int x) { for(int i=2;i*i<=x;++i) { if(x%i==0) { return false; } } return true; }}

  

转载于:https://www.cnblogs.com/jianglangcaijin/p/7582401.html

你可能感兴趣的文章
《人工智能:计算Agent基础》——第二部分 表达和推理第3章 状态和搜索3.1 用搜索进行问题求解...
查看>>
恶意程序伪装成 Windows“另存为”对话框骗用户
查看>>
《从Excel到R 数据分析进阶指南》一2.8 查看前10行数据
查看>>
HandlerSocket client for java——MySql as NoSQL
查看>>
《团队软件过程(修订版)》—第1章1.4节TSPi的结构和流程
查看>>
你要为难优化器,优化器会加倍为难你
查看>>
《HTML、CSS、JavaScript 网页制作从入门到精通》——6.5 表格的行属性
查看>>
腾讯Android自动化测试实战3.3.1 控件ID相同时获取控件
查看>>
《树莓派渗透测试实战》——1.1 购买树莓派
查看>>
《深入分析GCC 》——2.4 shell工具及graphviz绘图工具
查看>>
Apache Storm 官方文档 —— 使用 Maven 构建 Storm 应用
查看>>
大数据与机器学习:实践方法与行业案例.2.6 本章小结
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
量化交易入门——数学模型应用于投机交易
查看>>
C++游戏系列4:杀伤距离有限制
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>