牛客周赛 Round 18 解题报告 | 珂学家 | 分类讨论计数 + 状态DP


前言

alt


整体评价

前三题蛮简单的,T4是一个带状态的DP,这题如果用背包思路去解,不知道如何搞,感觉有点头痛。所以最后还是选择状态DP来求解。


欢迎关注

珂朵莉 牛客周赛专栏

珂朵莉 牛客小白月赛专栏


A. 游游的整数翻转

这题最好是用API来处理,这样更简洁且准确率高

import java.io.BufferedInputStream;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));String s = sc.next();int k = sc.nextInt();String s1 = s.substring(0, k), s2 = s.substring(k);Long r = Long.valueOf(new StringBuilder(s1).reverse().append(s2).toString());System.out.println(r);}}

B. 游游的排列统计

很有意思的一道题

这题甚至可以用状压DP求解

不过这边还是用暴力dfs, 其一,n<10, 其二,约束强,剪枝大

import java.io.BufferedInputStream;
import java.util.Scanner;public class Main {static boolean[] primes = new boolean[20];static {primes[2] = true;primes[3] = true;primes[5] = true;primes[7] = true;primes[11] = true;primes[13] = true;primes[17] = true;primes[19] = true;}static long dfs(int n, int u, int s) {if (s == ((1 << n) - 1)) {return 1;} else {long res = 0;for (int i = 1; i <= n; i++) {if (((1 << (i - 1)) & s) != 0) continue;if (primes[u + i]) continue;res += dfs(n, i, s | (1 << (i - 1)));}return res;}}public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));int n = sc.nextInt();long res = 0;for (int i = 1; i <= n; i++) {res += dfs(n, i, 1 << (i - 1));}System.out.println(res);}}

C. 游游刷题

同余分组计数

然后贪心分类讨论

  • r = 0, 则单独为一组 cnt(0)
  • 2 * r = k, 则为 cnt® / 2
  • r < k, 则 min(cnt®, cnt(k - r))

累加即可

import java.io.*;
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));int n = sc.nextInt();int k = sc.nextInt();Map<Integer, Integer> hash = new HashMap<>();for (int i = 0; i < n; i++) {int v = sc.nextInt();hash.merge(v % k, 1, Integer::sum);}long ans = 0;for (Map.Entry<Integer, Integer> kv : hash.entrySet()) {int k1 = kv.getKey(), v1 = kv.getValue();if (k1 == 0) {ans += v1;} else if (k1 * 2 == k){ans += v1 / 2;} else if (k1 * 2 < k) {int v2 = hash.getOrDefault(k - k1, 0);ans += Math.min(v2, v1);}}System.out.println(ans);}}

D. 游游买商品

状态DP

令 dp[i][j][s], i为前i个项,j表示使用了多少钱,s为0,1表示状态

0表示 第i项不购买,或者半价购买

1表示 第i项全价购买

那状态转移为

dp[i][j][0] = max(dp[i - 1][j][0], dp[i - 1][j][1], dp[i - 1][j - cost[i] / 2][1] + happy[i]);

dp[i][j][1] = max(dp[i - 1][j - cost[i]][0], dp[i - 1][j - cost[i]][1]) + happy[i];

最后的结果为 max(dp[n - 1][j][s]), 0<=j<=x, s=0,1

import java.io.BufferedInputStream;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));int n = sc.nextInt(), x = sc.nextInt();int[] cost = new int[n];long[] happy = new long[n];for (int i = 0; i < n; i++) {cost[i] = sc.nextInt();}for (int i = 0; i < n; i++) {happy[i] = sc.nextLong();}// *)long inf = Long.MIN_VALUE / 10;long[][][] opt = new long[n][x + 1][2];for (int i = 0; i < n; i++) {for (int j = 0; j <= x; j++) {opt[i][j][0] = opt[i][j][1] = inf;}}long ans = 0;if (cost[0] <= x) {opt[0][cost[0]][1] = happy[0];}opt[0][0][0] = 0;for (int i = 1; i < n; i++) {for (int j = 0; j <= x; j++) {opt[i][j][0] = Math.max(opt[i - 1][j][0], opt[i - 1][j][1]);if (j - cost[i] / 2 >= 0) {opt[i][j][0] = Math.max(opt[i][j][0], opt[i - 1][j - cost[i] / 2][1] + happy[i]);}if (j - cost[i] >= 0) {opt[i][j][1] = Math.max(opt[i - 1][j - cost[i]][0], opt[i - 1][j - cost[i]][1]) + happy[i];}}}for (int j = 0; j <= x; j++) {ans = Math.max(ans, opt[n - 1][j][0]);ans = Math.max(ans, opt[n - 1][j][1]);}System.out.println(ans);}}

