Educational Codeforces Round 88 (Rated for Div. 2)【ABCDE】(题解)
涵盖知识点:数学、三分
比赛链接:传送门
A - Berland Poker
题意: 有\(n\)张牌,其中\(m\)张王牌,将这\(n\)张牌平均分给\(k\)个人\((n\%k==0)\),询问拿到王牌数最多和剩下的所有人中拿到王牌数最多的之差最大为多少
题解: 一个人全拿王牌(足够的话) 剩下的人均分。
Accept Code:
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;cin>>t;
while(t--){
int n,m,k;
cin>>n>>m>>k;
int mx=min(n/k,m);
m-=mx;
int ot=(m+k-2)/(k-1);
cout<<mx-ot<<"\n";
}
return 0;
}
B - New Theatre Square
题意: 给出一个只由黑白组成的\(n\times m\)的矩阵,现在要填冲所有的白块,可以选择花费$x$1个1个填,也可以选择横向的\(1\times 2\)一次填,花费\(y\)。问最少花费。
题解: 判断\(2x\)和\(y\)的大小,然后贪心。
Accept Code:
#include <bits/stdc++.h>
using namespace std;
const int maxn=1010;
string mp[maxn];
int main(){
int t;cin>>t;
while(t--){
int n,m,x,y;
cin>>n>>m>>x>>y;
for(int i=0;i<n;i++)cin>>mp[i];
int cost=0;
if(2*x<=y){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(mp[i][j]=='.')cost+=x;
}
}
}
else{
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(mp[i][j]=='.'){
if(j!=m-1&&mp[i][j+1]=='.'){
j++;
cost+=y;
}
else cost+=x;
}
}
}
}
cout<<cost<<"\n";
}
return 0;
}
C - Mixing Water
题意: 热水和冷水的温度分别为\(h,c\)。
以 一杯热水->一杯冷水->一杯热水->一杯冷水->…的顺序加入一个容器内,
询问最少加多少杯,可以最接近温度\(t\)
题解: 在偶数次的时候温度位\(\frac{h+c}{2}\)别的时候都会大于这个值。所以若\(2t\le h+c\)答案就是\(2\)。其余情况显然这个绝对值具有单调递减后递增的趋势,三分即可。
Accept Code:
#include <bits/stdc++.h>
using namespace std;
const int maxn=1010;
const int inf=0x3f3f3f3f;
typedef long long ll ;
int h,c,t;
double f(ll x,ll y){
return fabs((double)t-1.0*(x*h+y*c)/(x+y));
}
int main(){
int _;cin>>_;
while(_--){
cin>>h>>c>>t;
if(t*2<=h+c){
cout<<"2\n";
continue;
}
ll l=0,r=inf;
while(l<r){
ll ml=l+(r-l)/3,mr=r-(r-l)/3;
if(f(ml+1,ml)<=f(mr+1,mr))r=mr-1;
else l=ml+1;
}
cout<<2*l+1<<"\n";
}
return 0;
}
D - Yet Another Yet Another Task
题意: 给定\(n\)个数\(a_n\),求一段区间之和-区间内最大值的最大值
题解: 枚举最大值在线处理最长子段和。
Accept Code:
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int a[maxn];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
int ans=0;
for(int mx=1;mx<=30;mx++){
int res=0;
for(int i=1;i<=n;i++){
if(a[i]>mx)res=0;
else{
res+=a[i];
if(res<0)res=0;
else ans=max(res-mx,ans);
}
}
}
cout<<ans<<"\n";
return 0;
}
E - Modular Stability
题意: 给定\(n\)和\(k\),要求在\([1, n]\)中找出不同的\(k\)个数组成递增序列\(a\),使得\((((x \bmod a_1) \bmod a_2) \dots \bmod a_{k - 1}) \bmod a_k = (((x \bmod a_{p_1}) \bmod a_{p_2}) \dots \bmod a_{p_{k - 1}}) \bmod a_{p_k}\),\(p\)是\(a\)的任意排列。
题解: 从\([1,n]\)中选取一个基数pp,再从\([1,n]\)中找\(k-1\)的这个基数\(p\)的倍数即可,最终结果都为\(x\%p\)。
Accept Code:(鬼知道为什么cout就WA了QAQ)
#include <bits/stdc++.h>
using namespace std;
const int maxn=500010,mod=998244353;
typedef long long ll;
int fac[maxn],inv[maxn],n,k,ans;
int qpow (int a,int b) {
int res=1;
while (b) {
if (b&1)res=(1ll*res*a)%mod;
a=(1ll*a*a)%mod;
b>>=1;
}
return res;
}
int c (int n,int m) {
if (n<m) return 0;
return (1ll*fac[n]*((1ll*inv[m]*inv[n-m])%mod))%mod;
}
int main () {
cin>>n>>k;
fac[0]=inv[0]=1;
for (int i=1;i<=n;i++)fac[i]=(1ll*fac[i-1]*i)%mod;
inv[n]=qpow(fac[n],mod-2);
for (int i=n-1;i>=1;i--) inv[i]=(1ll*inv[i+1]*(i+1))%mod;
for (int i=1;i<=n;i++) {
int tmp=n/i-1;
ans=(ans+c(tmp,k-1))%mod;
}
printf("%d\n",ans);
return 0;
}
原文地址:https://www.cnblogs.com/charles1999/p/12988876.html
- React第三方组件3(状态管理之Flux的使用③TodoList中)
- Vue实现百度下拉提示搜索一、前期准备二、代码实现三、实现效果
- React第三方组件3(状态管理之Flux的使用②TodoList上)
- ggplot2玫瑰图案例——星巴克门店分布图
- React第三方组件3(状态管理之Flux的使用①简单使用)
- 用ggplot2画了一个我也叫不上名的炫酷图表
- React技巧8(不再手动绑定this,跟.bind(this)说88)
- 美美的商务范儿——ggplot2蝴蝶图
- 机器学习(三)使用Python和R语言从头开始理解和编写神经网络介绍目录神经网络背后的直观知识多层感知器及其基础知识什么是激活函数?前向传播,反向传播和训练次数(epochs)多层感知器全批量梯度下降
- React第三方组件2(状态管理之Refast的使用⑤LogicRender使用)
- 左右用R右手Python9——字符串合并与拆分
- hdu 1003 Max Sum(最大子窜和)
- React第三方组件2(状态管理之Refast的使用④中间件middleware使用)
- 高维分面应用——ggplot2分面气泡图饼图
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法