网易笔试第三题二分过不了吗?

RT #笔试题目##网易#
全部评论
代码写得比较丑。。求轻喷 #include <bits/stdc++.h> using namespace std; int cap[210]; int rd[210]; vector<int> toporder; vector<int> G[210]; double tim[210]; double power[210]; bool vis[210]; void dfs(int cur) {     vis[cur] = true;     tim[cur] = 0.0;     for (auto to : G[cur])         if (!vis[to])             dfs(to); } void topsort(int n) {     toporder.clear();     queue<int> q;     for (int i = 1; i <= n; i++)         if (rd[i] == 0)             q.push(i);     while (!q.empty())     {         int cur = q.front();q.pop();         toporder.push_back(cur);         for (auto to : G[cur])         {             rd[to]--;             if (rd[to] == 0)                 q.push(to);         }     } } int main() {     int t;     scanf("%d", &t);     while (t--)     {         int n, m, b, e;         scanf("%d%d%d%d", &n, &m, &b, &e);         for (int i = 1; i <= n; i++)             scanf("%d", cap + i), rd[i] = 0, vis[i] = false, G[i].clear(), tim[i] = -1.0;         int from, to;         for (int i = 0; i < m; i++)         {             scanf("%d%d", &from, &to);             G[from].push_back(to);             rd[to]++;         }         if (e > 0)         {             dfs(b);             topsort(n);             for (int i = 1; i <= n; i++)             {                 if (tim[i] == -1.0)                     continue;                 double l = 0.0, r = 65536.0*65536.0*200.0;                 for (int j = 0; j < 50; j++)                 {                     double mid = (l + r) / 2;                     for (int l = 1; l <= n; l++)                         power[l] = 0;                     power[b] = e * mid;                     int k = 0;                     while (toporder[k] != i)                     {                         int cur = toporder[k];                         if (power[cur] >= cap[cur])                             for (auto to : G[cur])                                 power[to] += (power[cur] - cap[cur]) / G[cur].size();                         k++;                     }                     if (power[i] >= cap[i])                         r = mid;                     else                         l = mid;                 }                 tim[i] = (l + r) / 2.0;             }         }         printf("%.4f", tim[1]);         for (int i = 2; i <= n; i++)             printf(" %.4f", tim[i]);         puts("");     }     return 0; }
点赞 回复 分享
发布于 2019-04-06 22:41
二分完之后你想怎么写,我是直接dfs+记忆化搜索,但有bug WA了
点赞 回复 分享
发布于 2019-04-06 21:49
第三题求解答
点赞 回复 分享
发布于 2019-04-06 21:40
都没看到第三题,只能用c/c++/java, 不能python, 拼死AC 2道
点赞 回复 分享
发布于 2019-04-06 21:35
没做出来1道,我0分
点赞 回复 分享
发布于 2019-04-06 21:34

相关推荐

狸猫换offer:神通广大的互联网
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

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