zoukankan      html  css  js  c++  java
  • Practice Round China New Grad Test 2014 报告

      今天有Google of Greater China Test for New Grads of 2014的练习赛,主要是为了过几天的校园招聘测试做练习用的,帮助熟悉平台,题目嘛,个人觉得除了A题外,B和C就是练习基本编程的。

    A题:Bad Horse二分图判定问题。话说昨晚刚简单看了一下代码,写都没写过,只好翻书抄代码了...还是有点幸运的,如果昨天没看,这个题估计就要留白了...感觉还有好多东西没学啊...

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <vector>
     5 #include <string>
     6 #include <map>
     7 using namespace std;
     8 #define MAXN 100*2+10
     9 
    10 map<string, int> node;
    11 vector<int> G[MAXN];
    12 int color[MAXN];
    13 
    14 void create_node(string s)
    15 {
    16     if (!node.count(s))
    17     {
    18         int t = node.size() + 1;
    19         node[s] = t;
    20     }
    21 }
    22 
    23 bool bipartite(int u)
    24 {
    25     for (int i = 0; i < G[u].size(); i++)
    26     {
    27         int v = G[u][i];
    28         if (color[v] == color[u])  return false;
    29         if (!color[v])
    30         {
    31             color[v] = 3 - color[u];
    32             if (!bipartite(v))  return false;
    33         }
    34     }
    35     return true;
    36 }
    37 int main()
    38 {
    39 #ifdef LOCAL
    40     //freopen("in", "r", stdin);
    41     freopen("A-small-2-attempt0.in", "r", stdin);
    42     freopen("A-small-2.out", "w", stdout);
    43 #endif
    44     int T;
    45     scanf("%d", &T);
    46     for (int kase = 1; kase <= T; kase++)
    47     {
    48         int n;
    49         scanf("%d", &n);
    50         node.clear();
    51         for (int i = 0; i < MAXN; i++)
    52             G[i].clear();
    53         for (int i = 0; i < n; i++)
    54         {
    55             string name1, name2;
    56             cin >> name1 >> name2;
    57             create_node(name1);
    58             create_node(name2);
    59             G[node[name1]].push_back(node[name2]);
    60             G[node[name2]].push_back(node[name1]);
    61         }
    62         memset(color, 0, sizeof(color));
    63         color[1] = 1;
    64         if (bipartite(1))  printf("Case #%d: Yes
    ", kase);
    65         else  printf("Case #%d: No
    ", kase);
    66     }
    67     return 0;
    68 }
    View Code

      B题:Captain Hammer

      关于抛物线的,给一物体的初速度和要抛的距离,计算抛出时与水平线的最小夹角。直接套公式。

     1 #include <cstdio>
     2 #include <cmath>
     3 #define PI 3.1415926
     4 
     5 int main()
     6 {
     7 #ifdef LOCAL
     8     //freopen("in", "r", stdin);
     9     freopen("B-small-attempt0.in", "r", stdin);
    10     freopen("B-small.out", "w", stdout);
    11 #endif
    12     int T;
    13     scanf("%d", &T);
    14     for (int kase = 1; kase <= T; kase++)
    15     {
    16         int v, d;
    17         scanf("%d%d", &v, &d);
    18         double t = (d*9.8) / (2*v*v);
    19         double angle = asin(2*t);
    20         double ans = angle / PI * 180 / 2;
    21         printf("Case #%d: %.7lf
    ",kase, ans);
    22     }
    23     return 0;
    24 }
    View Code

      C题:Moist

      给n个字符串,对第i个字符串作如下判断:该字符串前面(包括本身)是否有序,如果无序,对前i个字符串排序。最后统计排序的次数。

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <string>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 string str[110];
     9 
    10 int main()
    11 {
    12 #ifdef LOCAL
    13     //freopen("in", "r", stdin);
    14     freopen("C-small-2-attempt0.in", "r", stdin);
    15     freopen("C-small-2.out", "w", stdout);
    16 #endif
    17     int T;
    18     scanf("%d", &T);
    19     for (int kase = 1; kase <= T; kase++)
    20     {
    21         int n;
    22         scanf("%d", &n);
    23         getchar();
    24         for (int i = 0; i < n; i++)
    25             getline(cin, str[i]);
    26         int cnt = 0;
    27         for (int i = 1; i < n; i++)
    28             if (str[i] < str[i-1])
    29             {
    30                 cnt++;
    31                 sort(str, str+i+1);
    32             }
    33         printf("Case #%d: %d
    ", kase, cnt);
    34     }
    35     return 0;
    36 }
    37             
    View Code

      做第一题的时候感觉时间有些紧张,因为要在四分钟内改一下文件的重定向还要提交(练习都是Small Input),后来就把东西写好了再下载输入文件^_^。其实正常时间还是足够的,不过还是有一次不小心写错文件名,结果得到一个空的输出文件,只能眼睁睁地看着倒计时变为0...

  • 相关阅读:
    LeetCode OJ-- 二战 Palindrome Number
    Cracking-- 17.13 将二叉树转换成双向链表
    Cracking-- 4.7 在一颗二叉树中找两个节点的第一个共同祖先
    priority_queue 示例
    heap c++ 操作 大顶堆、小顶堆
    【转】当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
    Cracking-- 1.1 判断字符串中是否有重复字符
    如何取得SharePoint Timer Job的历史成功数和失败数,并按照日期计算排列
    SharePoint document 右键菜单和【...】菜单不一致的解决办法
    SharePoint Search 分词(WordBreaker)
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3321650.html
Copyright © 2011-2022 走看看