总结:十分正常…挺欢乐的emm…就是感觉代码量好大啊emm

T2

题目大意:单次操作可以插入一个字符至末尾 / 或将当前已有字符copy一遍到末尾(仅可使用一次)
问最少需要多少次操作得到目标串s
l e n < = 1 e 6 len<=1e6 len<=1e6

从长到短枚举copy的长度…然后hash做到单次 O ( 1 ) O(1) O(1)判断,copy当前长度是否可行即可。
(Java没有unsigned long long差评!!!)(雾

import java.util.*;public class zbr01
{public static int n,m,k;public static String s;public static long []b=new long[100005];public static long []h=new long[100005];public static long mod=1000000007;public static long gh(int l,int r){long tmp=h[r],p2=(h[l-1]*b[r-l+1])%mod;tmp=(tmp-p2+mod)%mod;return tmp;}public static void main(String[] args){Scanner S=new Scanner(System.in);s=S.nextLine(); s=S.nextLine(); n=s.length();s="#"+s; b[0]=1;for(int i=1;i<=n;i++) b[i]=(b[i-1]*233)%mod;for(int i=1;i<=n;i++){char p=s.charAt(i);h[i]=(h[i-1]*233+p)%mod;}int F=0;for(int i=n/2;i>=1;i--){long p=gh(1,i),q=gh(i+1,2*i);if(p==q&&F==0) {F=1; System.out.println(n-i+1);}}if(F==0) System.out.println(n);}
}

T3

题目大意:有n块板子,m种颜色,给出一些特殊关系为i种颜色后不能跟j颜色,问给所有板子涂色的方案数。
n < = 1000 , m < = 10 n<=1000,m<=10 n<=1000,m<=10

考虑 d p [ i ] [ j ] dp[i][j] dp[i][j]为第i块板子为j种颜色的方案数。
然后胡乱转移即可。。。时间复杂度 O ( n m 2 ) O(nm^2) O(nm2)
(非常非常标准的dp入门题了???)

import java.util.*;public class zbr01
{public static int n,m,k;public static long mod=1000000007;public static long [][]dp=new long [1005][15];public static int [][]p=new int [15][15];public static void main(String[] args){Scanner S=new Scanner(System.in);int T=S.nextInt();for(int z=1;z<=T;z++){n=S.nextInt(); m=S.nextInt(); k=S.nextInt();for(int i=1;i<=m;i++) for(int j=1;j<=m;j++) p[i][j]=0;for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) dp[i][j]=0;for(int i=1;i<=m;i++){for(int j=1;j<=k;j++){int x=S.nextInt();p[i][x]=1;}}for(int i=1;i<=m;i++) dp[1][i]=1;long ans=0;for(int i=2;i<=n;i++){for(int j=1;j<=m;j++){for(int k=1;k<=m;k++){if(p[j][k]==1) continue;dp[i][k]=(dp[i-1][j]+dp[i][k])%mod;}}}for(int i=1;i<=m;i++) ans=(ans+dp[n][i])%mod;System.out.println(ans);}}
}

T4

题目大意:自己有一个 v a l val val值,给两个数组,在其中顺着从 [ 1 , n ] [1,n] [1,n]取数。每次可以选择一个数组的开头取走一个数
从第一个数组取一个数需要 v a l − = a 1 [ i ] , v a l + = b 1 [ i ] val-=a1[i],val+=b1[i] val−=a1[i],val+=b1[i];
从第二个数组取一个数需要 v a l − = a 2 [ i ] , v a l + = b 2 [ i ] val-=a2[i],val+=b2[i] val−=a2[i],val+=b2[i];(均按顺序操作)
你需要自己确定一个最小的val值,使得任何时候val值大小都>=1。

