2021CCPC河南省省赛

2023-11-04

1001 收集金币

题目链接

//dp[i][0]表示前i个事件都没有选择使用技能
//dp[i][1]表示前i个事件已经选择使用技能了
int dp[N][2];
void solve()
{
    memset(dp, 0, sizeof dp);
    int n; cin >> n;
    for (int i = 1; i <= n; i ++ )
    {
        string op; int val;
        cin >> op >> val;
        if (op[0] == 'G')//对于get不管有没有使用技能, 金币数都要增加
        {
            dp[i][0] = dp[i - 1][0] + val;
            dp[i][1] = dp[i - 1][1] + val;
        }
        else
        {
            //如果前i个事件都没有选择使用技能
            dp[i][0] = max(dp[i - 1][0] - val, 0);
            //前i-1个事件没有选择使用技能,但是当前选择使用
            //前i-1个事件已经使用过技能,当前不可用
            //比较两种情况哪一种金币数最多
            dp[i][1] = max(dp[i - 1][0], max(dp[i - 1][1] - val, 0));
        }
    }
    cout << max(dp[n][0], dp[n][1]) << "\n";
}
int main()
{

#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif

    IOS;
    int T; cin >> T;
    while (T -- )
    {
        solve();
    }
    return 0;
}

1002 使用技能

题目链接

本题是一个组合数学和期望问题
首先得知道期望如何来求, 期 望 = 所 有 情 况 的 伤 害 和 所 有 情 况 数 期望=\frac{所有情况的伤害和}{所有情况数} =
所有情况不难求出,就是n个位置从m个中选,每一个位置有m中选法,那么就有 m n m^{n} mn
关键就是求所有情况的伤害和
枚举每一种技能释放的次数x,n个技能栏有x个是这一种技能,即 C n x C_{n}^{x} Cnx,那么其他技能栏放的技能可能情况为 ( m − 1 ) n − x (m-1)^{n-x} (m1)nx
根据题意这一种技能造成的伤害为 x 2 x^{2} x2,而且选择每一种技能的概率是一样的,所以m种技能选择x次所造成的伤害就是 C n x ⋅ m ⋅ ( m − 1 ) n − x ⋅ x 2 C_{n}^{x}\cdot m\cdot (m-1)^{n-x}\cdot x^{2} Cnxm(m1)nxx2
那么所有的伤害综合就是 ∑ x = 1 n C n x ⋅ m ⋅ ( m − 1 ) n − x ⋅ x 2 \sum_{x=1}^{n}C_{n}^{x}\cdot m\cdot (m-1)^{n-x}\cdot x^{2} x=1nCnxm(m1)nxx2

int n, m;
LL f[N], inf[N];
LL ksm(LL a, LL p)
{
    LL res = 1;
    while (p)
    {
        if (p & 1) res = res * a % mod;
        p >>= 1;
        a = a * a % mod;
    }
    return res;
}
void init()
{
    f[0] = inf[0] = 1;
    for (int i = 1; i <= N; i ++ ) 
        f[i] = f[i - 1] * i % mod;
    inf[N] = ksm(f[N], mod - 2);
    for (int i = N - 1; i >= 1; i -- )
        inf[i] = inf[i + 1] * (i + 1) % mod;
}
LL C(int a, int b)
{
    return f[a] * inf[b] % mod * inf[a - b] % mod;
}
void solve()
{
    scanf("%d%d", &n, &m);
    
    LL ans = 0;
    for (int i = 1; i <= n; i ++ )
        ans = (ans + m * C(n, i) % mod * ksm(m - 1, n - i) % mod * i % mod * i % mod) % mod; 
    ans = ans * ksm(ksm(m, n), mod - 2) % mod; 
    cout << ans << "\n";
}
int main()
{

#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
    init();
    int T; scanf("%d", &T);
    while (T -- ) solve();
    
    return 0;
}

1003 欢度佳节

题目链接

枚举 2 17 2^{17} 217种占领状态, 然后dfs判断是否是联通块

