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

牛客周赛 Round 54 (c++题解)

比赛地址 : 

牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ

输出'o'的个数;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;
typedef long long LL;inline void solve(){string s ; cin >> s ;int t  = 0 ;for(char c : s) t += (c=='o') ;cout << t << endl ;
}signed main(){IOSint _ = 1;while(_ --) solve();return 0;
}

B

模拟 , 因为至少买x , 要把x+1,x+2的情况也考虑上 ;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
typedef long long LL;inline void solve(){LL a , b , x ; cin >> a >> b >> x ;LL ans =  0 ;LL g = a * 3 ;if(g<=b) ans = 1LL * x * a ;else {LL s1 = 1LL*(x%3)*a + 1LL * b * (x/3) ;LL s2 = 1LL*((x+1)%3)*a + 1LL * b * ((x+1)/3) ;LL s3 = 1LL*((x+2)%3)*a + 1LL * b * ((x+2)/3) ;ans = min(s1,min(s2,s3)) ;}cout << ans << endl ;
}signed main(){IOSint _ = 1;while(_ --) solve();return 0;
}

模拟  : 

1 . 排序

2 . 对于每一个饲料等级取和上一个较小的数量;

3 . 累加每一级,要求级数从1开始且连续 ;

详细请看代码 : 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'using namespace std;
typedef long long LL;inline void solve(){int n , m ; cin >> n >> m ;vector<int> a(n) ;int t = 0 ; for(int& x : a) {cin >> x ;if(x==1) t ++ ;}sort(a.begin(),a.end()) ;LL ans = 0 ;int pre = 0 ;int ps = n ;for(int i=0;i<n;i++){int j = i ;while(j<n && a[j]==a[i]) j++ ;int len = j - i  ;if(a[i]-pre==1){pre = a[i] ;ps = min(ps,len) ;ans += ps ;}else{break ;}i = j - 1 ;}cout << ans << endl ;
}signed main(){IOSint _ = 1;// cin >> _;while(_ --) solve();return 0;
}

D

bfs暴力即可 : 

#include<bits/stdc++.h>
const int nn = 1e3+5;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
typedef long long ll;
typedef unsigned long long ull;
using namespace std;ll n;
vector<ll> a(nn),dis(nn,inf);
void solve(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];queue<ll> q;dis[1] = 0;q.push(1);while(q.size()){ll v=q.front();q.pop();for(ll j=1;j<=n;j++){if(v==j)continue;if(a[v] % labs(v-j) == 0){if(dis[j]>dis[v]+1){dis[j] = dis[v]+1;q.push(j);}}}}if(dis[n]==inf) cout<<-1;else cout<<dis[n]<<endl;
}
int main() {ios::sync_with_stdio(), cin.tie(), cout.tie();int t=1;while(t--) solve();return 0;
}

但是数据小,dp几次也能过 : 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;
typedef long long LL;
const int N = 1e3 + 10 ;LL a[N] ;inline void solve(){int n ; cin >> n ;for(int i=1;i<=n;i++) cin >> a[i] ;vector<int> dp(n+1,n) ;dp[1] = 0 ;// 往左跳// 从前面和后面转移而来// dp[j] = min(dp[j],dp[i]+1) ;for(int k=0;k<15;k++){for(int i=1;i<=n;i++){for(int j=1;j<i;j++){// 判断j是否能跳到i ;int d = i - j ;if(a[j]%d==0) dp[i] = min(dp[i],dp[j]+1) ;}for(int j=n;j>i;j--){int d = j-i ;if(a[j]%d==0) dp[i] = min(dp[i],dp[j]+1) ;}}}cout << dp[n] << endl ;
}signed main(){IOSint _ = 1;while(_ --) solve();return 0;
}

E

dp , 一个线性dp ;

dp[i]代表长度为i个单位的ans ,最后输出dp[n] ;

枚举每个位置,分为使用第i张覆盖 和 使用i前面的覆盖两种情况 ;

使用第i张覆盖 : dp[i] = min(dp[i],dp[i-a[i]]+1) ;

不使用第i张覆盖 : 枚举j -> [1,i-1] , dp[i] = min(dp[i],dp[j-p-1]+1) ;

详情想想然后看代码便可理解 : 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;
typedef long long LL;// 01 背包
// dp[i] 使用到第i位的ansinline void solve(){int n ; cin >> n ;vector<int> a(n+1) , dp(n+1,n+1);for(int i=1;i<=n;i++) cin >> a[i] ;if(a[1]<=n) dp[a[1]]=1;dp[0] = 0;for(int i=1;i<=n;i++){// 遍历每个位置// 使用第i张if(i-a[i]>=0&&dp[i-a[i]]!=(n+1)){dp[i] = min(dp[i],dp[i-a[i]]+1) ;}// 不使用第i张 , 使用前面的第j张   for(int j=1;j<i;j++){int d = i - j ;if(a[j]>=d+1){int p = a[j]-(d+1) ;if(j-p-1>=0&&dp[j-p-1]!=(n+1)){dp[i] = min(dp[i],dp[j-p-1]+1) ;}}}}    if(dp[n]==n+1) cout << -1 << endl ;else cout << dp[n] << endl ;
}signed main(){IOSint _ = 1;cin >> _;while(_ --) solve();return 0;
}

F

不会 , 输出0骗了48分 ;

欢迎交流和讨论!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用Echarts来实现数据可视化
  • python-查找元素3(赛氪OJ)
  • minio文件上传
  • 书籍去掉字符串中连续出现k个0的子串
  • Linux防火墙2
  • JS+H5美观的带搜索的博客文章列表(可搜索多个参数)
  • 数据可视化(王者英雄数据分析)
  • 系统架构师(每日一练14)
  • 【LeetCode】108. 将有序数组转换为二叉搜索树
  • mysql数据库迁移
  • Face2V人脸向量开发包
  • 使用python爬取今日头条热搜
  • 使用EntityFramework8的学习和开发过程中一些经验
  • Webpack、Vite区别知多少?
  • Linux Ubuntu 20.04 netmap安装
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Mybatis初体验
  • vue的全局变量和全局拦截请求器
  • vue学习系列(二)vue-cli
  • 机器学习 vs. 深度学习
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 优秀架构师必须掌握的架构思维
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​什么是bug?bug的源头在哪里?
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (Note)C++中的继承方式
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理出现中文乱码的情况
  • .net 无限分类
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET与 java通用的3DES加密解密方法
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • []串口通信 零星笔记
  • [1204 寻找子串位置] 解题报告
  • [Android]通过PhoneLookup读取所有电话号码
  • [C++内存管理]new,delete,operator new,opreator delete
  • [HackMyVM]靶场Boxing
  • [HZNUCTF 2023 preliminary]ppppop
  • [H贪心] lc100376. 新增道路查询后的最短距离 II(贪心+读题+代码实现+周赛409_3)
  • [linux] shell中的()和{}
  • [Oh My C++ Diary]#ifndef / #define / #endif 使用详解
  • [Spring Cloud 项目] Spring cloud 实现房源查询功能
  • [UE4]Animation Montage C++相关注意事项
  • [Unity][VR]透视开发系列4-解决只看得到Passthrough但看不到Unity对象的问题
  • [vscode] 1. 在编辑器的标签页下显示文件目录(标签页显示面包屑) 2. 在标题栏上显示当前文件的完整路径