• vmware以及schlumberger题解


    先是vmare的:具体的题目我就不描述了。

    1. 贪吃的小明。直接数个数,统计个数,就可以完成。使用map,应该输入implement这一类,我认为很简单,但是我只过了33%。

     1 /*
     2 ID: y1197771
     3 PROG: test
     4 LANG: C++
     5 */
     6 #include<bits/stdc++.h>
     7 #define pb push_back
     8 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
     9 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
    10 typedef long long ll;
    11 using namespace std;
    12 typedef pair<int, int> pii;
    13 const int maxn = 1e3 + 10;
    14 string s[] = {"ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX" };
    15 void solve() {
    16     int n, a, b, c;
    17     string s1, s2;
    18     a = b = c = 0;
    19     map<string, int> m;
    20     cin >> n;
    21     for (int i = 0; i < 6; i++) m[s[i] ] = i;
    22     for (int i = 0; i < n; i++) {
    23         cin >> s1 >> s2;
    24         if(m[s1] > m[s2]) a++;
    25         else if(m[s1] < m[s2]) b++;
    26         else c++;
    27     }
    28     cout << a << " " << b << " " << c << endl;
    29     if(b < a) {
    30         cout << "MingMing Win" << endl;
    31     } else {
    32         cout << "LiangLiang Win" << endl;
    33     }
    34 
    35 }
    36 int main() {
    37     //freopen("test.in", "r", stdin);
    38     //freopen("test.out", "w", stdout);
    39     solve();
    40     return 0;
    41 }
    View Code

    2. 贾昆的谍报计划,可以从任意点开始,最长下降路径,更leetcode https://leetcode.com/problems/longest-increasing-path-in-a-matrix/这道题一致吧, 我认为是一样,因为上升和下降是完全一致的。这题我也没100%ac,但是我写的在leetcode可以ac啊,我不知道什么情况。我好想知道怎么回事了,set判重导致的错误,换priority_queue就可以。

     1 /*
     2 ID: y1197771
     3 PROG: test
     4 LANG: C++
     5 */
     6 #include<bits/stdc++.h>
     7 #define pb push_back
     8 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
     9 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
    10 typedef long long ll;
    11 using namespace std;
    12 typedef pair<int, int> pii;
    13 const int maxn = 1e3 + 10;
    14 int a[510][510];
    15 int cnt[510][510];
    16 struct node {
    17     int v, x, y;
    18     bool operator<(const node & t) const {
    19         return v < t.v;
    20     }
    21 };
    22 int dx[] = {0, 1, 0, -1};
    23 int dy[] = {1, 0, -1, 0};
    24 void solve() {
    25     set<node> se;
    26     int n, m, x, y; cin >> n >> m;
    27     for (int i = 0; i < n; i++) {
    28         for (int j = 0; j < m; j++) {
    29             cin >> x; a[i][j] = x;
    30             se.insert({x, i, j});
    31             cnt[i][j] = 1;
    32         }
    33     }
    34     int res = 0;
    35     while(!se.empty()) {
    36             int p = se.begin()->v;
    37         x = se.begin()->x; y = se.begin()->y;
    38         //cout << p << " " << x << " " << y << " " << res << endl;
    39         res = max(res, cnt[x][y]);
    40         se.erase(se.begin());
    41         for (int i = 0; i < 4; i++) {
    42             int cx = x + dx[i], cy = y + dy[i];
    43             if(cx < 0 || cx >= n || cy < 0 || cy >= m) continue;
    44             if(a[cx][cy] <= p) continue;
    45             cnt[cx][cy] =  max(cnt[x][y] + 1, cnt[cx][cy]);
    46         }
    47     }
    48     cout << res << endl;
    49 }
    50 int main() {
    51     freopen("test.in", "r", stdin);
    52     //freopen("test.out", "w", stdout);
    53     solve();
    54     return 0;
    55 }
    View Code

    3.旗帜计数,这道题比较变态,很难,后来查了一下,是cf原题,转移方程+快速幂,转移方程不好搞,链接在这里http://codeforces.com/problemset/problem/93/D注意,这题是div1的第4道题,当时ac的不到100人左右。

    schlimberger

    1. mumuchacha的珍珠手链,求固定窗口内最大值,直接滑动窗口O(1)的转移,很简单,或者是前缀和,代码难度比较低。直接过。

     1 /*
     2 ID: y1197771
     3 PROG: test
     4 LANG: C++
     5 */
     6 #include<bits/stdc++.h>
     7 #define pb push_back
     8 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
     9 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
    10 typedef long long ll;
    11 using namespace std;
    12 typedef pair<int, int> pii;
    13 const int maxn = 1e5 + 10;
    14 int n, m;
    15 int a[maxn * 2];
    16 void solve() {
    17     int cur = 0;
    18     cin >> n >> m;
    19     for (int i = 1; i <= n; i++) {
    20         cin >> a[i];
    21         a[i + n] = a[i];
    22         if(i < m) cur += a[i];
    23     }
    24     int res = a[1];
    25     for (int i = m; i <= n + m; i++) {
    26         cur += a[i];
    27         if(i - m > 0) cur -= a[i - m];
    28         res = max(res, cur);
    29     }
    30     cout << res << endl;
    31 
    32 
    33 }
    34 int main() {
    35     //freopen("test.in", "r", stdin);
    36     //freopen("test.out", "w", stdout);
    37     int i; cin >> i;
    38     while(i--)
    39     solve();
    40     return 0;
    41 }
    View Code

    2. 量子通讯工程,看完题目,就是写一个kruskal或者prim来求mst。 好久没写,发现都不会写了,刚好对dsu比较熟,就写了prim。

     1 /*
     2 ID: y1197771
     3 PROG: test
     4 LANG: C++
     5 */
     6 #include<bits/stdc++.h>
     7 #define pb push_back
     8 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
     9 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
    10 typedef long long ll;
    11 using namespace std;
    12 typedef pair<double, double> pii;
    13 const int maxn = 1e3 + 10;
    14 double d[110][110];
    15 int n;
    16 vector<pair<double, double>> a;
    17 double work(pii x, pii y) {
    18     return sqrt((x.first - y.first) * (x.first - y.first) + (x.second - y.second) * ((x.second - y.second)) );
    19 }
    20 bool vis[110];
    21 int f[maxn];
    22 int fd(int x) {
    23     if(x == f[x]) return f[x];
    24     return f[x] = fd(f[x]);
    25 }
    26 struct node {
    27     double d;
    28     int x, y;
    29     bool operator <(const node & t) const {
    30         return d < t.d;
    31     }
    32 } e[10000];
    33 void solve() {
    34     cin >> n;
    35     double x, y;
    36     for (int i = 0; i < n; i++) {
    37         cin >> x >> y;
    38         a.pb({x, y});
    39         f[i] = i;
    40     }
    41     int num = 0;
    42     for (int i = 0; i < n; i++) {
    43         for (int j = i + 1; j < n; j++) {
    44             double t = work(a[i], a[j]);
    45             e[num].d = t; e[num].x = i, e[num].y = j;
    46             num++;
    47         }
    48     }
    49     sort(e, e + num);
    50     double res = 0;
    51     for (int i = 0; i < num; i++) {
    52         int a1 = e[i].x, a2 = e[i].y;
    53         x = e[i].d;
    54         a1 = fd(a1); a2 = fd(a2);
    55         if(a1 != a2) {
    56             //cout << e[i].x << " " << e[i].y << " " << x << endl;
    57             f[a1] = a2;
    58             res += x;
    59         }
    60     }
    61     printf("%.2f
    ", res);
    62 
    63 }
    64 int main() {
    65     //freopen("test.in", "r", stdin);
    66     //freopen("test.out", "w", stdout);
    67     solve();
    68     return 0;
    69 }
    View Code

    也是直接过。

    3. 下载管理软件,读题,主要是:任何下载的时候带宽都是满的,但是并行度个数有限制,然后我就想:直接模拟吧,按结束时间加入set进行模型,调了一个小时才过了33%。后来听师兄讲解,就是所有的任务加起来除以总带宽,那个并行度属于干扰项,我很惊讶,原来还可以这样!

    写出来的有效代码不到5行,而我字节写的模拟,洋洋洒洒快到100行了。衰!

     1 /*
     2 ID: y1197771
     3 PROG: test
     4 LANG: C++
     5 */
     6 #include<bits/stdc++.h>
     7 #define pb push_back
     8 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
     9 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
    10 typedef long long ll;
    11 using namespace std;
    12 typedef pair<int, int> pii;
    13 const int maxn = 1e3 + 10;
    14 void solve() {
    15     int t, n, w;
    16     double s = 0;
    17     cin >> t >> n >> w;
    18     double task; int p;
    19     for (int i = 0; i < t; i++) {
    20         cin >> task >> p;
    21         s += task * (100 - p) / 100;
    22     }
    23     printf("%.2f
    ", s / w);
    24 }
    25 int main() {
    26     freopen("test.in", "r", stdin);
    27     //freopen("test.out", "w", stdout);
    28     solve();
    29     return 0;
    30 }
    View Code

    http://ideone.com/ZqRTBn

  • 相关阅读:
    javascript中的console.log有什么作用?
    在线js调试工具JSbin、jsFiddle
    mysql下的将多个字段名的值复制到另一个字段名中(批量更新数据)字符串拼接cancat实战例子
    处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]>
    checkbox的readonly不起作用的解决方案
    jquery-easyui combobox combogrid 级联不可编辑实例
    表格行的全选与单选
    表格与ckeckbox的全选与单选
    隐藏与显示铵钮
    判断字符是否包含有特殊字符
  • 原文地址:https://www.cnblogs.com/y119777/p/5987898.html
Copyright © 2020-2023  润新知