考虑 d p [ i ] [ j ] dp[i][j] dp[i][j]为 能让第一个数组打到i,第二个数组打到j的最低血量。
然后记录四个前缀和,即可判断当前状态的血量,以及能不能继续打。
直接 d p [ i ] [ j ] = m i n ( d p [ i − 1 ] [ j ] + r e s x , d p [ i ] [ j − 1 ] + r e s y ) dp[i][j]=min(dp[i-1][j]+resx,dp[i][j-1]+resy) dp[i][j]=min(dp[i−1][j]+resx,dp[i][j−1]+resy)转移即可,时间复杂度 O ( n 2 ) O(n^2) O(n2);

(也是十分标准的dp板子题了…

import java.util.*;public class zbr01
{public static int []a1=new int[1005];public static int []a2=new int[1005];public static int []b1=new int[1005];public static int []b2=new int[1005];public static int []pa1=new int[1005];public static int []pa2=new int[1005];public static int []pb1=new int[1005];public static int []pb2=new int[1005];public static int [][]dp=new int[1005][1005];public static int inf=2000000001;public static void main(String[] args){Scanner S=new Scanner(System.in);int n=S.nextInt();for(int i=n;i>=1;i--) a1[i]=S.nextInt();for(int i=1;i<=n;i++) {a2[i]=S.nextInt(); pa2[i]=pa2[i-1]+a2[i];}for(int i=n;i>=1;i--) b1[i]=S.nextInt();for(int i=1;i<=n;i++) {b2[i]=S.nextInt(); pb2[i]=pb2[i-1]+b2[i];}for(int i=1;i<=n;i++) {pa1[i]=pa1[i-1]+a1[i]; pb1[i]=pb1[i-1]+b1[i];}for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) dp[i][j]=inf; dp[0][0]=0;for(int i=0;i<=n;i++) for(int j=0;j<=n;j++){if(i>=1){int res=dp[i-1][j];res-=pa1[i-1]; res+=pb1[i-1]; res-=pa2[j]; res+=pb2[j];if(res>=a1[i]) dp[i][j]=Math.min(dp[i][j],dp[i-1][j]);else dp[i][j]=Math.min(dp[i][j],dp[i-1][j]+(a1[i]-res));}if(j>=1){int res=dp[i][j-1];res-=pa1[i]; res+=pb1[i]; res-=pa2[j-1]; res+=pb2[j-1];if(res>=a2[j]) dp[i][j]=Math.min(dp[i][j],dp[i][j-1]);else dp[i][j]=Math.min(dp[i][j],dp[i][j-1]+(a2[j]-res));}}System.out.println(dp[n][n]+1);}
}

T1

(由于完全没有价值被扔到最后)

题目大意:完全没有价值的大模拟…大家都会就略略略了…

大大大大大大大模拟…(我永远讨厌大模拟.jpg)

import java.util.*;public class zbr01
{public static int n,m;public static int []arr=new int[100005];public static int []b=new int[100005];public static void main(String[] args){Scanner S=new Scanner(System.in);int T=S.nextInt();for(int z=1;z<=T;z++){String s=S.next(); char a=s.charAt(0);s=S.next(); char b=s.charAt(0);s=S.next(); char c=s.charAt(0);s=S.next(); char d=s.charAt(0);int x1=0,x2=0;if(a=='J'&&d=='B'||a=='J'&&c=='B') x1++;if(a=='S'&&d=='J'||a=='S'&&c=='J') x1++;if(a=='B'&&d=='S'||a=='B'&&c=='S') x1++;if(b=='J'&&d=='B'||b=='J'&&c=='B') x2++;if(b=='S'&&d=='J'||b=='S'&&c=='J') x2++;if(b=='B'&&d=='S'||b=='B'&&c=='S') x2++;if(x1==x2) System.out.println("same");else if(x1>x2) System.out.println("left");else System.out.println("right");}}
}