int val[18], cnt[18], n, ans, sum;
int g[6][6];
PII p[18];
int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
void dfs(int x, int y)
{
    sum ++;
    for (int i = 0; i < 4; i ++ )
    {
        int nx = dx[i] + x, ny = dy[i] + y;
        if (nx < 1 || nx > 5 || ny < 1 || ny > 5 || g[nx][ny] == -1) continue;
        g[nx][ny] = -1;
        dfs(nx, ny);
    }
}
void init()
{
    p[0] = {1, 1}, p[1] = {1, 2}, p[2] = {1, 4}, p[3] = {1, 5};
    p[4] = {2, 2}, p[5] = {2, 3}, p[6] = {2, 4}, p[7] = {3, 2};
    p[8] = {3, 3}, p[9] = {3, 4}, p[10] = {4, 2}, p[11] = {4, 3};
    p[12] = {4, 4}, p[13] = {5, 1}, p[14] = {5, 2}, p[15] = {5, 4}, p[16] = {5, 5};
}
void solve()
{
    for (int i = 0; i < 17; i ++)
    {
        scanf("%d", &val[i]);
        cnt[i] = (val[i] - 1) / 6 + 1;
    }
    scanf("%d", &n);
    ans = 0;
    for (int i = 0; i < 1 << 17; i ++ )
    {
        sum = 0;
        bool flag = true;
        if (!(i >> 13 & 1))
        {
            flag = false;
            continue;
        }

        vector<int> v;
        memset(g, -1, sizeof g);

        for (int j = 0; j < 17; j ++ )
        {
            if (i >> j & 1)
            {
                g[p[j].fi][p[j].se] = j;
                v.push_back(j);
            } 
        }
        if (flag)
        {
            g[p[13].fi][p[13].se] = -1;
            dfs(p[13].fi, p[13].se);
            if (sum == v.size())
            {
                int tmp = 0;
                for (auto it : v)
                    tmp += cnt[it];
                if (tmp <= n) ans = max(ans, sum);
            } 
        }
    }
    printf("%d\n", ans);
}
int main()
{
    init();
    int T; scanf("%d", &T);
    while (T -- ) solve();

    return 0;
}

1005 闯关游戏

题目链接

初看是分组背包问题,但实际上是由限制的
每一关必须选择一个物品,否则就结束游戏
所以每次背包容量的下界就是前几关选择的过的物品容量

int dp[N];
void solve()
{
    memset(dp, 0 , sizeof dp);
    int n, h; scanf("%d%d", &n, &h);
    int sum = 0, ans = 0;
    bool f = false;
    //每一关必须选一个,要么就结束
    for (int i = 1; i <= n; i ++ )
    {
        int a, b, c, d;
        scanf("%d%d%d%d", &a, &b, &c, &d);
        
        if (f) continue;
        int last = sum;
        sum += min(a, c);
        if (sum > h)
        {
            f = true;
            continue;
        }
        for (int j = h; j >= sum; j -- )
        {
            bool flag = false;
            
            if (j - a >= last)
            {
                dp[j] = dp[j - a] + b;
                ans = max(ans, dp[j]);
                flag = true;
            }
            if (j - c >= last)
            {
                if (!flag) dp[j] = dp[j - c] + d;
                else dp[j] = max(dp[j], dp[j - c] + d);
                ans = max(ans, dp[j]);
            }
        }

    }
    printf("%d\n", ans);
}
int main()
{
    int T; scanf("%d", &T);
    while (T -- ) solve();    

    return 0;
}

1010 小凯的书架

题目链接

题目说数据随机生成,直接暴力即可,暴力代码就不写了。如果数据不是随机生成的貌似要用主席树+二分(不会)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021CCPC河南省省赛 的相关文章

  • qt实现9×9数独游戏

    qt实现的数独小游戏 资源有可下载直接跑的exe enigma已经打包好 源码可私信 部分代码 include widget h include ui widget h include form h include
  • python中request请求库与BeautifulSoup解析库的用法

    python中request请求库与BeautifulSoup解析库的用法 request 安装 打开cmd窗口 检查python环境 需要python3 7版本及以上 然后输入 下载requests库 pip install reques

