24.6.16

星期一:

补cf global round26 C2                                                  cf传送门

思路:有效操作2只有一次,且反转后不会再出现负数,即后面能贡献 2^n-i个方案,再乘上前面   2^(k>=0的次数)

代码如下:

ll n;
ll a[N];
ll qpow(int n){ll res=1,a=2;while(n){if(n&1) res=res*a%mod;a=a*a%mod;n>>=1;}return res;
}
void solve(){cin >> n;for(int i=1;i<=n;i++){cin >> a[i];}ll sum=0,cmp=0;for(int i=1;i<=n;i++){sum+=a[i];cmp=min(sum,cmp);}if(!cmp){cout << qpow(n) << "\n"; return ;}ll k=0,now=1,ans=0;for(int i=1;i<=n;i++){k+=a[i];if(k==cmp) ans+=qpow(n-i+now-1),ans%=mod;now+=k>=0;}cout << ans << "\n";
}

星期二:

补西南科技第二十届                                                牛客传送门

有点怪的题

思路:

代码如下:

ll n;
void solve(){cin >> n;int x,y; cin >> x >> y;set<int>st1,st2;int sa=0;for(int i=1;i<=x;i++){int w,num; cin >> w >> num;st1.insert(w);}for(int i=1;i<=y;i++){int w,num; cin >> w >> num;st2.insert(w);sa+=st1.find(w)!=st1.end();}cout << min(min((ll)st1.size()-sa,n/2)+min((ll)st2.size()-sa,n/2)+1ll*sa,n);
}

星期四:

补二十届西南科技 K 差分                                          牛客传送门

罕见的差分题

思路:主要在于如何处理扩散,向两边都扩散,那么可以正着跑一遍处理向右扩散,反着处理向左

对于所有操作,做个前缀差分和后缀差分,cnt 记录当前有多少个在扩散的点,w记录点的权值

代码如下:

const int N=2e6+10;
ll n;
int pre[N],pos[N],w[N];
ll a[N];
void solve(){int m; cin >> n >> m;while(m--){int a,b,c; cin >> a >> b >> c;if(a==1){w[b]+=c;pre[b]++,pre[b+c]--;pos[b]++,pos[max(0,b-c)]--;}else{w[b]-=c;pre[b]--,pre[b+c]++;pos[b]--,pos[max(0,b-c)]++;}}ll sum=0,cnt=0;for(int i=1;i<=n;i++){sum+=w[i]-cnt;cnt+=pre[i];a[i]=sum;}sum=0,cnt=0;for(int i=n;i;i--){sum+=w[i]-cnt;cnt+=pos[i];a[i]+=sum-w[i];}for(int i=1;i<=n;i++) cout << a[i] << " ";
}

顺手做的区间dp                                                                vj传送门

代码如下:

ll n;
ll dp[1010][1010];
void solve(){string s; cin >> s;n=s.size(); s=" "+s;memset(dp,0x3f,sizeof dp);for(int i=1;i<=n;i++){dp[i][i]=0;if(i<n && s[i]==s[i+1]) dp[i][i+1]=0;}for(int len=1;len<n;len++){for(int l=1;l+len-1<=n;l++){int r=l+len-1;if(l<r-1 && s[l]==s[r]) dp[l][r]=min(dp[l+1][r-1],dp[l][r]);if(l>1){if(s[l-1]==s[r]) dp[l-1][r]=min({dp[l][r-1],dp[l][r]+1,dp[l-1][r]});else dp[l-1][r]=min(dp[l][r]+1,dp[l-1][r]);}if(r<n){if(s[l]==s[r+1]) dp[l][r+1]=min({dp[l+1][r],dp[l][r]+1,dp[l][r+1]});else dp[l][r+1]=min(dp[l][r]+1,dp[l][r+1]);}}}cout << dp[1][n];
}

星期五:

dp求方案数                                                          vj传送门

思路:dp【i】【j】表示第 i个阶段,状态值为 j的方案数

dp[i][j]=\sum_{k=l[i-1]}^{j-1}dp[i-1][k],用前缀和优化一下就行,注意不要漏掉 i-1的方案数

代码如下:

