今晚腾讯笔试编程大家过了多少

加起来1.8,感觉凉了#腾讯#
全部评论
 移动客户端,凉凉,算法和选择都炸了
点赞 回复 分享
发布于 2019-04-05 21:28
/* 硬币题的解法,贪心算法,能AC,主要思路是统计当前硬币面值的总和sum,  * 然后从硬币数组里选取面值不小于sum+1的最大面值硬币加入,直到sum达到m;  * 之所以可以这样,我们借助测试用例{1,2,5,10}理解,  * 首先要凑出1,那么必选1,即{1},选取面值不小于2的最大的2加入,即{1,2},这时可凑出1,2,3;  * 现在sum为3,要选取不小于4的最大的加入,所以还是选2,即{1,2,2},这时可凑出1,2,3,4,5;  * 现在sum为5,要选取不小于6的最大的加入,所以选5,即{1,2,2,5},这时可凑出1~10;  * 现在sum为10,要选取不小于11的最大的加入,所以选10,即{1,2,2,5,10},这时可凑出1~20;  * 此时sum达到20,循环停止。  * 通过以上可以分析出,假设目前我已有的硬币能凑出1~p范围内的所有数,  * 我们只需添加一个q,即可凑出1~(p+q)范围内的所有数。  */ import java.util.*; public class Exam1{          public static void main(String[] args) {         Scanner in = new Scanner(System.in);         int m = in.nextInt();         int n = in.nextInt();         int[] coin = new int[n];         //输入硬币数组;         for (int i = 0; i < n; i++) {             coin[i] = in.nextInt();         }         System.out.println(minNum(m,n,coin));     }          public static int minNum(int m, int n, int[] arr) {         //先把硬币数组排序,便于之后选出需要的最大的数;         Arrays.sort(arr);         //必须要有1,不然没法凑出1;         if(arr[0] != 1){             return -1;         }             int sum = 0;         int result = 0;                  while(true){             //总面值达到m即停止;             if(sum >= m){                 return result;             }           //依次从arr数组里选出符合要求的最大的数加入;             for(int i=n-1; i>=0; i--){                 if(arr[i] <= sum+1){                     //添加一枚硬币;                     sum += arr[i];                     result++;                     break;                 }             }         }     } }
点赞 回复 分享
发布于 2019-04-06 22:21
0 + 100 + 90  晚来了40分钟5555
点赞 回复 分享
发布于 2019-04-05 21:34
我头像上传失败,每上传头像,也不知道会不会直接炸穿,求大佬解答
点赞 回复 分享
发布于 2019-04-05 22:23
10 100 90... 不定项选择太恶心了
点赞 回复 分享
发布于 2019-04-05 21:51
请问在哪看到成绩?
点赞 回复 分享
发布于 2019-04-05 21:33
10+100+100.呜呜呜
点赞 回复 分享
发布于 2019-04-05 21:25
#include <iostream> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; int n; LL w[105], g[105]; LL dp[105], st[105]; int main() {     // freopen("in.txt", "r", stdin);     memset(dp, 0, sizeof(dp));     memset(st, 0, sizeof(st));     cin >> n;     for (int i = 1; i <= n; i++) cin >> w[i];     for (int i = 1; i <= n; i++) cin >> g[i];     int mx = 0;     for (int i = 1; i <= n; i++) mx += g[i];     LL mmx = 0;     for (int k = 1; k <= n; k++) mmx = max(mmx, w[k]);     for (int i = 1; i <= n; i++) {         int p = g[i];         for (int j = mx; j >= p; j--) {             LL sum = w[i];             for (int k = 0; k < n; k++)                 if ((1 << k) & st[j - p]) sum += w[k + 1];             if (sum >= dp[j]) {                 st[j] = (st[j - p] | (1 << (i - 1)));                 dp[j] = sum;             }         }     }     for (int i = 1; i <= mx; i++)         if (dp[i] >= mmx) {             cout << i << endl;             break;         }     return 0; }
点赞 回复 分享
发布于 2019-04-06 20:58
0我压根没参加。各位做了的都有希望啊,我就直接凉凉
点赞 回复 分享
发布于 2019-04-06 10:40
第三题裸的背包问题。。。 #include <bits/stdc++.h> using namespace std; const int N = 55; const long long INF = 1e18; long long dp[2*N],v[N]; int w[N]; int main(){     int n;     scanf("%d",&n);     for(int i=0;i<n;i++)scanf("%lld",&v[i]);     for(int i=0;i<n;i++)scanf("%d",&w[i]);     dp[0] = 0;     for(int i=1;i<=100;i++)dp[i] = -INF;     for(int i=0;i<n;i++){         for(int j=100;j>=w[i];j--){             dp[j] = max(dp[j],dp[j-w[i]]+v[i]);         }         for(int j=0;j<=100;j++)if(dp[j]<v[i])dp[j] = -INF;     }     for(int i=1;i<=100;i++){         if(dp[i]>0){             printf("%d\n",i);             break;         }     }     return 0; }
点赞 回复 分享
发布于 2019-04-06 10:27
1.9 把自己的傲慢击碎了,可以按下性子学习了,哈哈😂
点赞 回复 分享
发布于 2019-04-06 08:33
所以说多少分才能被发起面试啊 大家都收到性格测试了吗
点赞 回复 分享
发布于 2019-04-06 01:46
怪兽代码 线性复杂度 #include <iostream> using namespace std; typedef long long ll; int main() {     int n;     cin>>n;     ll force_value[100];     int coin_value[100];     ll ans[101][101];// ans[i][j] 到达i位置,使用了j个金币,所能获得的最大体力     for(int j=0;j<=100;j++){              ans[0][j] = 0;     }          for(int i=1;i<=n;i++){         for(int j=0;j<=100;j++){              ans[i][j] = -1;         }     }     for(int i=1;i<=n;i++){         cin>>force_value[i];     }          for(int i=1;i<=n;i++){         cin>>coin_value[i];     }     for(int i=1;i<=n;i++){         for(int j=1;j<=100;j++){             if (ans[i-1][j]>=force_value[i]){                 ans[i][j] = max(ans[i][j], ans[i-1][j]);             }             if(j>=coin_value[i] && ans[i-1][j-coin_value[i]]!=-1)                 ans[i][j] = max(ans[i][j], ans[i-1][j-coin_value[i]]+force_value[i]);         }     }     for(int i=1;i<=100;i++){         if(ans[n][i]!=-1){             cout<<i<<endl;             break;         }     }     system("pause");     return 0; }
点赞 回复 分享
发布于 2019-04-05 23:26
第一题暴力10%,第二题数0和1的差就行100%,第三题我是卡数据过的,暴力dfs+剪枝100%(实际上是因为后台数据太水了)
点赞 回复 分享
发布于 2019-04-05 22:16
0.8 ***菜
点赞 回复 分享
发布于 2019-04-05 22:11
AK
点赞 回复 分享
发布于 2019-04-05 22:03
10 100 0
点赞 回复 分享
发布于 2019-04-05 21:58
硬币那题给的样例真的是ok的吗??1,2,5,10凑<=20的,哪个数需要5个???我把每个都列出来最多也只用4个啊
点赞 回复 分享
发布于 2019-04-05 21:57
哪里可以看到结果啊?
点赞 回复 分享
发布于 2019-04-05 21:49
有没有游戏开发的。。。第一题只能到80
点赞 回复 分享
发布于 2019-04-05 21:49

相关推荐

不愿透露姓名的神秘牛友
07-10 11:27
明天又是董事长面,啥时候是个头啊
在太阳里长大的人:公司就仨人吧😂
点赞 评论 收藏
分享
程序员小白条:主要没亮点,项目也是网上的,平平无奇,那只能海投了,奖项总得有一些,然后就是现在最好是前后端都会,自己能做项目并且运维的,要么找星球项目改改,要么找个开源项目改改,自己能拓展功能才是主要的,跟做效率很低很低
点赞 评论 收藏
分享
评论
点赞
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务