topcoder srm 305 div1

problem1 link

直接按照题意模拟即可。

import java.util.*;
import java.math.*;
import static java.lang.Math.*;public class UnfairDivision {public int albertsShare(int[] assets) {final int n=assets.length;for(int i=1;i<n;++i) {assets[i]+=assets[i-1];}int result=0;for(int i=0;i<n-1;++i) {int betty=0,carla=0,albert=0;for(int j=0;j<n-1;++j) {if(j==i) {continue;}int[] a=new int[3];if(j<i) {a[0]=assets[j];a[1]=assets[i]-assets[j];a[2]=assets[n-1]-assets[i];}else {a[0]=assets[i];a[1]=assets[j]-assets[i];a[2]=assets[n-1]-assets[j];}Arrays.sort(a);if(a[1]>betty||a[1]==betty&&a[2]>carla) {carla=a[2];betty=a[1];albert=a[0];}}result=Math.max(result,albert);}return result;}
}

problem2 link

$f[a][b][c][d]$表示将第一个串的$[a,b]$以及第二个串的$[c,d]$拿出来能否拼成一个回文串。每次扩展有四种情况:

(1)第一个串两端相等,那么只需判断$f[a+1][b-1][c][d]$即可;

(2)第一个串的左侧和第二个串右侧相等,只需判断$f[a+1][b][c][d-1]$即可;

(3)第二个串的左侧和第一个串的右侧相等,只需判断$f[a][b-1][c+1][d]$即可;

(4)第二个串左右相等,那么只需判断$f[a][b][c+1][d-1]$即可。

import java.util.*;
import java.math.*;
import static java.lang.Math.*;public class InterleavePal {final static int INF=99999;int n,m;int[][][][] f=null;String S,T;boolean[][] gs=null;boolean[][] gt=null;boolean check(String s,int ll,int rr)  {while(ll<rr) {if(s.charAt(ll)!=s.charAt(rr)) {return false;}++ll;--rr;}return true;}int dfs(int l1,int r1,int l2,int r2) {if(l1>r1) {if(l2>r2) return 0;if(gt[l2][r2]) return r2-l2+1;return -INF;}if(l2>r2) {if(gs[l1][r1]) return r1-l1+1;return -INF;}if(f[l1][r1][l2][r2]!=-1) {return f[l1][r1][l2][r2];}int result=-INF;if(l1<r1&&S.charAt(l1)==S.charAt(r1)) {result=Math.max(result,2+dfs(l1+1,r1-1,l2,r2));}if(S.charAt(l1)==T.charAt(r2)) {result=Math.max(result,2+dfs(l1+1,r1,l2,r2-1));}if(T.charAt(l2)==S.charAt(r1)) {result=Math.max(result,2+dfs(l1,r1-1,l2+1,r2));}if(l2<r2&&T.charAt(l2)==T.charAt(r2)) {result=Math.max(result,2+dfs(l1,r1,l2+1,r2-1));}f[l1][r1][l2][r2]=result;return result;}public int longestPal(String s, String t) {n=s.length();m=t.length();if(n==0&&m==0) {return 0;}S=s;T=t;f=new int[n][n][m][m];int result=0;gs=new boolean[n][n];for(int i=0;i<n;++i) {for(int j=i;j<n;++j) {if(check(S,i,j)) {gs[i][j]=check(S,i,j);if(gs[i][j]) {result=Math.max(result,j-i+1);}}}}gt=new boolean[m][m];for(int i=0;i<m;++i) {for(int j=i;j<m;++j) {if(check(T,i,j)) {gt[i][j]=check(T,i,j);if(gt[i][j]) {result=Math.max(result,j-i+1);}}}}if(n==0||m==0) {return result;}for(int i=0;i<n;++i) {for(int j=i;j<n;++j) {for(int k=0;k<m;++k) {for(int p=k;p<m;++p) {f[i][j][k][p]=-1;}}}}for(int i=0;i<n;++i) {for(int j=i;j<n;++j) {for(int k=0;k<m;++k) {for(int p=k;p<m;++p) {result=Math.max(result,dfs(i,j,k,p));}}}}return result;}
}

problem3 link

首先,对于指数是偶数的情况来说,会产生重复,比如$x^{12}=(x^{3})^{4}=(x^{6})^{2}$。因此,只计算指数为素数时可避免这种情况;

其次,$(x^{3})^5=(x^{5})^{3}$。这种情况下,只计算指数较小者。所以在计算到指数为较大的素数时,比如11,假设最大值为$t$,即$t^{11}\leq n,(t+1)^{11}>n$.那么要判断有多少数字$u$满足$u^{k}\leq t$,其中$k<11$。

