(AtCoder Beginner Contest 321)(退背包,二叉树)

A.直接暴力即可

​
#include<bits/stdc++.h>
using namespace std;
const int N =2e5+10;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m;void solve(){string s;cin>>s;for(int i=1;i<s.size();i++){int x=s[i-1]-'0';int y=s[i]-'0';if(x<=y){cout<<"No\n";return ;}}cout<<"Yes\n";
}signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;// cin>>t;while(t--) solve();
}​

B.也是暴力枚举每个分数即可

#include<bits/stdc++.h>
using namespace std;
const int N =2e5+10;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m;
int a[N];
void solve(){cin>>n>>m;for(int i=1;i<n;i++){cin>>a[i];}int res=INT_MAX;for(int j=0;j<=100;j++){vector<int> b;for(int i=1;i<n;i++) b.push_back(a[i]);b.push_back(j);sort(b.begin(),b.end());int now=0;for(int i=1;i<b.size()-1;i++) now+=b[i];if(now>=m){res=min(res,j);}}if(res==INT_MAX){cout<<-1;return ;}cout<<res;
}signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;// cin>>t;while(t--) solve();
}

C.我二分+数位dp了

直接二分当前数的范围内有多少个 “321”的数的个数

import random
import sys
import os
import math
from collections import Counter, defaultdict, deque
from functools import lru_cache, reduce,cache
from itertools import accumulate, combinations, permutations
from heapq import nsmallest, nlargest, heapify, heappop, heappush
from io import BytesIO, IOBase
from copy import deepcopy
import threading
import bisectBUFSIZE = 4096class FastIO(IOBase):newlines = 0def __init__(self, file):self._fd = file.fileno()self.buffer = BytesIO()self.writable = "x" in file.mode or "r" not in file.modeself.write = self.buffer.write if self.writable else Nonedef read(self):while True:b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))if not b:breakptr = self.buffer.tell()self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)self.newlines = 0return self.buffer.read()def readline(self):while self.newlines == 0:b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))self.newlines = b.count(b"\n") + (not b)ptr = self.buffer.tell()self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)self.newlines -= 1return self.buffer.readline()def flush(self):if self.writable:os.write(self._fd, self.buffer.getvalue())self.buffer.truncate(0), self.buffer.seek(0)class IOWrapper(IOBase):def __init__(self, file):self.buffer = FastIO(file)self.flush = self.buffer.flushself.writable = self.buffer.writableself.write = lambda s: self.buffer.write(s.encode("ascii"))self.read = lambda: self.buffer.read().decode("ascii")self.readline = lambda: self.buffer.readline().decode("ascii")sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")def I():return input()def II():return int(input())def MI():return map(int, input().split())def LI():return list(input().split())def LII():return list(map(int, input().split()))def GMI():return map(lambda x: int(x) - 1, input().split())def LGMI():return list(map(lambda x: int(x) - 1, input().split()))def solve():k = II()@cachedef dfs(i: int, limit: bool, num: bool, pre: int,s:str) -> int:if i == len(s):return int(num)res = 0if not num: res = dfs(i + 1, False, False, 10,s)up = int(s[i]) if limit else 9di = 0if not num: di = 1for d in range(di, up + 1):if pre > d:res += dfs(i + 1, limit and d == up, True, d,s)return resl, r = 1, 10 ** 18while l < r:mid = (l + r) >> 1if dfs(0, True, False, 10,str(mid)) >= k:r = midelse:l = mid + 1print(l)if __name__ == '__main__':for _ in range(1):solve()

D.

每个ai都要乘每个bi

排序后双指针维护当前ai+bi<=k的最有边界即可

#include<bits/stdc++.h>
using namespace std;
const int N =2e5+10;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m,k;
int a[N],b[N];
void solve(){cin>>n>>m>>k;for(int i=1;i<=n;i++){cin>>a[i];    }for(int j=1;j<=m;j++) cin>>b[j];sort(a+1,a+1+n);sort(b+1,b+1+m);int res=0;int now=0;for(int j=1;j<=m;j++) now+=b[j];int idx=m;for(int i=1;i<=n;i++){while(idx>=1&&a[i]+b[idx]>=k){now-=b[idx];idx--;}//    cout<<idx<<"\n";res+=idx*a[i]+now+(m-idx)*k;}cout<<res;
}signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;// cin>>t;while(t--) solve();
}

E.

直接get函数就是找以当前x为根节点的子树下面距离为k的有多少个数,最大值是n

