总结:十分正常…挺欢乐的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. myeclipse10.7安装git插件
  2. python与办公自动化-用 Python 自动化办公,我与大神之间的差距一下就拉小了
  3. openoffice+linux+jodconverter+乱码,OpenOffice安装和转换乱码解决方案
  4. 14 [虚拟化] 虚存抽象;Linux进程的地址空间
  5. shell正则表达式去除注释行
  6. linux find和xargs
  7. tts语音合成小玩具
  8. 4.卷1(套接字联网API)---基本TCP套接字编程
  9. Microsoft Dynamic CRM 自定义重复检测功能
  10. 数据库系统在计算机系统中的地位与作用,浅谈数据库设计在系统设计中的重要性...
  11. VBA编程_ActiveSheet
  12. 一个在线挑选编程字体的网站
  13. 简易数字时钟 按键可校准
  14. 冬天跑步比夏天跑步减肥更快 冬天跑步减肥冷怎么办
  15. java math pow_Java Math.pow() 方法
  16. 基于Chrome应用商店安装elasticsearch-head插件
  17. Spring Boot配置Tomcat容器、Jetty容器、Undertow容器
  18. linux系统装fluent没有界面,Linux上安装ANSYS后的一些坑(未完待续)
  19. 平方数列、立方数列求和公式与推导
  20. js 监听div内容的变化

热门文章

  1. 分析暴力的满天发红包~【方便虽好,安全第一~】
  2. 实验:复现PHP一句话木马的利用
  3. 织梦cms模板保护技术
  4. Arduino控制PWM舵机的总结
  5. .net用TransactionScope实现事务
  6. CSS---引入CSS代码的四种方式
  7. 【Python那些事儿】使用箱线图
  8. 支付宝AR实景红包上线不久即遭破解,官方已提高技术门槛
  9. 已解决zipfile.BadZipFile: File is not a zip file
  10. 仿微信录制视频之自定义View