zoukankan      html  css  js  c++  java
  • PAT 1079

    傻逼题...

    PAT的出题我一直很想吐槽,数据之类的不是很灵,该给过不过,不该过随意过。

    这道题需要全员double才能过,需要注意的是如果在float后面加上f也是过不了的... 变量都是double接着了还是过不了是为什么,感觉好奇怪,有可能是二进制表达的关系,大数据有凑巧是0.5或者是0.25的所以改成double但是没改0.01后面的f结果就过了的...

    简单BFS

     1 #include <vector>
     2 #include <iostream>
     3 #include <queue>
     4 #include <iomanip>
     5 
     6 using namespace std;
     7 
     8 double bfs(const vector<vector<int> > &graph, const double p, const double r){
     9     double p_fac = (double)(1.0 + r * 0.01);
    10     double cur_price = p;
    11     double res = 0.0f;
    12 
    13     queue<int> cur_level;
    14     cur_level.push(0);
    15     while (!cur_level.empty()){
    16         queue<int> next_level;
    17 
    18         while (!cur_level.empty()){
    19             int cur_idx = cur_level.front();
    20             cur_level.pop();
    21 
    22             int size = graph[cur_idx][0];
    23             if (size == 0){
    24                 res += graph[cur_idx][1] * cur_price;
    25             } else {
    26                 for (int i = 1; i < size + 1; i++){
    27                     next_level.push(graph[cur_idx][i]);
    28                 }
    29             }
    30         }
    31 
    32         cur_price *= p_fac;
    33         cur_level = next_level;
    34     }
    35 
    36     return res;
    37 }
    38 
    39 int main(){
    40     int N;
    41     double P, r;
    42 
    43     cin >> N >> P >> r;
    44 
    45     vector<vector<int> > graph(N, vector<int>());
    46     for (int i = 0; i < N; i++){
    47         int cnt, num;
    48         cin >> cnt;
    49         graph[i].push_back(cnt);
    50 
    51         if (cnt == 0){
    52             cin >> num;
    53             graph[i].push_back(num);
    54         } else {
    55             for (int j = 0; j < cnt; j++){
    56                 cin >> num;
    57                 graph[i].push_back(num);
    58             }
    59         }
    60     }
    61 
    62     double res = bfs(graph, P, r);
    63 
    64     cout << fixed << setprecision(1) << res << endl;
    65 
    66     return 0;
    67 }
  • 相关阅读:
    ArcGIS Server JavaScript API 各命名空间的含义【转】
    python datetime 转timestamp
    python re 里面match 和search的区别
    django 两种创建模型实例的方法
    delete old data in elasticsearch
    iptables做nat网络地址转换
    zabbix trapper items
    pssh远程执行命令的利器
    gentoo 下安装lamp
    xshell密钥登录服务器
  • 原文地址:https://www.cnblogs.com/EpisodeXI/p/4082260.html
Copyright © 2011-2022 走看看