那么最左边界是x<<k,最右边界是min(n,l+num-1),

然后往父节点跳即可,边跳边计算父节点的另一个儿子节点

#include<bits/stdc++.h>
using namespace std;
const int N =2e5+10,mod= 998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;void solve()
{int n,x,k;int res=0;auto get=[&](int x,int k,int n){if(k>=64) return 0ll;if(k<0) return 0ll;__int128 num=1ll<<k,l=x;l=l<<k;__int128 r=l+num-1;if(l>n) return 0ll;LL res=min(r,(__int128)n)-l+1;return res;};cin>>n>>x>>k;if(k){res+=get(x,k,n);}while(x>1&&k>0){k--;res+=get((x^1),k-1,n);x/=2;}if(k==0&&x){res++;}cout<<res<<"\n";
}signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

F:退背包问题

添加就是正常的01背包

然后删除就是

维护g数组

状态是,不选当前球,体积为i的方案数

那么g[i]=f[i]-g[i-x]

考虑容斥原理

不选当前球体积为i=选+不选当前球体积为i-选当前球体积为i的方案数

=f[i]-g[i-x]

g[i-x]可以理解为选了这个球后,剩下的 i−x�−�就是由不选该球的方案数组成

#include<bits/stdc++.h>
using namespace std;
const int N =2e5+10,mod= 998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m;
int a[N];
int dep[N];void solve()
{int q,k;cin>>q>>k;vector<int> f(k+1,0);f[0]=1;while(q--){string op;int x;cin>>op>>x;if(op[0]=='+'){for(int i=k;i>=x;i--){f[i]+=f[i-x];f[i]%=mod;}}else{//不选该球和为j的方案书//选和不选vector<int> g(k+1,0);for(int i=0;i<=k;i++){if(i<x){g[i]=f[i];}else{g[i]=f[i]-g[i-x];if(g[i]<0) g[i]+=mod;}}f.swap(g);}cout<<f[k]<<"\n";}
}signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;// cin>>t;while(t--) solve();
}

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

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

相关文章

python+selenium进行cnblog的自动化登录测试

Web登录测试是很常见的测试&#xff0c;手动测试大家再熟悉不过了&#xff0c;那如何进行自动化登录测试呢&#xff01;本文就基于pythonselenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试&#xff0c;可提供点参考&#xff01;下面就包括测试代…

SpringBoot统一返回处理遇到cannot be cast to java.lang.String问题

ResponseBodyAdvice 接口概述 1、ResponseBodyAdvice 接口允许在执行 ResponseBody 或 ResponseEntity 控制器方法之后&#xff0c;但在使用 HttpMessageConverter 写入响应体之前自定义响应&#xff0c;进行功能增强。通常用于 加密&#xff0c;签名&#xff0c;统一数据格式…

计算机组成原理课程设计

操作控制和顺序控制 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的 这就构成了整个微指令的三个部分 访存指令就是实现对主存中的数据进行访问或存储 一、 操作控制字段是由各种微命令来构成的&#xff0c;这些微命令怎么来设计&#xff1f; 一个萝卜…

如何在Gazebo中实现多机器人编队仿真

文章目录 前言一、仿真前的配置二、实现步骤1.检查PC和台式机是否通讯成功2.编队中对单个机器人进行独立的控制3、对机器人进行编队控制 前言 实现在gazebo仿真环境中添加多个机器人后&#xff0c;接下来进行编队控制&#xff0c;对具体的实现过程进行记录。 一、仿真前的配置…

信息安全性测试的流程

安全测试 一、信息安全性测试的定义 软件安全是一个广泛而复杂的主题&#xff0c;每一个新软件都可能存在安全的缺陷&#xff0c;甚至这个缺陷是前所未见的。信息安全性测试的目的在于通过系统的测试&#xff0c;对所测软件提出安全改进建议&#xff0c;帮助用户将风险控制/转…

使用命令行快速创建Vite项目

一、构建项目 在终端中使用如下命令行&#xff1a; npm create vite 二、定义项目名称 三、选择项目类型 Vanilla是我们常用的JavaScript&#xff0c;Vue和React是常用前端框架&#xff0c;可以根据自己的需要进行选择 通过上下键进行选择&#xff0c;按下回车进行确认 创建…

mysql四种事务隔离级别介绍

MySQL事务隔离级别定义了不同事务之间的隔离程度。MySQL标准列表了四个隔离级别&#xff0c;依次为读未提交&#xff08;READ UNCOMMITTED&#xff09;、读已提交&#xff08;READ COMMITTED&#xff09;、可重复读&#xff08;REPEATABLE READ&#xff09;和串行化&#xff08…

速码!!BGP最全学习笔记:IBGP和EBGP基本配置

实验1&#xff1a;配置IBGP和EBGP 实验目的 熟悉IBGP和EBGP的应用场景掌握IBGP和EBGP的配置方法 实验拓扑 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注&#xff0c;评论区留下邮箱发给你! 实验步骤 1.IP地址的配置 R1的配置 <Huawei>system-view …

GeekRUN-7芯片跑分表

前两个字母是芯片简写&#xff0c;如麒麟&#xff0c;是QL&#xff0c;骁龙是XL&#xff0c;天玑是TJ&#xff0c;第一串数字是最高值&#xff0c;第二串是最低值&#xff0c;省电模式差不多这个水平。QL9K是麒麟9000&#xff0c;QL9S

AUTOSAR 面试知识回顾

如果答不上来&#xff0c;就讲当时做了什么 1. Ethernet基础: 硬件接口&#xff1a; ECU到PHY&#xff1a; data 是MII总线&#xff0c; 寄存器控制是SMI总线【MDCMDIO两根线, half duplex】PHY输出(100BASE-T1)&#xff1a; MDI总线&#xff0c;2 wire 【T1: twisted 1 pair …

【数据结构】【C++】红黑树RBTree的模拟实现(平衡搜索二叉树)

【数据结构】&&【C】红黑树的模拟实现(平衡搜索二叉树&#xff09; 一.红黑树的性质二.红黑树的模拟实现1.结点的定义2.搜索树的插入3.变色向上处理4.旋转变色 三.红黑树与AVL树的差别四.完整代码 一.红黑树的性质 1.什么是红黑树&#xff1f; 红黑树是一种搜索二叉树…

Python 公里与海里换算

""" 公里与海里换算知识点&#xff1a;1、换算公式&#xff1a;海里 公里 / 1.8522、input()、print()函数3、变量类型转换&#xff0c;整形int与字符串str转换&#xff0c;可以用type()函数验证4、字符串拼接&#xff0c;例如&#xff1a;123 456 1234565、…

硕士应聘大专老师

招聘信息 当地人社局、学校&#xff08;官方&#xff09; 公众号&#xff08;推荐&#xff09;&#xff1a; 辅导员招聘 厦门人才就业信息平台 高校人才网V 公告出完没多久就要考试面试&#xff0c;提前联系当地院校&#xff0c;问是否招人。 校招南方某些学校会直接去招老师。…

QT--day5

注册 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QPushButton> #include<QLineEdit> #include<QLabel> #include <QMessageBox> #include<QString> #include<QSqlDatabase> …

设计模式_解释器模式

解释器模式 案例 角色 1 解释器基类 &#xff08;BaseInterpreter&#xff09; 2 具体解释器1 2 3... (Interperter 1 2 3 ) 3 内容 (Context) 4 用户 (user) 流程 (上下文) ---- 传…

C++入门知识

Hello&#xff0c;今天我们分享一些关于C入门的知识&#xff0c;看完至少让你为后面的类和对象有一定的基础&#xff0c;所以在讲类和对象的时候&#xff0c;我们需要来了解一些关于C入门的知识。 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对…

代码随想录算法训练营 动态规划part06

一、完全背包 卡哥的总结&#xff0c;还挺全代码随想录 (programmercarl.com) 二、零钱兑换 II 518. 零钱兑换 II - 力扣&#xff08;LeetCode&#xff09; 被选物品之间不需要满足特定关系&#xff0c;只需要选择物品&#xff0c;以达到「全局最优」或者「特定状态」即可。 …

eclipse如何引入lombok插件

1. 下载插件 Downloadhttps://projectlombok.org/downloadlombok插件是一个jar包&#xff0c;如下图&#xff1a; 2. 安装插件 双击运行下载的jar包&#xff0c;点击如下按钮&#xff1a; 在弹窗内选择eclipse的启动程序eclipse.exe&#xff0c;注意&#xff01;&#xff01;…

基于springboot+vue的车辆管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

4、SpringBoot_Mybatis、Druid、Juint整合

五、SSM整合 1.整合Mybatis 1.1springmvc 整合回顾 导入坐标 <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.17.RELEASE</version></dependency><dependency>…