当前位置: 首页 > news >正文

2023/2/13 蓝桥备战acwing刷题(set的使用、简单推个不等式+差分、快速幂、01背包模板回顾、类似01背包的题)

4454未初始化警告

set计数

#include<iostream>
#include<set>
using namespace std;int main(){int n,m;cin>>n>>m;set<int> s;int res = 0;s.insert(0);while(m--){int l,r;cin>>l>>r;if(s.count(r)==0){res++;}s.insert(l);}cout<<res<<endl;return 0;
}

4455出行计划

有题目可得不等式
q>=t−c+1−kq>=t-c+1-kq>=tc+1k
q<=t−kq<=t-kq<=tk
但是如果正常的遍历会出现O(n2)O(n^2)O(n2)的复杂度
所以要优化的话,可以这么搞:

因为公式已知,我们可以得到能正常参加各个计划的q的区间
对这个区间都加一
最后询问时直接O(1)的访问就行
所以区间加法,用差分
细节是注意负值的处理,防止越界

#include<iostream>
using namespace std;
const int maxx = 2e5+10;struct Node{int t;int c;
};Node node[maxx];
int d[maxx];int main(){int m,k,n;cin>>n>>m>>k;//q+k>=t-c+1,q+k<=tfor(int i=0;i<n;i++){int t,c;cin>>t>>c;int l = t+1-c-k;int r = t-k;//注意处理一下负值l = max(l,1);if(r>0){d[l]++,d[r+1]--;}}for(int i=1;i<maxx;i++){d[i]=d[i-1]+d[i];}while(m--){int q;cin>>q;cout<<d[q]<<endl;}return 0;
}

4728乘方

用快速幂做的,注意用ull,ll会有问题

#include<iostream>
#include<cmath>
using namespace std;
typedef unsigned long long ll;
const ll INF = 1e9;ll fastpow(ll a,ll b){ll res = 1;while(b>=1){if(b%2==1){res*=a;}if(res>INF){return 0;}b/=2;a = a*a;}return res;
}int main(){ll a,b;cin>>a>>b;ll res = fastpow(a,b);if(res==0)cout<<"-1"<<endl;else cout<<res<<endl;return 0;
}

2、01背包

#include<iostream>
using namespace std;
const int maxx = 1e4+10;int dp[maxx][maxx];
int v[maxx];
int w[maxx];int main(){int N,V;cin>>N>>V;for(int i=1;i<=N;i++){cin>>v[i]>>w[i];}for(int i=1;i<=N;i++){for(int j=0;j<=V;j++){if(j<v[i]){dp[i][j] = dp[i-1][j];}else{dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);}}}cout<<dp[N][V]<<endl;return 0;
}

4700 何以包邮(说实话没懂)

给出x,给出一个价格数组,要求挑一些数出来,总和m>=xm>=xm>=x,且尽量小
想到01背包,它是和要小于一个值(背包大小),所以我们这里可以采用加负号反向
即当总和不超过sum-x时尽可能大
注意要反向遍历,相当于不断分解

#include<iostream>
using namespace std;
const int maxlen=40;
const int maxx = 3e5+20;int dp[maxx];
int a[maxlen];int main(){int n,x;cin>>n>>x;int sum=0;for(int i=1;i<=n;i++){cin>>a[i];sum+=a[i];}int res = 0;for(int i=1;i<=n;i++){for(int j=sum-x;j>=a[i];j--){dp[j]=max(dp[j],dp[j-a[i]]+a[i]);res = max(res,dp[j]);}}cout<<sum-dp[sum-x]<<endl;return 0;
}
http://www.lryc.cn/news/5541.html

相关文章:

  • 【情人节专属】AI一键预测你和Ta的CP值
  • 一文浅谈sql中的 in与not in,exists与not exists的区别以及性能分析
  • 2023前端面试题——JS篇
  • 微服务中API网关的作用是什么?
  • python爬虫--xpath模块简介
  • 【论文阅读】基于意图的网络(Intent-Based Networking,IBN)研究综述
  • 【云原生kubernetes】k8s service使用详解
  • Python 数据可视化的 3 大步骤,你知道吗?
  • CSS基础:盒子模型和浮动
  • OpenHarmony使用Socket实现一个TCP服务端详解
  • kafka监控工具安装和使用
  • 近期工作感悟
  • 大数据框架之Hadoop:HDFS(三)HDFS客户端操作(开发重点)
  • 多模式支持无线监控技术:主动式定位、被动式定位
  • Cy5 Alkyne,1223357-57-0,花青素Cyanine5炔基,氰基5炔烃
  • 【MySQL】MySQL 中 WITH 子句详解:从基础到实战示例
  • c/c++开发,无可避免的模板编程实践(篇一)
  • mulesoft MCIA 破釜沉舟备考 2023.02.13.04
  • Camtasia2023最新版本新功能及快捷键教程
  • Fabric磁盘扩容后数据迁移
  • 大厂光环下的功能测试,出去面试自动化一问三不知
  • SATA SSD需要NCQ开启吗?
  • 知识图谱业务落地技术推荐之图神经网络算法库图计算框架汇总
  • ==与equals()的区别
  • 【人工智能】对贝叶斯网络进行吉布斯采样
  • Java 面向对象基础
  • RocketMQ源码(21)—ConsumeMessageConcurrentlyService并发消费消息源码
  • 基于 STM32+FPGA 的多轴运动控制器的设计
  • 《爆肝整理》保姆级系列教程python接口自动化(十三)--cookie绕过验证码登录(详解
  • soapui + groovy 接口自动化测试