随机推荐

  • element中使用v-if指令导致表单出现自动验证的问题

    当使用了element中的表单验证的时候 需注意是否在同一个标签中使用了 v if的指令 当时使用了v if时 切换显示效果时 表单出现了自动验证 解决办法 使用v show代替 在页面元素不多的话使用v show代替即可解决表单自动验证的
  • VS2017 无法连接到Web服务器“IIS Express”终极解决方案

    VS2017 无法连接到Web服务器 IIS Express 终极解决方案 今天日了gou了 一大早打开VS2017的时候出现无法连接到Web服务器 IIS Express 的错误 然后必应了一下 再谷歌了一下找到的解决方法也都千篇一律 奈
  • 框架分析(4)-Spring

    框架分析 4 Spring 专栏介绍 Spring 核心特点 控制反转 IoC 面向切面编程 AOP 组件化 集成 简化开发 总结 优缺点 优点 高度可扩展 控制反转 IoC 面向切面编程 AOP 集成支持 轻量级 测试友好 社区活跃 缺点
  • props和state的区别

    区别 1 props是传递给组件的 类似于函数的形参 而state是在组件内部被组件自己管理的 类似于在一个函数内声明的变量 2 props是不可以被修改的 state是多变的 可被修改的 开发react组件 最常用到的两个引起组件渲染的可
  • springboot 日志配置

    logback xml与logback spring xml 配置文件的加载顺序 logback xml gt application properties gt logback spring xml 如果同时存在logback xml和l
  • C#字符串数值前加0将1转化成01

    定义两个数值字符串 string str1 1 string str2 01 在我们的主观感受里这两个在进行数值比较时都是1 应该是等价的 但进行字符比对时则不尽然 转化处理 str1 Convert ToDouble str1 ToStr
  • oracle下载页面改版后的 JDK 下载、安装及其环境配置

    oracle下载页面改版后的 JDK 下载 安装及其环境配置 时间 2020 06 10 下载链接 https www oracle com java technologies javase downloads html 变量名 JAVA
  • Onnx推理框架

    Onnx推理框架 ONNX 即 Open Neural Network Exchange 当我们使用Pytorch或者TensorFlow训练完成后 通常会将其模型转化为ONNX模型 ONNX模型一般用于中间部署阶段 然后再拿转化后的ONN
  • Java的快速排序代码

    public static void quickSort int arr int start int end if start lt end int partitionIndex partition arr start end quickS
  • ETL学习心得:探求数据仓库关键环节ETL的本质

    原文链接 http hi baidu com horsewhite blog item b167f81f6924ef0a304e15a0 html 做数据仓库系统 ETL是关键的一环 说大了 ETL是数据整合解决方案 说小了 就是倒数据的工
  • spring系统架构

    一 ioc控制反转 业务层每次都要new一个新的对象来实现对实例的创建 耦合度偏高 使用IOC的最终目的是解除多个类之间的耦合性 降低代码的耦合度 IOC核心概念 ioc容器 spring容器 负责对象的创建 初始化等一系列工作 在ioc容
  • 【读书笔记】游戏开发原理

    游戏开发原理读书笔记 Contents 游戏开发原理读书笔记 一 游戏与游戏设计 1 游戏类型与平台 1 1 类型和子类型 1 2 出品类型 1 3 平台 1 4 图形类型 1 5 交付方式 1 6 视角 2 video game剖析 2
  • Unity3D之ForceMode模式

    ForceMode是一种在物理引擎中使用的模式 用于模拟对象之间的力和运动 它常用于游戏开发 虚拟现实和机器人学等领域 ForceMode通常应用于刚体 Rigidbody 对象 通过施加力来影响物体的运动 它提供了不同的模式 可以根据需求
  • gitee使用教程--初学者【超易懂】

    将本地文件上传至git 1 进入gitee官网 注册并登录 工作台 Gitee com 2 点击右上角加号 选择 新建仓库 3 给自己的仓库添加名称与项目描述 4 创建好之后会看到自己的仓库地址 5 在本地新建一个文件夹用来存放需要上传到g
  • 常量和标识符

    常量 常量是固定值 在程序执行期间不会改变 这些固定的值 又叫做字面量 常量可以是任何的基本数据类型 可分为整型数字 浮点数字 字符 字符串和布尔值 常量就像是常规的变量 只不过常量的值在定义后不能进行修改 在 C 中 有两种简单的定义常量
  • 用户端APP自动化测试_L2

    目录 appium server 环境安装 capability 进阶用法 元素定位工具 高级定位技巧 xpath 定位 高级定位技巧 css 定位与原生定位 特殊控件 toast 识别 显式等待高级使用 高级控件交互方法 设备交互api
  • sass中变量引入html,Sass变量、嵌套_html/css_WEB-ITnose

    声明变量 定义变量的语法 Sass 的变量包括三个部分 声明变量的符号 变量名称 赋予变量的值 简单的示例 假设你的按钮颜色可以给其声明几个变量 1 brand primary darken 428bca 6 5 default 337ab
  • rust使用rhai和actix实现web接口

    初始化项目 cargo new acix rhai web 依赖 Cargo toml package name actix sim yt version 0 1 0 edition 2021 See more keys and their
  • flutter图片显示

    图片显示 本地图片显示 首先项目根目录下创建一个用于放置图片的文件夹 将要显示的图片放进去 如下图 然后在项目根目录的pubspec yaml文件中的assets下添加图片路径 如下图 在需要显示图片的地方使用Image asset 进行加
  • 2021CCPC河南省省赛

    文章目录 1001 收集金币 1002 使用技能 1003 欢度佳节 1005 闯关游戏 1010 小凯的书架 1001 收集金币 题目链接 dp i 0 表示前i个事件都没有选择使用技能 dp i 1 表示前i个事件已经选择使用技能了 i