360 3.28笔试

360刚刚的笔试第二道编程怎么做,我只ac了9%#360公司##笔试题目#
全部评论
楼主第一题是按位或,第二题是宝藏吗
2 回复 分享
发布于 2021-03-28 21:10
第一题打气球:第一行输入气球个数,第二行输入每个气球的分数, 只能打两枪:①一枪未中0分②中一枪得分为此气球的分③中两枪两气球分数的或 求所有情况分数总和? 第二题:寻宝:第一行输入三个数为宝藏个数,每次飞行距离,飞行次数 其他每行输入第一个宝藏与之距离和money 求最大money? 全凭记忆,来个来个讲讲第二题😂
2 回复 分享
发布于 2021-03-28 21:15
第二题dfs直接就过了,毕竟范围很小; 和昨天米哈游笔试的难度比一个天上一个地下。。。 贴个代码: #include <iostream> using namespace std; int value[101] = {}; int dist[101] = {}; int n, m, times; int maxnum = 0; void dfs(int nowdist, int lefttime,int laststep,int totalvalue) { if (lefttime == 0) { if (totalvalue > maxnum)maxnum = totalvalue; return; } if (laststep == n || (dist[laststep + 1] - dist[laststep]) > m) { if (totalvalue > maxnum)maxnum = totalvalue; return; } for (int i = laststep + 1; i <= n && (dist[i] - dist[laststep]) <= m; i++) { dfs(dist[i], lefttime - 1, i, totalvalue + value[i]); } return; } int main() { cin >> n >> m >> times; for (int i = 1; i <= n; i++) { cin >> dist[i] >> value[i]; } if (n == 1 ) { cout << value[1]; return 0; } if (n == 0) { cout << 0; return 0; } dfs(0,times,1,value[1]); cout << maxnum; return 0; }
2 回复 分享
发布于 2021-03-28 22:17
求原题!
1 回复 分享
发布于 2021-03-28 21:06
dfs暴力只有18%。。
1 回复 分享
发布于 2021-03-28 21:06
第一题一直36%完全没想到会int溢出,第二题是一道递归ac了。
1 回复 分享
发布于 2021-03-28 21:11
很多人需要第二题的代码,我直接发评论区了,java写的。直接暴力递归就ac了,根本不需要改动态规划。 public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int M = in.nextInt(); int K = in.nextInt(); int[] km = new int[N]; int[] gold = new int[N]; for (int i = 0; i < N; i++) { km[i] = in.nextInt(); gold[i] = in.nextInt(); } int max = gold[0]; System.out.println(maxGold(N, M, K - 1, km, gold, max, 1,0)); } public static int maxGold(int N, int M, int K, int[] km, int[] gold, int max, int gg,int start) { if (gg == N || (km[gg]-start) > M || K < 0) { return max; } int a = maxGold(N, M, K - 1, km, gold, gold[gg]+ max, gg + 1,km[gg]); int b = maxGold(N, M, K, km, gold, max, gg + 1,start); return Math.max(a,b); }
1 回复 分享
发布于 2021-03-29 08:38
我也是
点赞 回复 分享
发布于 2021-03-28 21:06
第一题一直36%,有大佬讲一下嘛😢
点赞 回复 分享
发布于 2021-03-28 21:06
楼主第二题有思路了吗,求解
点赞 回复 分享
发布于 2021-03-28 21:07
🤣第二题我连测试用例都没过,然鹅有55%,我觉得就是背包问题。然后第一题一直超时...
点赞 回复 分享
发布于 2021-03-28 21:08
第二题dp了36分儿 第一题超时18分。。
点赞 回复 分享
发布于 2021-03-28 21:08
第一题是两颗子弹吗
点赞 回复 分享
发布于 2021-03-28 21:08
第二题就是根据距离穷举,36不知道错哪了
点赞 回复 分享
发布于 2021-03-28 21:11
第一题按位或,统计一下每个位的1的数量就可以了,复杂度n*32,C/C++要用long long,第二题dp一下就可以了,dp[i][j]表示前i个宝藏跳j次的最大金币数,复杂度n的三次方
点赞 回复 分享
发布于 2021-03-28 21:12
问问丝路。我自己有一个思路:固定跑K次,每次M内找Max值。问问做出来的大佬是什么思路。
点赞 回复 分享
发布于 2021-03-28 21:13
第一题 python, 73%, 不知道为什么?有用python ac的吗
点赞 回复 分享
发布于 2021-03-28 21:35
第二题建图 graph[][]表示是否可达,dfs寻找最大值 但超时了
点赞 回复 分享
发布于 2021-03-29 00:07
想问一下,第一题有大佬用python做ac的吗
点赞 回复 分享
发布于 2021-03-29 00:21
第一题模拟,结果用long 存。 第二题枚举向前可达点算最大金币数就行,二维dp。
点赞 回复 分享
发布于 2021-03-29 16:17

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
评论
点赞
6
分享
牛客网
牛客企业服务