写在最后

alt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/640116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTDETR最强结构图 | 包含模型整体结构图 | 全模块展开图 | AiFi模块展开图

文章目录 模型基础结构图AIFI模块结构图模型全模块展开图这一专栏为基于Ultralytics项目的RT-DETR魔改版本,与百度飞桨框架中的RT-DETR相比,除了框架外几乎没有区别。 本专栏旨在为那些渴望通过改进RT-DETR算法发表论文的同学提供全方位支持。每一篇文章都包含完整的改进代码…

chrome浏览器Extension插件开发框架对比和介绍

想开发chrome浏览器插件的话&#xff0c;如果没有一个好的框架支持&#xff0c;那么你只能手写js和html实现了&#xff0c;这样做的话&#xff0c;可能效率没有那么高&#xff0c;所以github上就有一些牛人来定制化了这些操作&#xff0c;将react和vue等开发框架快速集成&#…

【C++进阶07】哈希表and哈希桶

一、哈希概念 顺序结构以及平衡树中 元素关键码与存储位置没有对应关系 因此查找一个元素 必须经过关键码的多次比较 顺序查找时间复杂度为O(N) 平衡树中为树的高度&#xff0c;即O( l o g 2 N log_2 N log2​N) 搜索效率 搜索过程中元素的比较次数 理想的搜索方法&#xff1a…

测试不拘一格——掌握Pytest插件pytest-random-order

在测试领域&#xff0c;测试用例的执行顺序往往是一个重要的考虑因素。Pytest插件 pytest-random-order 提供了一种有趣且灵活的方式&#xff0c;让你的测试用例能够以随机顺序执行。本文将深入介绍 pytest-random-order 插件的基本用法和实际案例&#xff0c;助你摆脱固定的测…

ICCV2023 | MCD: Misalign, Contrast then Distill:重新思考VLP中的错位

论文标题: Misalign, Contrast then Distill: Rethinking Misalignments in Language-Image Pretraining 论文地址&#xff1a;ICCV 2023 Open Access Repository 代码&#xff1a;None LG AI Research 一、问题提出 SLIP发现&#xff0c;在CLIP中引入增强&#xff08;特别…

spring项目aop实现接口防止连续点击锁

aop实现 1&#xff0c;注解 注解用于接口方法、接口参数、和请求实体的属性上。 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** author dll*/ Ta…

MfgTool烧写工具

系列文章目录 MfgTool烧写工具 MfgTool烧写工具 系列文章目录一、MfgTool工具简介二、烧写NXP官方系统三、烧写自己的系统四、改造自己的烧写工具 一、MfgTool工具简介 1、mfgtool是NXP官方做的向I.MX系列烧写系统的软件&#xff0c;运行在windows下。可以烧写uboot.imx、zIma…

如何在Shopee深圳站点进行选品并提高销售潜力?

在如今的电商市场中&#xff0c;选品是卖家们提高销售业绩的重要环节。对于在Shopee深圳站点进行选品的卖家来说&#xff0c;了解市场需求、分析竞争对手、优化供应链管理、制定合理的价格策略以及精准的营销策略都是至关重要的。本文将为您介绍一些关键策略&#xff0c;帮助您…

php目录操作示例