import java.util.*;
import java.math.*;
import static java.lang.Math.*;public class PowerCollector {boolean isprime(int k) {for(int i=2;i*i<=k;++i) {if(k%i==0) {return false;}}return true;}long get(long a,int b,long n) {long t=1;for(int i=0;i<b;++i) {if(t>n/a) {return n+1;}t*=a;}return t;}long getMax(long n,int k) {long low=1,high=n;long result=1;while(low<=high) {long M=(low+high)>>1;if(get(M,k,n)>n) {high=M-1;}else {result=Math.max(result,M);low=M+1;}}return result;}long dfs(long n,int k) {long result=1;for(int i=2;i<k;++i) {if(!isprime(i)) {continue;}long t=getMax(n,i);if(t==1) {break;}result+=t-dfs(t,i);}return result;}public String countPowers(String N) {long n=Long.valueOf(N);if(n==1) {return "1";}return String.valueOf(dfs(n,62));}
}

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动图演示23个鲜为人知的VSCode快捷键

原文地址&#xff1a;https://dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80尽管我在VS Code中经常使用许多快捷方式&#xff0c;以下快捷方式可能会派上用场&#xff0c;但我经常忘记它们的存在。我制作了一些GIF&#xff0c;以便更好地记住它们。也许这里面也…

使用C语言进行面向对象的开发--GObject入门[5]

转载请注明出处 blog.csdn.net/pingf0 或www.cnblogs.com/pingf 接上文这一部分简要介绍下类的析构&#xff0c;或者成为终结。还是多说几句&#xff0c;也算是对前文的补充1.生成一个类是由父到子&#xff0c;析构的时候自然与之相对是由子到父。2.GObject的内存管理并没有采用…

python结课报告_Python数据分析课程到底是学什么内容的?

2020年12月4日&#xff0c;博为峰旗下学掌门召开了《Python 商业(大)数据分析师》新课程发布会。据悉&#xff0c;此次发布会上发布的《Python 商业(大)数据分析师》课程是在原《数据分析师》课程上进行了全面升级。在发布会上博为峰副总经理王琰表示&#xff0c;在未来学掌门作…

linux禁止root用户直接登录sshd并修改默认端口

转载链接&#xff1a;http://jingyan.baidu.com/article/a681b0de3a657c3b184346d9.html linux最高权限用户root&#xff0c;默认可以直接登录sshd。为了提高服务器的安全度&#xff0c;需要对它进行禁止&#xff0c;使得攻击者无法通过暴力破解来获取root权限。 1,新建一个用…

面试官问:能否模拟实现JS的bind方法(高频考点)

可以点击上方的话题JS基础系列&#xff0c;查看往期文章写于2018年11月21日&#xff0c;发布在掘金阅读量1.3w前言这是面试官问系列的第二篇&#xff0c;旨在帮助读者提升JS基础知识&#xff0c;包含new、call、apply、this、继承相关知识。面试官问系列文章如下&#xff1a;感…

推荐一个ASP.NET的资源网站

推荐一个ASP.NET的资源网站&#xff1a;ASP.NET屋-专业的ASP.NET学习,ASP.NET源码,ASP.NET演示,MVC,Silverlight,JQuery,EXTJS,软件设计网站 http://www.aspx58.com.cn/ 转载于:https://www.cnblogs.com/yuyichen/archive/2009/11/26/1611682.html

连续投影算法_中航国画荣获“2020 IAV国际视听嘉年华” 大屏幕投影显示行业三大奖项!...

近日&#xff0c;“2020IAV国际视听嘉年华”在深圳湾创新生态园隆重举行&#xff0c;航空工业上电下属子公司中航国画作为2020年迪拜世博会中国馆官方合作伙伴应邀参加此次高峰论坛&#xff0c;并在展会期间凭借4K系列双色激光工程投影机、LP160UL系列超高亮度双色激光工程投影…

Linux 系统备份恢复工具 SYSTEM-RESCUE-CD 的使用

测试系统&#xff1a;linux-debian 备份系统 1、插入dd有systemrescuecd-x86-4.0.1.iso的系统备份恢复U盘&#xff1b; 2、开机按DEL进入BIOS&#xff0c;设置BOOT为USB-HDD启动。Save&Exit&#xff1b; 3、进入备份恢复系统界面&#xff1a;----------------------------…

CMDB功能分析与实现方案

