Educational Codeforces Round 108 (Rated for Div. 2)(A-D)

简介: A. Red and Blue Beans

A. Red and Blue Beans


题意: 你有红色球n个,蓝色球m个,假设你可以用无数个背包,每个背包里最少放一个红球和篮球,求背包中红色球和蓝色球相差最大个数的最小值。


思路:模拟着放,每个包都尽量按比例放n/m,然后判断差是否在K以内。


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t,i,j,n;
    cin>>t;
    while(t--){
        int a,b,c;
        cin>>a>>b>>c;
        int ans=max(a,b)%min(a,b)==0?max(a,b)/min(a,b):max(a,b)/min(a,b)+1;
        if(ans-1<=c){scYES;}
        else scNO;
    }
    return 0;
}


B. The Cake Is a Lie


题意:起点是(1,1),有两种走法,一种是向右走,需要和横坐标一样大的花费,一种是向下走,需要和纵坐标一样大的花费,求最后的花费是否为k。


思路:其实一开始就觉得它的花费是定值,然后推花费的时候推错了,其实既然怎么走都是一样的花费,那我就走一条路求花费就行了,看别人的式子那么简单就一行就我模拟跑的


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t,i,j;
    cin>>t;
    while(t--){
            int n,m,k;
            cin>>n>>m>>k;
            int ans1=0;
            for(i=1;i<=n-1;i++){
                ans1+=1;
            }
            for(j=1;j<=m-1;j++){
                ans1+=i;
            }
            if(ans1==k){
                scYES;
            }
            else {
                scNO;
            }
    }
    return 0;
}


C. Berland Regional


题意:有n位同学,分别来自不同的学校,有不同的编程水平,每个学校可以派出n个队,求当每个队人数为k时,每个学校派出的队伍的编程水平总和。


思路:首先开个结构体先按照学校排序再按分数排,观察规律,不难发现如果学校的人数%每个队的人数=0时,即可全员出动,那么ans【k】就等于学校总人数的和,否则,每个队都会剩下一部分人无法组队,然后按照学校遍历,再按照人数遍历对答案有贡献的值即可(就是能派出的队伍),估摸着复杂度不会t,还可以用前缀和优化一下。


#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2*1e5+100000;
struct node {
    int u;
    int s;
}mo[maxn];
int u[maxn];
int ans[maxn];
int sum[maxn];
bool cmp(node a,node b){
    if(a.u==b.u){
        return a.s>b.s;
    }
    else {
        return a.u<b.u;
    }
}
signed main()
{
    int t,i,j,n,q;
    scanf("%lld",&t);
    while(t--){
            memset(ans,0,sizeof(ans));
           map<int ,int >m1;
scanf("%lld",&n);
           for(i=0;i<n;i++){
                scanf("%lld",&u[i]);
                mo[i].u=u[i];
                m1[u[i]]++;
           }
           for(i=0;i<n;i++){
                scanf("%lld",&mo[i].s);
           }
           sort(mo,mo+n,cmp);
           int cnt=1;
           for(i=0;i<n;){
                int js=m1[cnt++];
                sum[0]=0;
                for(int d1=0;d1<js;d1++) {
                    sum[d1+1]=sum[d1]+mo[i+d1].s;
                }
                for(int k=1;k<=js;k++){
                    if(js%k==0) ans[k]+=sum[js];
                    else ans[k]+=sum[(js/k)*k];
                }
                 i+=js;
           }
            for( q=1;q<=n-1;q++){
                    printf("%lld ",ans[q]);
            }
printf("%lld\n",ans[q]);
    }
    return 0;
}


D. Maximum Sum of Products


题意:给你两个数组a和b,它的总价值是相同位置相乘的和(a1×b1+a2×b2…这样),然后可以操作一次,翻转a数列的一个子区间,问翻转哪段子区间可以得到最大的价值。


思路:大佬说像区间dp,其实有点类似之前校赛做过的一道题,其实就是先选定一个点,然后扩大他们的左区间和右区间长度,那么他的翻转其实只有最外面的改变了  


20210503164951427.png


#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=5005;
signed  main()
{
    int n,i,j,k,a[maxn],b[maxn],sum=0;
    cin>>n;
    for(i=0;i<n;i++)       cin>>a[i];
    for(i=0;i<n;i++)       cin>>b[i];
    for(i=0;i<n;i++)       sum+=a[i]*b[i];
    int ans=sum;
    for(i=0;i<n;i++){
        int m1=sum;
        for(j=i-1,k=i+1;  (j<n&&j>=0)&&(k<n&&k>=0);  j--,k++){
            m1-=a[j]*b[j]+a[k]*b[k];
            m1+=a[j]*b[k]+a[k]*b[j];
            ans=max(ans,m1);
        }
        m1=sum;
         for( j = i, k = i + 1;  (j<n&&j>=0)&&(k<n&&k>=0);   j--, k++){
            m1 -= a[j] * b[j] + a[k] * b[k];
            m1 += a[j] * b[k] + a[k] * b[j];
            ans = max(ans, m1);
        }
    }
    cout<<ans<<endl;
    return 0;
}


相关文章
|
API Python Windows
将Py转为exe文件
今天我要给大家介绍一种非常方便的方法,可以将Python文件打包成可执行的exe文件。你不用担心用户是否安装了Python环境,只需要一个点击,你的程序就能在任何Windows电脑上运行了!,当然在进行文件打包时,我们总会遇到很多问题,例如某模块未打包进入文件,导致exe文件无法使用,接下来,我会一点一点进行解决.此工具我会出一个专栏,这是工具1.0版本的,只能打包,只包含基础库的py文件,后续会一步步优化,包含自定义打包文件的小图标,文件名,将音乐或其他第三方库模块进行打包。注意,最终为一个GUI工具
将Py转为exe文件
|
4天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
14天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
8天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
572 211
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
229 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
811 59
|
6天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1139 157
|
6天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
483 109