目录 1.常用函数 2.列举当前目录列表 3.判断是否是文件夹 1.常用函数 函数名功能scandir 列出指定路径中的文件和目录 opendir 打开文件夹&#xff0c;返回操作资源 readdir读取文件夹资源closedir 关闭文件夹操作资源 is_dir 判断是否是文件夹 filetype 显示是文件夹还是文…

CSS 蜡烛效果

<template><view class="holder"><!-- 身子 --><view class="candle"><!-- 光源 --><view class="blinking-glow"></view><!-- 火星子 --><view class="thread"></view>…

transformer优化(二)-DETR 学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2005.12872.pdf 代码地址&#xff1a;https://github.com/bubbliiiing/detr-pytorch https://github.com/facebookresearch/detr 1.是什么&#xff1f; DETR&#xff08;Detection Transformer&#xff09;是一种基于Transforme…

新崛起的自动化神器Playwright

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

词语的魔力:语言在我们生活中的艺术与影响

Words That Move Mountains: The Art and Impact of Language in Our Lives 词语的魔力&#xff1a;语言在我们生活中的艺术与影响 Hello there, wonderful people! Today, I’d like to gab about the magical essence of language that’s more than just a chatty tool in o…

怎么去除水中的溴酸盐

语&#xff1a;近年来&#xff0c;我国矿泉水市场发展迅速&#xff0c;各种品牌和类型的矿泉水琳琅满目。然而&#xff0c;在众多矿泉水产品中&#xff0c;部分产品却存在溴酸盐超标的问题。本文将为您揭示矿泉水溴酸盐超标的危害&#xff0c;提醒消费者在选购矿泉水时务必谨慎…

redis的事件机制

文章目录 文件事件1. 文件事件处理器的构成2. I/O多路复用程序的实现3. 事件的类型4. 文件事件的处理器 时间事件1. 实现 事件的调度与执行 Redis服务器是一个事件驱动程序&#xff08;单Reactor单线程模型&#xff09;&#xff0c;服务器需要处理以下两类事件&#xff1a; 文件…

Kafka(三)【Broker 存储】

目录 前言 Kafka Broker 1、工作流程 1.1、Zookeeper 存储的 Kafka 信息 1.2、Kafka Broker 的总体工作流程 1.3、Broke 重要参数 2、Kafka 副本 2.1、副本基本信息 2.2、Keader 选举流程 2.3、Leader 和 Follower 的故障处理细节 Follower 故障 Leader 故障&#x…

2017年认证杯SPSSPRO杯数学建模A题(第一阶段)安全的后视镜全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 A题 安全的后视镜 原题再现&#xff1a; 汽车后视镜的视野对行车安全非常重要。一般来说&#xff0c;汽车的后视镜需要有良好的视野范围&#xff0c;以便驾驶员能够全面地了解车后方的道路情况。同时&#xff0c;后视镜也要使图像的畸变尽可能…

国产品牌GC6609与TM2209的参数分析,为什么适用于3D打印机,医疗器械等产品中

步进电机驱动的应用方案目前市场上大多选用国外品牌的电机驱动器&#xff0c;其中trinamic的TMC2208/2209在这一块的应用很广泛。但是由于市场越来越应激。&#xff0c;当前对于产品开发成本要求也越来越低&#xff0c;国产品地准出了相应的TMC2208/2209&#xff0c;因此trinam…

Vue3+ElementUI 多选框中复选框和名字点击方法效果分离

现在的需求为 比如我点击了Option A &#xff0c;触发点击Option A的方法&#xff0c;并且复选框不会取消勾选&#xff0c;分离的方法。 <el-checkbox-group v-model"mapWork.model_checkArray.value"> <div class"naipTypeDom" v-for"item …

国家急救日倡议活动暨120急救大课堂公益培训在京成功举办

2024年1月20日&#xff0c;由国家卫生健康委员会等多个相关部门指导&#xff0c;中国医院协会急救中心&#xff08;站&#xff09;分会主办&#xff0c;北京急救中心承办的“国家急救日”倡议活动暨急救科普大课堂公益培训系列活动&#xff0c;在全国范围内启动。 健康中国行动…