首页 > 其他分享 >P8663 [蓝桥杯 2018 省 A] 倍数问题

P8663 [蓝桥杯 2018 省 A] 倍数问题

时间:2024-01-22 14:23:55浏览次数:23  
标签:取模 P8663 int arr 蓝桥 2018 include

又是一道和取模有关的最值问题,因为原问题的规模太大,因此我们可以存储数字取模后的值

最极端的情况就就是三个模k同余的数字相加得到答案,因此每个剩余类只要存三个数字即可

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
#define For(i, j, n) for(int i = j ; i <= n ; ++i)
using namespace std;

const int N = 1e5 + 5, M = 1e3 + 5;

int arr[M][3], n, k;

int main()
{
    scanf("%d%d", &n, &k);
    int x, m;
    for(int i = 1; i <= n; i++)
    {
        scanf("%d", &x);
        m = x % k;
        if(x > arr[m][0])
        {
            arr[m][2] = arr[m][1];
            arr[m][1] = arr[m][0];
            arr[m][0] = x;
        }
        else if(x > arr[m][1])
        {
            arr[m][2] = arr[m][1];
            arr[m][1] = x;
        }
        else if(x > arr[m][2])
            arr[m][2] = x;
    }
    int ans = 0;
    for(int l = 0; l <= k * 2; l += k)
    {
        for(int a = 0; a < k; a++)
        //这里枚举时保证了a<=b<=c,可以节省一些时间,但是要注意,这里必须是小于等于,如果是小于号的话,可能会错过答案
            for(int b = max(a, l - a - k + 1); l - a - b >= b; b++)//l-a-k+1的由来:l - a - b <= k - 1
            {
                int c = l - a - b;
                ans = max(ans, arr[a][0] + arr[b][a == b] + arr[c][(a == c) + (b == c)]);
            }       
    }
    printf("%d\n", ans);
    return 0;
}

 

标签:取模,P8663,int,arr,蓝桥,2018,include
From: https://www.cnblogs.com/smartljy/p/17979934

相关文章

  • CVE-2018-19518复现练习
    概述漏洞概述:imap_open函数在传递邮箱名给ssh之前没有正确过滤接收的参数,导致攻击者可以利用-oProxyCommand参数向IMAP服务器发起命令执行恶意代码影响版本:Ubuntu、Debian、RedHat、SUSE环境搭建cd/CVE-2018-19518docker-composeup-d查看网站的组件直接看页面也没有什么......
  • (区间覆盖问题)P5019 [NOIP2018 提高组] 铺设道路和Educational Codeforces Round 158 (
    区间覆盖问题这里EducationalCodeforcesRound158(RatedforDiv.2)b题和[NOIP2018提高组]铺设道路两道典型题目,本质是相同的。这里由于题目多次出现,特此记录。解题思路:首先我们得对区间做划分,那么划分思路可以是从小到大也可以是从大到小的异常点来做划分(我这是由大到......
  • 蓝桥杯准备---练习日志
    2024-01-17利用Cubemx配置usart中Asyn...和Syn....的意思是什么? 使用串口时报错如下------解决办法:添加st官方提供的串口驱动文件 修改底层printf内部的fputs代码---实现printf函数通过串口输出,需要利用LIB什么的......我猜测这个函数是向某个文件流中写......
  • P8651 [蓝桥杯 2017 省 B] 日期问题
    这道题虽然逻辑很简单,但是坑不少,一不留神就WA了要记得去重+排序#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#include<set>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;stringdate;set<......
  • 蓝桥杯2018省赛次数差
    x星球有26只球队,分别用a~z的26个字母代表。他们总是不停地比赛。在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。 国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?(当然,他不关心那些一次也没获胜的,认为他们在怠工罢了)#include<iostre......
  • 运城学院数学与信息技术学院 2017—2018学年第二学期期末考试
    运城学院数学与信息技术学院2017—2018学年第二学期期末考试程序设计基础试题(A)适用范围:计算机科学与技术专业1701\1702班网络工程专业1703\1704\1705班信息管理与信息系统专业1706班数字媒体技术专业1707\1708班通信工程专业1709\17010班 命题人: 南丽丽       ......
  • P8649 [蓝桥杯 2017 省 B] k 倍区间
    注意要把map[0]设置为1,因为根据题意,长度为1的区间也要算进来 完整代码:#include<iostream>#include<map>#defineintlonglongusingnamespacestd;map<int,int>mp;//记录每个余数出现个数的数组signedmain(){intn,k,ans=0;cin>>n>>k;......
  • P4429 [BJOI2018] 染色
    题面传送门这么牛的结论题!分别考虑每个联通块,不断去掉一度点显然不影响,我们依次给出几个手玩的结论:性质1:如果有奇环,那么无解。只需要给奇环上的集合全部赋值\(\{0,1\}\)即可。性质2:若存在两个环的边不相交,那么无解。考虑一个环,取其对称的两个点,分别记为\(p,q\)。令\(......
  • AT_joisc2018_b 题解
    AT_joisc2018_b题解传送门题意有一个以原点为中心的正方形,有\(n(n\le100)\)条不在正方形内部的线段,你需要画一些不在正方形内部的线段,使得这些线段可以把正方形围起来,要求最小化你画的线段的长度和。思路我们需要画出一条闭合折线,并且能够把正方形包围。考虑我们一定是......
  • BJOI 2018 解题报告
    P4427[BJOI2018]求和谔谔题。这个问题看上去很不可维护,而且让我想到了P5305旧词。结果发现怎么\(k\le50\),那我直接跑\(50\)遍不就好了?P4429[BJOI2018]染色神仙题。考虑先用一些比较简单的情况搞到一些性质继续研究。那我们不妨只对原图黑白染色,得到性质“原图必为二分......