获赞
1.8W
粉丝
2976
关注
396
看过 TA
6990
中国传媒大学
2018
运营
IP属地:北京
有问题请找社区小助手,此号暂停使用
私信
关注
2018-08-12 09:37
已编辑
社区规范更新号
812字节跳动笔试结束!你考的怎么样?~   欢迎大家发自己的题解哦,筱茜会从中挑选一位送上牛客定制T恤一件~~            规则:       - 在牛客讨论区“笔经面经”板块发布你的题解   - 在本帖下回复你的题解链接即可~      --------------------------------   字节跳动笔试讨论专帖:https://www.nowcoder.com/discuss/93143   与更多牛友一起讨论笔试吧~
小人物_大希望:#include <cstdio> #include <iostream> #include <vector> #include <queue> #include <map> #include <numeric> using namespace std; typedef unsigned int ll; int main() {     int N;     while (cin >> N)     {         vector<int> x(N), y(N);     for (int i = 0; i < N; ++i)         cin >> x[i] >> y[i];     int sumx = accumulate(x.begin(), x.end(), 0);     int sumy = accumulate(y.begin(), y.end(), 0); //    cout << sumx << endl;     int INF = -sumy * 4;     vector<vector<int>> f(2, vector<int>(2 * sumx + 1, INF));     int pre = 0, cur = 1;     f[cur][sumx] = 0;     for (int i = 0; i < x.size(); ++i)     {         swap(pre, cur);         for (int j = 0; j < f[cur].size(); ++j)             f[cur][j] = f[pre][j];         for (int j = 0; j < f[0].size(); ++j)         {             if (j - x[i] >= 0) f[cur][j - x[i]] = max(f[cur][j - x[i]], f[pre][j] + y[i]);             if (j + x[i] < f[0].size()) f[cur][j + x[i]] = max(f[cur][j + x[i]], f[pre][j] + y[i]);         }     }     cout << f[cur][sumx] << endl;     } } 第三题题解。 思路:动态规划,f[i][j]表示 考虑前i张卡片,a与b的个人得分之差为j时能得到的最大团体分。
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务