<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      10.17 NOIP 模擬賽 T1. 并非貪心

      思路

      考慮直接做是簡單的背包 \(\rm{dp}\)

      如果我們不想使用高精度, 就必須找到一種優化方案
      觀察以下柿子

      \[ \begin{gather*} & \sqrt[\sum_{i \in \mathbb{S}} b_i]{\prod_{j \in \mathbb{S}} a_j} \\ =& \prod_{j \in \mathbb{S}} a_j^{\frac{1}{b_j}} \end{gather*} \]

      這是我們 \(\rm{dp}\) 的形態, 我們要把他優化到不使用高精度的形式
      發現一個很兇的東西
      \(\ln (x^y) = y \ln x\)
      因此以上柿子可以被優化為

      \[ \begin{gather*} & \sqrt[\sum_{i \in \mathbb{S}} b_i]{\prod_{j \in \mathbb{S}} a_j} \\ =& \exp \left( \frac{1}{\sum_{i \in \mathbb{S}} b_i} \sum_{j \in \mathbb{S}} \ln a_j \right) \end{gather*} \]

      還能說啥啊, nb

      實現

      #include <iostream>
      #include <vector>
      #include <cmath>
      #include <algorithm>
      #include <cstdio>
      
      using namespace std;
      
      const long long MAXB = 8000;
      const long double INF = 1e18;
      
      int main() {
          // freopen("dp.in", "r", stdin);
          // freopen("dp.out", "w", stdout);
      
          long long n, l, r;
          scanf("%lld%lld%lld", &n, &l, &r);
          
          vector<long long> a(n), b(n);
          long long sum_b = 0;
          for (long long i = 0; i < n; i++) {
              scanf("%lld%lld", &a[i], &b[i]);
              sum_b += b[i];
          }
          
          // 限制總b和不超過r
          sum_b = min(sum_b, r);
          
          vector<long double> dp(sum_b + 1, -INF);
          dp[0] = 0.0;
          
          for (long long i = 0; i < n; i++) {
              for (long long j = sum_b; j >= b[i]; j--) {
                  if (dp[j - b[i]] != -INF) {
                      dp[j] = max(dp[j], dp[j - b[i]] + log(a[i]));
                  }
              }
          }
          
          long double ans = -INF;
          for (long long i = l; i <= r; i++) {
              if (dp[i] != -INF) {
                  long double val = exp((1.0/i)*dp[i]);
                  ans = max(ans, val);
              }
          }
          
          printf("%.7Lf\n", ans);
          
          return 0;
      }
      

      總結

      \(\ln\)\(\exp\) 可以方便的將底數取 \(\ln\)

      posted @ 2025-10-17 16:46  Yorg  閱讀(7)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费人成网上在线观看网址| 国产在线视频一区二区三区| 日本精品极品视频在线| 成人午夜免费无码视频在线观看 | 翘臀少妇被扒开屁股日出水爆乳| 乱码精品一区二区亚洲区| 熟女人妻视频| 欧洲精品色在线观看| 99久9在线视频 | 传媒| 大陆熟妇丰满多毛xxxⅹ| 亚洲国产精品午夜福利| 国产99视频精品免费视频6| 色狠狠综合天天综合综合| 少妇激情av一区二区三区| 亚洲精品一区二区妖精| 综合亚洲网| 99中文字幕国产精品| 日韩精品无码免费专区午夜不卡| 亚洲欧洲精品一区二区| 国产成人无码aa精品一区| 亚洲欧美在线一区中文字幕| 人人妻人人玩人人澡人人爽| 涪陵区| 男人和女人高潮做爰视频| 亚洲avav天堂av在线网爱情| 区。| 四虎国产精品永久地址99| 日本边吃奶边摸边做在线视频 | 精品九九人人做人人爱| 亚洲av精彩一区二区| 草裙社区精品视频播放| 精品无码人妻| 人妻系列无码专区无码中出| 秋霞人妻无码中文字幕| 亚洲 一区二区 在线| 色窝窝免费播放视频在线| 日本激情久久精品人妻热| 人妻少妇不满足中文字幕| 国产精品青草久久久久福利99| 亚洲精品成人片在线观看精品字幕 | 国产亚洲精品AA片在线播放天|