• SRM481


    250pt

    题意:上帝知道一个“先有鸡还是先有蛋”的答案,上帝和N<=10^6个人说了答案,不过有x个人故意告诉了他们错误的答案,然后有一个人问了这N个人问题的答案,有M个人说先有鸡,N-M个人说现有蛋,已知其中有y个人故意说了上帝告诉他们的相反的答案。现在给N M x y,问是否能推测出答案,或者多解,或者无解。

    思路:因为N很小,直接枚举那些人说谎,然后判定即可。

    500pt

    题意:有N<=50个任务,每个任务有运行时间和用户,机器同一个时间只能跑一个任务,一个任务运行中不能中断,每个用户可能有多个任务,每个用户的等待时间为他的最后一个任务完成前等待的时间。电脑安排任务始终保证所有用户的平均等待时间最短,在这个条件下, 每个schedule都有同等的可能性。现在给你N个任务的信息,问每个任务期望的结束时间是多少。

    思路:很明显,对于某个人的任务,那么一定是连着运行对于结果最优。

            那么那么如果a与b的任务运行时间相同,那么他们两个是可以交换的。

            同时,对于同一user的任务间,顺序任意。接下去便是统计了。注意任务是等概率的就好做了。

    code:

     1 // BEGIN CUT HERE
     2 /*
     3 
     4 */
     5 // END CUT HERE
     6 #line 7 "BatchSystemRoulette.cpp"
     7 #include <cstdlib>
     8 #include <cctype>
     9 #include <cstring>
    10 #include <cstdio>
    11 #include <cmath>
    12 #include <algorithm>
    13 #include <vector>
    14 #include <string>
    15 #include <iostream>
    16 #include <sstream>
    17 #include <map>
    18 #include <set>
    19 #include <queue>
    20 #include <stack>
    21 #include <fstream>
    22 #include <numeric>
    23 #include <iomanip>
    24 #include <bitset>
    25 #include <list>
    26 #include <stdexcept>
    27 #include <functional>
    28 #include <utility>
    29 #include <ctime>
    30 using namespace std;
    31 
    32 #define PB push_back
    33 #define MP make_pair
    34 
    35 typedef vector<int> VI;
    36 typedef vector<string> VS;
    37 typedef vector<double> VD;
    38 typedef long long LL;
    39 typedef pair<int, int> PII;
    40 struct oo{
    41        int val, id;
    42        string usr;
    43        oo(){}
    44        oo(int _val, int _id, string _usr): val(_val), id(_id), usr(_usr){}
    45        bool operator<(const oo &b)const{
    46              return usr < b.usr || (usr == b.usr && val < b.val);
    47        }
    48 };
    49 int P[120], S[120], last[120];
    50 long long sum[120];
    51 class BatchSystemRoulette
    52 {
    53         public:
    54         vector <double> expectedFinishTimes(vector <int> dur, vector <string> user)
    55         {
    56                 vector<oo> v;
    57                 v.clear();
    58                 for (int i = 0; i < dur.size(); ++i)
    59                    v.push_back(oo(dur[i], i, user[i]));
    60                 sort(v.begin(), v.end());
    61                 int n = v.size();
    62                 memset(sum, 0, sizeof(sum));
    63                 memset(P, 0, sizeof(P));
    64                 int m = 1;
    65                 sum[1] = v[0].val;
    66                 P[0] = 1;
    67                 for (int i = 1; i < n; ++i){
    68                     if (v[i].usr != v[i-1].usr) m++;
    69                     sum[m] += v[i].val;
    70                     P[i] = m;
    71                 }
    72                 last[m] = n - 1;
    73                 memset(S, 0, sizeof(S));
    74                 for (int i = 1; i <= m; ++i)
    75                     for (int j = 1; j <= m; ++j)
    76                         if (sum[i] == sum[j]) S[i]++;
    77                 vector<double> ans(n);
    78                 for (int i = 0; i < n; ++i){
    79                      double ssum = 0;
    80                      for (int j = 1; j <= m; ++j)
    81                          if (sum[P[i]] > sum[j]) ssum += sum[j];
    82                      double tmp = (S[P[i]] - 1.0) / 2.0 * sum[P[i]];
    83                      tmp += 0.5 * (sum[P[i]] - v[i].val) + v[i].val;
    84                      ans[v[i].id] = tmp + ssum;
    85                 }
    86                 return ans;
    87         }
    88 };
    View Code
  • 相关阅读:
    英黑客侵入Zynga系统窃得价值1200万美元筹码 狼人:
    瑞星发布2010企业安全报告 九成国内企业曾被入侵 狼人:
    赛门铁克大中国区总裁吴锡源:云安全是一项系统工程 狼人:
    频遭攻击 索尼无奈关闭多国网站 狼人:
    Pwn2Own黑客大赛首日:Safari、IE8被攻破 狼人:
    疯子的研究:瘫痪整个互联网绝非天方夜谭 狼人:
    Google收购安全分析软件厂商Zynamics 狼人:
    RSA大会:黑客正在觊觎个人用户而非网络 狼人:
    从索尼泄密看云计算安全 狼人:
    RSA公布被攻击内幕:钓鱼邮件惹祸 狼人:
  • 原文地址:https://www.cnblogs.com/yzcstc/p/3627121.html
Copyright © 2020-2023  润新知