小红书cpp笔试 4.9
三道题一道都不会
甚至只有第二题能看懂是什么意思 拷打的我怀疑人生了。。
觉得leetcode250道题白刷了
甚至只有第二题能看懂是什么意思 拷打的我怀疑人生了。。
觉得leetcode250道题白刷了
全部评论
第一题才18 ,但找不出反例了,有没有一样的或者懂得解决一下疑惑
草 太难了 看第二题一开始很开心 心想 不就是个完全背包吗?写着写着发现一个测试点都没过,后面往下拉了拉 发现了那个万恶的树状图,两眼一黑。就这题做了一个小时,没写出来。后面想着要不暴力一点,把所有瓶子都2^N+NX,扔进数据表里再做一遍背包,发现时间来不及了。
做完心态崩了
第二题
```java
class Solution {
public static void main(String[] args) {
new Solution().sol();
}
public void sol() {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int X=in.nextInt();
int C=in.nextInt();
int[] Vol= new int[n];
int[] Qua= new int[n];
for (int i = 0; i < n; i++) {
Vol[i]=in.nextInt();
}
for (int i = 0; i < n; i++) {
Qua[i]=in.nextInt();
}
int[] dp = new int[C+1];
for (int i = 0; i < dp.length; i++) {
dp[i]=-1;
}
dp[0]=0;
for (int i = 0; i < Vol.length; i++) {
dp[Vol[i]]=Math.max(dp[Vol[i]],Qua[i]);
}
for (int i = 2; i < dp.length; i++) {
for(int j=1;j<i;j++){
int k = i-j;
if(dp[j]!=-1&&dp[k]!=-1){
if(j==k){
dp[i]=Math.max(dp[i],dp[j]*2+X);
}else{
dp[i]=Math.max(dp[i],dp[j]+dp[k]);
}
}
}
}
System.out.println(dp[C]);
}
```
第二题,其实相当于一个,最长路径来着。用bfs就能求,当然背包也是可以的
第三题根本没时间看,第一题非常熟悉,但是不知道为啥 就过了一半的测试点。估计还是基本功不到家,想用python,发现和力扣不大一样,想不起来怎么输入输出了,于是改用c++, 但是N年没写已经完全忘记怎么建树了,用了个邻接表,写的破破烂烂。
第三题,用map来存每个放入球的下标和放入的时间,然后取出就是从map中移除,然后每次求数字和的时候就是从map中取出值再进行时间计算,然而就过了27...不知道为啥
上一轮笔试的现在都没消息,他又开一轮,笑死
顺便求一个骗分的方法 极其需要
无语了
世另我
第二题感觉是完全背包,但是还有条件要处理,最后也没写出来,凉
第一题重点是他是一棵树你可以把每条边看成单向的 然后从根1开始遍历每一条路径下面有几个点并记录下来,最后遍历。
第二题就是一个dp 详情看代码吧。
第三题用两个set存红蓝,然后每次放入的时候让他相当于从0时刻放入,比如3时刻放value为5的,则放入set的时候把他的value设置为2。这样就相当于都是从0开始算的,同时维护两个set的和,输出的时候红色的和加上n(红)*time,蓝色的和减去n(蓝)*time
第一题感觉不难但是最终只过了18,第二题最后也没写出来,第三题有思路但是最后没时间了,凉凉之
我也是!感觉自己好傻😭
就知道第二题动态规划,md还那么麻烦,做个锤子
太难受了吧😭
第三题模拟一下就能过了
第三题感觉没问题了但是通过率只有27,把几个int改成long类型了还是27,为啥啊
零分,第三题做了快俩小时没做出来
相关推荐
点赞 评论 收藏
分享
01-30 14:23
浙江工业大学 Java 点赞 评论 收藏
分享