zoukankan      html  css  js  c++  java
  • Codeforces Round #412 div2 ABCD

    A 按rank给出每个人的赛前分数和赛后分数 如果一个人打败了比他分数高的人 他的分数必然升高 问比赛rated吗 如果一个人的分数改变了肯定rate 如果全都没改的话 也可能是rated 这时候check分数是否递增

    B 给出一个伪代码 用你的分数放进去可以生成25个rank 给出你的rank 你的现在分数x 你的最低分数y 问你hack(成功 +100 失败 - 50)成功最少多少次能够让自己的分数变化后放入这个伪代码生成的25个rank里面包含你的rank

    先枚举只失败的 直到不能再失败

    如果不行就枚举 成功次数 (每次都尝试失败一次)

    C 你现在提交了b次 对了a次 你期望AC/SUBMIT比值是p/q 问最少提交多少次可以 或者确定不可以

    让这个比值翻倍 二分翻的倍数并最小化  check 条件是 当b -> ans * q  可否实现 a -> p * ans

    D 一场比赛有五道题 每道题的分数由一个通过人数和比赛总人数的比值决定 每个人在一道题上的分数由通过时间和题目总分决定 有n个人比赛 1想通过建小号的方式打败2 问最少建多少个或者确定不可以

    可以看到比值最小是1/32 最大是1/2 并且n<=120 所以可以想到如果想并且有能力调控题目分数的话 需要建的小号不会太多 所以直接枚举check

    需要注意的是 如果我想让A题多几个AC人数来刷低题目分数 这些人将被视为参赛者 会影响其余的题目的分数

    没有看明白这个条件的我敲了一天的暴力搜索每题的总分。。打出一万个BUG。。可能已经是一条咸鱼了。。

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<map>
    #include<string>
    #include<vector>
    #include<queue>
    #include<iostream>
    using namespace std ;
    #define L long long
    #define pb push_back
    
    int n ;
    int a[130][10] ;
    int b[10] ;
    int m ;
    
    int fs[8] = {0,500,1000,1500,2000,2500,3000} ;
    int js[8] = {0,1,2,4,8,16,32} ;
    
    int zh(int x , int nn) {
        if(x * 32 <= nn) return 6 ;
        if(x * 16 <= nn) return 5 ;
        if(x * 8 <= nn) return 4 ;
        if(x * 4 <= nn) return 3 ;
        if(x * 2 <= nn) return 2 ;
        return 1 ;
    }
    
    int vol[10][10] ;
    
    int lv[20] ;
    int c[20] ;
    int d[20] ;
    
    int main () {
        cin >> n ;
        memset(b, 0 , sizeof(b)) ;
        for(int i = 1 ; i <= n ; i ++ ) {
            for(int j = 1 ; j <= 5 ; j ++ ) {
                cin >> a[i][j] ;
                if(a[i][j] != -1) {
                    b[j] ++ ;
                }
            }
        }
    
        for(int ans = 0 ; ans <= 3200000 ; ans ++ ) {
            int df1 = 0 , df2 = 0 ;
            for(int i = 1 ; i <= 5 ; i ++ ) {
                d[i] = b[i] ;
                if(a[1][i] == -1) continue ;
                if(a[2][i] == -1) continue ;
                if(a[1][i] > a[2][i]) {
                    d[i] = b[i] + ans ;
                }
            }
            for(int i = 1 ; i <= 5 ; i ++ ) {
                if(a[1][i] != -1) df1 += fs[zh(d[i] , n + ans)] / 250 * (250 - a[1][i]) ;
                if(a[2][i] != -1) df2 += fs[zh(d[i] , n + ans)] / 250 * (250 - a[2][i]) ;
            }
            if(df1 > df2) {
                printf("%d
    " , ans) ;
                return 0;
            }
            if(ans == 3200000) {
                printf("-1
    ") ;
            }
        }
    }
    
  • 相关阅读:
    web 学习资源整理
    CodeSmith 学习资料收集
    常用 T_SQL 语句
    SQL Server 2000查询分析器自定义查询快捷键
    插入标识列 identity_insert
    c# 上传FTP文件
    (.Net 3.5Sp1)WebForm使用System.Web.Routing
    SPQuery.ViewAttributes
    ChatterBot之linux下安装mongodb 02
    linux端口开放指定端口的两种方法
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/6891318.html
Copyright © 2011-2022 走看看