CMDB功能分析与实现方案 CMDB系统的主要功能 1.用户管理,记录测试,开发,运维人员的用户表 2.业务线管理,记录业务的详情 3.项目管理,指定此项目属于那一条业务线 4.应用管理,指定此应用的开发人员 5.主机管理,记录主机管理员,连接的网络设备,存储,云主机,物理主机等信息 6.主机…

感冒

看好这个网页&#xff0c;你的感冒就好了转载于:https://www.cnblogs.com/baoguo/archive/2009/11/27/1612308.html

python numpy矩阵索引_Numpy中的矩阵索引

索引后查看形状&#xff1a;In [295]: Anp.matrix([1,2,3])In [296]: A.shapeOut[296]: (1, 3)In [297]: A[0]Out[297]: matrix([[1, 2, 3]])In [298]: A[0].shapeOut[298]: (1, 3)这种行为的关键是np.matrix始终是2d&#xff0c;所以即使选择一行(A[0,:])&#xff0c;结果仍然…

他的前端焦虑:30岁以后的前端路怎么走? 你想过吗~

马云曾说&#xff0c;员工的离职原因很多&#xff0c;唯两点最真实&#xff1a;一是钱&#xff0c;没给到位&#xff1b;二是心&#xff0c;委屈了。当时间来到了年末&#xff0c;离职、跳槽、年终奖又成了年终热词&#xff0c;而此时辞职好似成为了一场勇敢者的游戏&#xff0…

不可忽略的apache 的 Keep Alive

转载链接&#xff1a;http://hi.baidu.com/jx_iben/item/d5fe91feed74495ec9f337f1 在网页开发过程中&#xff0c;Keep-Alive是HTTP协议中非常重要的一个属性。大家知道HTTP构建在TCP之上。在HTTP早期实现中&#xff0c;每个HTTP请求都要打开一个socket连接。这种做效率很低&am…

码云 Gitee 新增仓库访问之 IP 白名单功能

码云企业版上线 IP 白名单功能&#xff0c;该功能主要用于企业禁止非指定 IP 访问代码仓库。如下图所示&#xff1a;使用方法&#xff1a;进入企业控制面板 -> 管理 -> 安全设置添加允许访问 Git 仓库的 IP 地址启用安全选项&#xff1a;只允许在信任范围内推拉代码其他关…

oracle 实时查询最耗CPU资源的SQL语句

1. 先通过top命令查看产用资源较多的spid号 2.查询当前耗时的会话ID&#xff0c;用户名&#xff0c;sqlID等&#xff1a;select sid,serial#,machine,username,program,sql_hash_value,sql_id, to_char(logon_time,yyyy/mm/dd hh24:mi:ss) as login_time from v$sessionw…

福利 | 抽奖送现金送书《Web前端工程师修炼之道》

很多关注了我的公众号的粉丝可能都不知道我&#xff0c;趁这次机会简单介绍下。你好&#xff0c;我是若川。江西人&#xff0c;某不那么知名的陶瓷大学毕业生&#xff0c;目前在杭州从事前端开发工作。常以若川为名混迹于江湖。更详细的可以点击关于我我历时一年才写了《学习源…

jQuery 1.9.1中live()变更

转载链接&#xff1a;http://www.360doc.com/content/13/1222/22/14022539_339358149.shtml 开始的时候在jQuery.1.7.1中使用了.live()觉得很好用&#xff0c;特别是在绑定事件之后再加入的元素的事件绑定上很方便(第一次live之后以后添加的元素就不需要绑定啦) 后来jQuery更…

蒙特卡洛方法_基本理论-蒙特卡洛方法与定积分

全球图形学领域教育的领先者、自研引擎的倡导者、底层技术研究领域的技术公开者&#xff0c;东汉书院在致力于使得更多人群具备内核级竞争力的道路上&#xff0c;将带给小伙伴们更多的公开技术教学和视频&#xff0c;感谢一路以来有你的支持。我们正在用实际行动来帮助小伙伴们…

WebServices 基础知识

1. 有关生存期的补充正常情况下&#xff0c;每次调用 WebMethod&#xff0c;服务器都会创建一个新的 WebService 对象&#xff0c;即便客户端使用同一个代理对象多次调用 WebMethod。而我们一旦调用了有缓存标记的 WebMethod&#xff0c;只要未超出缓存期&#xff0c;WebServic…

sass和compass基础用法

一、基本命令 sass都是通过gem安装&#xff0c;以下是一些基础的命令移除ruby的镜像地址 gem sources --remove https://rubygems.org/添加淘宝的镜像 gem source -a http://ruby.taobao.org查看镜像 gem source -v单文件转换命令 sass style.scss style.css单文件监听命令&am…