const int mod=998244353;
ll n;
ll l[220],r[220];
ll dp[220][10004];
void solve(){cin >> n;for(int i=1;i<=n;i++){cin >> l[i] >> r[i];}for(int i=l[1];i<=r[1];i++) dp[1][i]=1;int bt=l[1];for(int i=2;i<=n;i++){bt=max(l[i],1ll*bt+1);for(int j=l[i-1];j<bt;j++) dp[i-1][j]+=dp[i-1][j-1],dp[i-1][j]%=mod;//前缀和for(int j=bt;j<=r[i];j++){dp[i][j]+=dp[i-1][j-1],dp[i][j]%=mod;dp[i-1][j]+=dp[i-1][j-1],dp[i-1][j]%=mod;//前缀和}}ll ans=0;for(int i=bt;i<=r[n];i++) ans+=dp[n][i],ans%=mod;cout << ans << "\n";
}

很典的完全背包方案数                                          vj传送门

虽然很典,但还是调了一会儿,主要在一些细节上不太熟悉

代码如下:

const int N=1e5+10;
const int mod=1e9+7;
ll n;
ll dp[N];
int a[]={0,1,2,5,10,20,50,100,200,500,1000,2000,5000,10000};
void solve(){cin >> n;for(int i=0;i<=n;i++) dp[i]=1;for(int i=2;i<=13;i++){for(int j=a[i];j<=n;j++)dp[j]+=dp[j-a[i]],dp[j]%=mod;}cout << dp[n];
}

上楼梯3                                                                     vj传送门

需要推式子的转移

思路:

代码如下:

const int N=1e5+10;
ll n;
const int p=100003;
ll dp[N];
void solve(){cin >> n;dp[1]=1;dp[2]=1;for(int i=3;i<=n;i++)dp[i]=(dp[i-1]+dp[i-3])%p;cout << dp[n];
}

线性dp                                                          vj传送门

思路:dp【i】【0/1】表示考虑到第 i个,第 i个选 1或b【i】的最大值

代码如下:

const int N=2e6+10;
ll n;
int b[N];
ll dp[N][2];
void solve(){cin >> n;for(int i=1;i<=n;i++) cin >> b[i];for(int i=2;i<=n;i++){dp[i][0]=max(dp[i-1][0],dp[i-1][1]+b[i-1]-1);dp[i][1]=max(dp[i-1][0]+b[i]-1,dp[i-1][1]+abs(b[i]-b[i-1]));}cout << max(dp[n][0],dp[n][1]);
}

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

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

相关文章

Golang | Leetcode Golang题解之第166题分数到小数

题目&#xff1a; 题解&#xff1a; func fractionToDecimal(numerator, denominator int) string {if numerator%denominator 0 {return strconv.Itoa(numerator / denominator)}s : []byte{}if numerator < 0 ! (denominator < 0) {s append(s, -)}// 整数部分numer…

解决安全规模问题:MinIO 企业对象存储密钥管理服务器

在强大可靠的存储解决方案领域&#xff0c;MinIO 作为持久层脱颖而出&#xff0c;为组织提供安全、持久和可扩展的存储选项。MinIO 通常负责处理关键任务数据&#xff0c;在确保高可用性方面发挥着至关重要的作用&#xff0c;有时甚至在全球范围内。存储数据的性质&#xff0c;…

Codepen Three.js环境依赖配置

Codepen Three.js环境依赖配置 前言 如果想在CodePen环境写Three.js依赖的项目&#xff0c;环境搭建可以参考该Codepen项目: Chill the lion 详细 打开设置可以看到以下配置 更多项目参考 1. Chill the Lion Chill the Lion 是一个基于 ThreeJS 制作的 WebGL 示例。它由…

RecyclerVIew->加速再减速的RecyclerVIew平滑对齐工具类SnapHelper

XML文件 ItemView的XML文件R.layout.shape_item_view <?xml version"1.0" encoding"utf-8"?> <FrameLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"100dp"android:layout_heig…

大腾智能,基于云原生的国产工业协同平台

大腾智能是一家基于云原生的国产工业软件与数字化协同平台&#xff0c;专注于推动企业数字化转型与升级&#xff0c;为企业提供一系列专业、高效的云原生数字化软件及方案&#xff0c;推动产品设计、生产及营销展示的革新&#xff0c;实现可持续发展。 大腾智能旗下产品 3D模型…

美的集团员工自爆工资+年终奖收入明细,网友说:这待遇,老婆根本不让跳槽!...

发现需求&#xff1a;研究与实践是关键 在任何领域&#xff0c;只要深入研究&#xff0c;就会发现无数的需求。如果没有发现需求&#xff0c;那只能说明对行业的了解还不够透彻。学校通过考试发现学生的问题&#xff0c;职场上也一样&#xff0c;通过不断实践发现问题。理论知识…

XSS+CSRF组合拳

目录 简介 如何进行实战 进入后台创建一个新用户进行接口分析 构造注入代码 寻找XSS漏洞并注入 小结 简介 &#xff08;案例中将使用cms靶场来进行演示&#xff09; 在实战中CSRF利用条件十分苛刻&#xff0c;因为我们需要让受害者点击我们的恶意请求不是一件容易的事情…

196.每日一题:检测大写字母(力扣)

代码解决 class Solution { public:bool detectCapitalUse(string word) {int capitalCount 0;int n word.size();// 统计大写字母的数量for (char c : word) {if (isupper(c)) {capitalCount;}}// 检查是否满足三种情况之一if (capitalCount n) {// 全部字母都是大写return…

Adobe Premiere 视频编辑软件下载安装,pr 全系列资源分享!

Adobe Premiere以其强大的功能、灵活的操作和卓越的性能&#xff0c;成为视频编辑领域的佼佼者。 在剪辑方面&#xff0c;Adobe Premiere提供了强大而灵活的工具集。用户可以在直观的时间线上对视频进行精细的裁剪、剪辑和合并操作。无论是快速剪辑短片&#xff0c;还是精心打造…

我真是反感那些叉劈。

再转一下&#xff0c;想看的自己提取吧。

MyBatis 动态 SQL怎么使用?

引言&#xff1a;在现代的软件开发中&#xff0c;数据库操作是任何应用程序的核心部分之一。而在 Java 开发领域&#xff0c;MyBatis 作为一款优秀的持久层框架&#xff0c;以其简洁的配置和强大的灵活性被广泛应用。动态 SQL 允许开发人员根据不同的条件和场景动态地生成和执行…

前端也需要知道的一些常用linux命令

前端也需要知道的一些常用linux命令 1.问题背景2.连接工具&#xff08;SecureCRT_Portable&#xff09;a.下载工具b.连接服务器c.登录到root账户 3.基本命令a.cd命令和cd ..b.ll命令和ls命令c:cp命令d.rm命令e:rz命令f.unzip命令g.mv命令h.pwd命令&#xff08;这里没有用到&…

【CPP】交换排序:冒泡排序、快速排序

目录 1.冒泡排序简介代码分析 2.快速排序2.1霍尔版本简介代码分析 2.2挖坑版本2.3前后指针版本2.4非递归的快排思路代码 什么是交换排序&#xff1f; 基本思想&#xff1a;所谓 交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0…

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据…

竞赛选题 python opencv 深度学习 指纹识别算法实现

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python opencv 深度学习 指纹识别算法实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;4分创新点&#xff1a;4分 该项目较为新颖…

【STM32】STM32通过I2C实现温湿度采集与显示

目录 一、I2C总线通信协议 1.I2C通信特征 2.I2C总线协议 3.软件I2C和硬件I2C 二、stm32通过I2C实现温湿度&#xff08;AHT20&#xff09;采集 1.stm32cube配置 RCC配置&#xff1a; SYS配置&#xff1a; I2C1配置&#xff1a; USART1配置&#xff1a; GPIO配置&#…

day50 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 392.判断子序列

1143. 最长公共子序列 提示 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删…

Excel 解析十六进制并查找

A1 格由多个人名及其考勤情况组成&#xff0c;比如&#xff0c;c 是十六进制的 1100&#xff0c;表示第 1、2 天到场&#xff0c;第 3、4 天缺席。目前只有 4 天的考勤。 AB1alice,c,bob,7,clara,a,mike,9/input: name and presence22/input: the day to be queried 要求根据…

【Linux】基础 I / O

目录 一、C文件操作函数&#xff1a; 二、输入 / 输出 / 错误流&#xff1a; 三、系统文件 I/O open函数&#xff1a; write&#xff1a; read&#xff1a; close&#xff1a; 具体应用&#xff1a; 四、文件描述符(fd): 1、概念&#xff1a; 2、文件管理&#xff1…

计算机网络 —— 网络字节序

网络字节序 1、网络字节序 (Network Byte Order)和本机转换 1、大端、小端字节序 “大端” 和” 小端” 表示多字节值的哪一端存储在该值的起始地址处&#xff1b;小端存储在起始地址处&#xff0c;即是小端字节序&#xff1b;大端存储在起始地址处&#xff0c;即是大端字节…