• 2019 HDOJ Multi-University Training Contest Stage 7(杭电多校)


    应该是最毒瘤的一场多校。

    题目链接:http://acm.hdu.edu.cn/contests/contest_show.php?cid=854


    A:

    F:

    有n个问题,每道问题的分数取值范围是[0,m],所有分数加起来等于m。每道题知识点无关联,若要解决分数为x的题,则需复习对应知识点x+1个小时。问:解决k道题所需最少复习时间。

    可以反向思考这个问题:若出卷老师知道学生每道题的复习时间,怎样出卷才能使得学生做不出k题。

    很简单,可以让学生做出复习时间最多的k-1道题,然后令学生复习得最少的m-k+1道题都做不出来,让做不出来的题的难度等于学生的复习时间即可。

    回到学生视角,要防止这种情况发生,就应该让复习得最少的m-k+1道题的总复习时间大于m,保证这m-k+1道题中一定能做出一题。

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define dou double
     6 #define pb emplace_back
     7 #define mp make_pair
     8 #define sot(a,b) sort(a+1,a+1+b)
     9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    10 #define rep0(i,a,b) for(int i=a;i<b;++i)
    11 #define eps 1e-8
    12 #define int_inf 0x3f3f3f3f
    13 #define ll_inf 0x7f7f7f7f7f7f7f7f
    14 #define lson (curpos<<1)
    15 #define rson (curpos<<1|1)
    16 /* namespace */
    17 using namespace std;
    18 /* header end */
    19 
    20 int main() {
    21     int t; scanf("%d", &t);
    22     while (t--) {
    23         ll n, m, k; scanf("%lld%lld%lld", &n, &m, &k);
    24         // m/(n-k+1)+1是前k-1题复习时间,m+1是第k题复习时间
    25         printf("%lld
    ", (m / (n - k + 1) + 1) * (k - 1) + m + 1);
    26     }
    27     return 0;
    28 }
    View Code

    J:

    一个游戏角色要升级,总共有n级,最低级为1级。给定相邻等级升级成功的概率、代价和失败后变成的等级。给出q次查询,每次查询给定两个等级p和q,输出从p级升到q级的期望代价。

    显然满足前缀和性质,递推期望即可。

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define dou double
     6 #define pb emplace_back
     7 #define mp make_pair
     8 #define sot(a,b) sort(a+1,a+1+b)
     9 #define rep1(currLevel,a,b) for(int currLevel=a;currLevel<=b;++currLevel)
    10 #define rep0(currLevel,a,b) for(int currLevel=a;currLevel<b;++currLevel)
    11 #define eps 1e-8
    12 #define int_inf 0x3f3f3f3f
    13 #define ll_inf 0x7f7f7f7f7f7f7f7f
    14 #define lson (curpos<<1)
    15 #define rson (curpos<<1|1)
    16 /* namespace */
    17 using namespace std;
    18 /* header end */
    19 
    20 const int mod = 1e9 + 7, maxn = 1e6 + 10;
    21 int sum[maxn];
    22 
    23 int qp(ll a, ll n) {
    24     ll ret = 1;
    25     while (n) {
    26         if (n & 1) ret = ret * a % mod;
    27         a = a * a % mod;
    28         n >>= 1;
    29     }
    30     return ret;
    31 }
    32 
    33 int main() {
    34     int t; scanf("%d", &t);
    35     while (t--) {
    36         int n, q; scanf("%d%d", &n, &q);
    37         rep1(currLevel, 1, n) {
    38             int p, q, lostLevel, cost; scanf("%d%d%d%d", &p, &q, &lostLevel, &cost);
    39             ll preCost = (sum[currLevel - 1] - sum[lostLevel - 1] + mod) % mod;
    40             sum[currLevel] = (preCost + cost) % mod * q % mod * qp(p, mod - 2) % mod; // (preCost+addCost)/(p/q)
    41             sum[currLevel] = (sum[currLevel] - preCost + mod) % mod; // -preCost
    42             sum[currLevel] = (sum[currLevel - 1] + sum[currLevel]) % mod; // 重新计算前缀和
    43         }
    44         while (q--) {
    45             int l, r; scanf("%d%d", &l, &r);
    46             printf("%d
    ", (sum[r - 1] - sum[l - 1] + mod) % mod);
    47         }
    48     }
    49     return 0;
    50 }
    View Code
  • 相关阅读:
    php 1011
    php 1008
    php 1012
    php 1007
    解决由于找不到msvcp120.dll无法继续执行代码的问题
    给计算机专业学生的7个建议 来自书圈
    使用sshwifty搭建WebSHH服务器
    Springboot使用Swagger
    SpringBoot 启动时自动执行代码的几种方式
    Docker运行镜像报错处理 docker0: iptables: No chain/target/match by that name.
  • 原文地址:https://www.cnblogs.com/JHSeng/p/11341696.html
Copyright © 2020-2023  润新知