END:怎么感觉又在水时间…天天摸鱼…再写这种题算法水平要完蛋了((

贝壳2021批笔试题解相关推荐

  1. 网易2021批笔试题解

    总结:全是模拟-以及读入处理体验好差hhh 一套卷子(4/4AK) T3 题目大意:给出一棵树,从0节点开始走m步,求可访问的最多节点数(一个节点访问多次仅算一次) n , m < = 1000 ...

  2. 腾讯2021批笔试题解

    总结:一套算是正常的笔试-算是让大家有点思考了-都没那么一眼秒(除了强烈谴责某T5最短路板子.我还差点没看到这题hhh(( (另一套题的T5) T5 题目大意:给出n个红球,n个黑球,给出交叉排列的序 ...

  3. 字节跳动2021批笔试题解

    总结:-这场打的心累- T3 题目大意:给出平面上n个点 ( x , y ) (x,y) (x,y),求在给定的m个点中,到n个点的曼哈顿距离和最小的一个点: ( a , b ) (a,b) (a,b ...

  4. 2021 vivo校招提前批笔试解析

    2021 vivo校招提前批笔试解析 1.种花问题 情况1:排除端点 情况2:考虑端点 情况3:花园大小只有1 2.质量测试 3.合并流水线 题目不能完整的记下来,目测后面vivo会把题目放到牛客上, ...

  5. 2021届招银网络科技提前批笔试

    2021届招银网络科技提前批笔试 写在前面: 第一次参加笔试,结果不重要,就当作是积累经验啦~ 有一些坑记录下来,后面的人看到也可以注意一下: 1.每部分题目是不能往回翻页的,就是说你不能想着做完了后 ...

  6. 58同城2021校招笔试真题-前端

    58同城2021校招笔试-前端 以下代码输出: console.log([1,2,3,4,5].splice(1,2,3,4,5)); console.log([1,2,3,4,5].slice(1, ...

  7. 微软2016校园招聘9月在线笔试题解

    微软2016校园招聘9月在线笔试题解 题目网址列表:http://hihocoder.com/contest/mstest2015sept2/problems 题目一分析: 问题描述:在二维坐标系中, ...

  8. 网易2021校招笔试

    网易2021校招笔试 第一题 第二题 第三题 第四题 第五题 第六题 第一题 Comparable和Comparator区别是什么? 1.comparable接口实际上是出自java.lang包,它有 ...

  9. E-捡贝壳 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)

    E-捡贝壳 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛) 小明来到一片海滩上,他很喜欢捡贝壳,但他只喜欢质量为x的倍数的贝壳. 贝壳被排列成一条直线,下标从1到n编号,小明打算从编号 ...

最新文章

  1. app怎么嵌套vue页面_app内嵌vue单页面应用的一些坑
  2. c# 连接Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value:类型搞混弄出的错误...
  3. 创建数据库连接字符串的快截方法
  4. 120万名 GoDaddy 客户数据遭泄露
  5. md360 android,MD360Player4Android 学习的简单使用
  6. jQuery中文文档
  7. 49.字符串转int
  8. Java线程池的学习记录
  9. php yaf框架扩展实践一——配置篇
  10. 计算机常用端口号以及对应服务总结
  11. 使用oligo软件包处理芯片数据
  12. 蓝屏代码及其解决方案
  13. 引入思考的电影电视动漫
  14. SAP 固定资产主数据
  15. 编写程序描述影视歌三栖艺人 需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。 实现思路及关键代码 1)分析影视歌三栖艺人的特性 a)可以演电影 b)可以演电视剧 c)可以唱歌
  16. java 标准时间_Java 如何格式化中国标准时间
  17. 就在刚刚 Kubernetes 1.25 正式发布,包括这些重大变化
  18. Spring Integration Kafka
  19. 分享一个有意思题目--击鼓传花
  20. linux上部署K8S集群

热门文章

  1. 投影仪哪个牌子好?怎么选家用投影仪
  2. 身为大学生的你,还在摆烂吗?
  3. PHP一句话木马大全
  4. Android App 开发的三种姿势 ~
  5. 深度学习YOLO模型
  6. 广东科贸职业学院高职扩招2021年招生简章
  7. 解决KindEditor无法安装flash插件实现图片批量上传
  8. 网速3.5Gbps!小米AX6000路由器拆解评测
  9. 概述CSLA.NET 3.6 (Overview of CSLA .NET 3.6 for Windows and Silverlight)
  10. SpringBoot实现WebSocket即时通讯