【vjudge训练记录】12月个人训练赛3

news/2024/12/16 0:32:43/文章来源:https://www.cnblogs.com/longxingx/p/18593480

训练情况

赛后反思

C题开的时候太急了没求证直接猜了一个假结论,D题读错题了,死因:which can be one of the eight colors above or not.,可以变成八个颜色以外的(cao!),E题答案的下界取太小了(cao!)、F题二分求次数的时候,只能取正数

A题

判断字母是否重复出现,开一个变量记录即可。

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){string s; cin>>s;map<char,bool> v;bool flag = true;for(int i = 0;i<s.size();i++){if(v[s[i]]) flag = false;v[s[i]] = 1;}if(flag) cout<<"yes"<<endl;else cout<<"no"<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

B题

答案要最大,就是数列的极差

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int n; cin>>n;vector<int> a(n + 1);for(int i = 1;i<=n;i++) cin>>a[i];int ma = a[1],mi = a[1];for(int i = 2;i<=n;i++){ma = max(ma,a[i]);mi = min(mi,a[i]);}cout<<ma-mi<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

C题

先求和,如果不是 \(10\) 的倍数直接输出,如果是 \(10\) 的倍数,要答案尽可能大,那就从小到大减去一个数让和变成不是 \(10\) 的倍数,如果都不行答案就是 \(0\)

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int n; cin>>n;vector<int> a(n + 1);int sum = 0;for(int i = 1;i<=n;i++) cin>>a[i],sum+=a[i];sort(a.begin() + 1,a.end());if(sum%10==0){for(int i = 1;i<=n;i++){if((sum-a[i])%10){cout<<sum-a[i]<<endl;return;}}cout<<0<<endl;} else cout<<sum<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

D题

分数段计数,我们发现分数段跨度都是 \(400\),所以我们直接除以 \(400\) 进行计数,如果 \(0 \sim 3199\) 都没有,那至少存在一个大于 \(3199\) 的,所以答案最小值至少为 \(1\),大于 \(3199\) 的可以变成任意颜色(坑点:可以变成八种颜色之外的),答案就是 \(0 \sim 3199\) 的人数 + 大于 \(3199\) 的人数。

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int n; cin>>n;vector<int> a(n + 1);for(int i = 1;i<=n;i++) cin>>a[i];vector<int> cnt(100,0);for(int i = 1;i<=n;i++) cnt[a[i]/400]++;int ans = 0;for(int i = 0;i<=7;i++) if(cnt[i]) ans++;if(ans == 0) cout<<1<<" ";else cout<<ans<<" ";for(int i = 8;i<=99;i++) ans += cnt[i];cout<<ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

E题

长度为 \(3n\) 的数列删掉 \(n\) 个,就是数列中选 \(2n\) 个,但是顺序不能够改变,然后选出来长度为 \(2n\) 的数列对半砍,我们发现可以去枚举那个对半砍的分界点,范围是 \(n \sim 2n\),为了让答案尽可能大,对于分界点左边的我们取尽可能大的 \(n\) 个,分界点右边的尽可能小的 \(n\) 个,这种动态维护排序后的最大和、与最小和,我们可以使用优先队列,求分界点左边最大的 \(n\) 个,和分界点右边最小的 \(n\) 个,求和我们可以预处理优先队列里的前后缀和,然后分界点移动的时候,最大值的优先队列去掉最小的,最小值的优先队列去掉最大的,对应的前后缀和也需要维护一下,最后答案就是 \(n \sim 2n\) 分界点左边最大值减右边最小值。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'using namespace std;void solve(){int n; cin>>n;vector<int> a(3*n + 1);vector<int> pre(3*n + 3),suf(3*n+3);int ans = -LONG_LONG_MAX;for(int i = 1;i<=3*n;i++) cin>>a[i];priority_queue<int,vector<int>,greater<int>> mi;for(int i=1;i<=3*n;i++){mi.push(a[i]);pre[i]=pre[i-1]+a[i];while(mi.size()>n){pre[i]-=mi.top();mi.pop();}}priority_queue<int> ma;for(int i=3*n;i;i--){ma.push(a[i]);suf[i]=suf[i+1]+a[i];while(ma.size()>n){suf[i]-=ma.top();ma.pop();}}for(int i=n;i<=2*n;i++) ans=max(ans,pre[i]-suf[i+1]);cout<<ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

F题

我们可以看做范围AOE的伤害是保底的,选中的那个怪物会多 \(a-b\) 的伤害,我们根据答案可以计算出选中的次数,观察到二分单调性,考虑二分答案,选中的次数为 \(\sum_{i=1}^{n}{\lfloor \frac{t_i}{a-b} \rfloor(t_i-b \times mid>0)}\)

#include <bits/stdc++.h>
#define int long long
#define endl '\n'using namespace std;const int N = 1e5 + 3;int n,a,b;
int h[N];
int t[N];bool pd(int x){for(int i = 1;i<=n;i++) t[i] = h[i];for(int i = 1;i<=n;i++) t[i] -= x*b;int ans = 0;for(int i = 1;i<=n;i++) if(t[i]>0) ans += ceil(1.0*t[i]/(a-b));return ans<=x;
}void solve(){cin>>n>>a>>b;int ma = 0;for(int i = 1;i<=n;i++) cin>>h[i],ma = max(ma,h[i]);int l = 1,r = ma,m;while(l<r){m = l + r >> 1;if(pd(m)) r = m;else l = m+1;}cout<<l<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

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

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

相关文章

OS笔记

os cpu执行两种性质的程序内核态程序(管态) 用户态程序内核态执行的特权指令包含:I/O指令 中断指令 存取内存中寄存器指令 程序状态字寄存器变更指令和硬件关联的指令(最底层)包含:时钟管理 中断处理 设备驱动运行比较频繁的指令(最底层的上层)包含:进程管理 内存管理 设…

财务知识-会计做账全套流程

财务知识-会计做账全套流程

druid多数据源配置

AOP实现说明 jump数据源注解 DataSource.javaAOP实现 DataSourceAspect.java数据源常量 DataSourceNames.java动态数据源 DynamicDataSource.java动态数据源config DynamicDataSourceConfig.javaDataSource.java package com.saicmotor.carapp.service.bvalue.manage.common.co…

docker pull拉取镜像超时了 ,可以使用Github Action 构建docker镜像 可以构建arm架构 x86架构镜像

首先要有个GitHub账号把这个项目fork到自己账号底下 地址:https://github.com/wukongdaily/DockerTarBuilder fork了之后进入自己的这个项目底下 点击"Actions" 左边可以选择构建镜像的架构 右边输入要构建的镜像名 输入之后点击 ”Run workflow“ 进行构建 在这里…

44. JavaScript之BOM、DOM

1. BOM 1.1 概念 Browser Object Model是指浏览器对象模型,它使 JavaScript 能与浏览器进行交互。 BOM是浏览器提供的API集合,主要用于处理与浏览器环境相关的任务,如窗口管理、导航、cookie、location等。 1.2 window对象 [1]open() 第一个参数是目标网址,第二个参数可以为…

【嵌入式开发】到底什么是指令集?什么是微架构?他们是什么关系?

一、简述 二、指令集 三、微架构及其与指令集的关系? 四、芯片厂、ARM公司和这些指令集、微架构是什么关系? 五、x86和ARM的竞争!一、简述 CPU的设计遵循图灵机的基本设计思想:任何复杂的运算都可以分解为有限个基本指令的组合来完成。这些基本指令比如加、减、乘、与、或、…

福卫兵-多源异构数据采集与融合应用综合实践

这个项目属于哪个课程 <首页 - 2024数据采集与融合技术实践 - 福州大学 - 班级博客 - 博客园 (cnblogs.com)>这个作业要求在哪里 <综合设计 - 作业 - 2024数据采集与融合技术实践 - 班级博客 - 博客园 (cnblogs.com)>组名、项目简介 <组名:福小兵,项目需求:实…

福卫兵——多源异构数据采集与融合应用综合实践

福州大学多模态网络舆情分析与可视化系统序号 信息类别 内容描述1 这个项目属于哪个课程 数据采集与融合综合实践2 组名、项目简介 组名:福小兵,项目需求:实时舆情监控系统,项目目标:为福州大学提供舆情监控与决策辅助工具,技术路线:使用 Flask 后端、Memfire(PostgreSQ…

SQL优化之《预警事件统计》

在做一件什么事情: 在首页大屏上,可以通过各种维度展示事件统计信息。 sql如下:点击查看代码 SELECTcount( * ) count,camera_code groupName FROMalarm_event WHEREalarm_event.illegal_tag ="24"AND alarm_event.organization_code ="310000110000"AN…

树形dp专项测试1

A. Promises I Cant Keep 题目意为求以每个点为根时的期望得分的最大值,换根DP即可。 式子不太难推,半个小时就出来了。太长了不往这写了。Code#include<bits/stdc++.h> #define ll long long #define il inline #define read(x){\char ch;\int fu=1;\while(!isdigit(c…

测试使用自己编译的WPF框架(本地nuget 包引用)

上一篇博客 本地编译WPF框架源码 - wuty007 - 博客园 说到自己在本地编译WPF 框架源码,并在本地 源码 的 \wpf\artifacts\packages\Debug\NonShipping 路径下打包处了 对应的 nuget包 接下来实操测试一下如何使用这些编译出来的包 一、首先为了方便看到测试的效果,我在WPF源…

安全帽佩戴监测摄像机

安全帽是工业生产中必不可少的安全防护装备,能有效保护工人头部免受意外伤害。然而,管理人员往往难以监督工人是否正确佩戴安全帽,这可能导致一些潜在的安全隐患。为了解决这一问题,一种新型的安全帽佩戴监测摄像机应运而生。安全帽是工业生产中必不可少的安全防护装备,能…