首页 > 其他分享 >2023 暑假集训模拟赛 Day 2

2023 暑假集训模拟赛 Day 2

时间:2023-07-25 20:44:51浏览次数:37  
标签:10 int text number long Day 2023 times 集训

比赛题目共2套,其中初赛题1套,复赛2题。

比赛时间: \(10:50 - 12:00 a.m\)

Part 0x01 过程-Process

\(8:40\,a.m.\) 做初赛题目;

\(10:40\,a.m.\) 拿到题目;

\(10:51\,a.m.\) 先写 \(\text{T2}\),发现是初赛考过的题目,但时限变小;

\(11:20\,a.m.\) 在 \(\text{T2}\) 上花了太久,没调出来,赶紧写 \(\text{T1}\);

\(11:35\,a.m.\) 终于把 \(\text{T1}\) 写完了,估计能过。

\(11:36\,a.m.\) 接着看 \(\text{T2}\),突然发现理解错题目了,但是样例 \(2\) 没过……

\(12:00\,a.m.\) \(\text{T2}\) 发现了一些问题,但是样例 \(2\) 还是没过。

总分 \(= 100pts + 30pts = 130pts\)。

Part 0x02 初赛注意事项-Theory

  1. \(∨\) 代表或运算,即 ||
  2. \(∧\) 代表与运算,即 &&
  3. \(?\) 代表非运算,即 !
  4. 文件型病毒传染的主要对象是 EXECOM 文件
  5. Linux下可执行文件没有后缀名
  6. 田忌赛马思想:
    • 对手必胜,就用最小的马输给对手
    • 对手必败,就用最小的马赢对手
    • 我方必胜,就用最小的马赢对手
    • 我方必败,就用最小的马输给对手
  7. 对拍 \(=\) 造数据程序 \(+\) 暴力程序 \(+\) 你的正解
  8. 如果不用补码思想,把 \(n\) 位二进制最高位当符号位,其他位正常储存,那么表示数字范围为 \([-2^n+1, 2^n-1]\),同时会引发 \(0 \neq -0\) 的 \(\text{BUG}\)
  9. 在 \(n\) 位补码中,数字范围为 \([-2^n, 2^n-1]\),同时 \(0 = -0\) ,加减法无需特判,同时也可以根据最高位判断是否是负数。
  10. 浮点数由尾数和阶码构成。
  11. 只给出前序遍历与后序遍历的情况下无法确认二叉树。

Part 0x03 复赛题目-Problem

T1 最大乘积

题链

暴力枚举 \(i\),使用前缀和优化求和过程即可,

\(\mathfrak{Code\,Here}\)

// g++ "times.cpp" -Wall -std=c++14 -o "times"
// ./"times"

#include <bits/stdc++.h>

using namespace std;

long long a[100010], pre[100010];
vector <long long> ans;
long long Max = -1919810;

long long query(long long L, long long R)
{
    return pre[R] - pre[L-1];
}

int main()
{
    freopen("times.in", "r", stdin);
    freopen("times.out", "w", stdout);

    long long n, l, r;

    scanf("%lld %lld %lld", &n, &l, &r);

    for(long long i = 1; i <= n; i++)
    {
        scanf("%lld", &a[i]);

        pre[i] = pre[i-1] + a[i];
    }

    for(long long i = 1; i <= n; i++)
    {
        Max = max(Max, query(max(i-l, 1ll), i) * query(i, min(n, i+r)));
    }

    for(long long i = 1; i <= n; i++)
    {
        if(query(max(i-l, 1ll), i) * query(i, min(n, i+r)) == Max)
        {
            printf("%lld ", i);
        }
    }

    return 0;
}

时间复杂度 \(O(n)\)

T2 和谐数对

题链

暴力

考场做法,模拟即可。

\(\mathfrak{Code\,Here\,(60pts)}\)

// g++ "number.cpp" -Wall -std=c++14 -o "number"
// ./"number"

#include <bits/stdc++.h>

int getlast(int x)
{
    return x / pow(10, (int)log10(x));
}

bool check(int i, int j)
{
    return (i % 10 == getlast(j)) && (getlast(i) == j % 10);
}

int calc(int n)
{
    int ans = 0;

    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            if(check(i, j) == true)
            {
                ans++;
//                printf("(%d %d)\n", i, j);
            }
        }
    }

    return ans;
}

int main()
{
    int n;

    freopen("number.in", "r", stdin);
    freopen("number.out", "w", stdout);

    scanf("%d", &n);
    printf("%d", calc(n));

    return 0;
}

时间复杂度 \(O(n^2)\)

正经做法

设 \(dp_{i, j}\) 为数字中以 \(i\) 开头并且以 \(j\) 结尾的数的个数,明显有:

\[answer = \sum_{i = 0}^{9}\sum_{j = 0}^{9} dp_{i,j} × dp_{j,i} \]

\(\mathfrak{Code\,Here}\)

// g++ "number.cpp" -Wall -std=c++14 -o "number"
// ./"number"

#include <bits/stdc++.h>

long long dp[20][20];

long long getlast(long long x)
{
    return x / pow(10, (long long)log10(x));
}

long long calc(long long n)
{
    for(long long i = 1; i <= n; i++)
    {
        dp[i % 10][getlast(i)] ++;
    }

    long long ans = 0;

    for(long long i = 0; i <= 9; i++)
    {
        for(long long j = 0; j <= 9; j++)
        {
            ans += dp[i][j] * dp[j][i];
        }
    }

    return ans;
}

int main()
{
    long long n;

    freopen("number.in", "r", stdin);
    freopen("number.out", "w", stdout);

    scanf("%lld", &n);
    printf("%lld", calc(n));

    return 0;
}

时间复杂度 \(O(n)\)

Part 0x04 总结-Summary

  1. 不要死磕,不要死磕,不要死磕(重要的事情说三遍)
  2. 注意代码细节
  3. 存图应使用邻接表
  4. 当数据小的时候,可以使用 打表 解决问题
  5. 考试注意文件名以及一定要测过了样例,没测样例基本 0 分
  6. 可以自己尝试造数据,需要使用 srand(time(0))rand() 函数
  7. 得到 [l, r] 内的一个整数: rand() % (r - l + 1) + l
  8. 可以多写个暴力来跑自己造出来的数据

标签:10,int,text,number,long,Day,2023,times,集训
From: https://www.cnblogs.com/CareyBlog/p/2023_Test2.html

相关文章

  • 集训Day 2
    A题: B题: 比赛开始先整了第一题,由于题面很高级一看就是我写不出正解的样子,就先写了一个暴力,然后开始考虑如何优化,突然开窍啦~前缀和!然后瞎优化了一番,总算过了所有样例(get100points),第二题吗…………看了半天重构了3次思路,还是连样例1都爆零。然后就放弃了好一点的解法选择了......
  • 集训Day 1
    A题: B题: 刚开始看了眼T1觉得简单,就敲了一个暴力(get65)过了所有样例后就直奔T2,T2是拓扑排序的板子,但由于数据就只写了n^2算法(get100)又过了所有样例,信心暴涨(当时想着能AK)但T1由于没写筛法,卒。giao~t1其实很简单就是一个筛法模板(但我居然没看出来!)埃氏筛、欧拉筛均可(当然由......
  • 暑假集训D2 2023.7.25 补题
    D.P1796汤姆斯的天堂梦这道题目非常ex,赛时死活调不出来,思路是对的,容易发现是一个DAG,所以直接DP就好,虽然后面看题解AC了,发现是重边的问题。但还是来记录一下这道ex的题目,警醒一下自己切记注意重边!!如下两份代码,一份爆0,一份AC#include<stdio.h>#include<stdlib.h>#include<s......
  • day119 - spring-获取bean
    获取bean根据id获取上一篇的入门文章讲解的就是根据id获取bean的方式根据类型获取@TestpublicvoidtestIOC(){//获取ioc容器ApplicationContextioc=newClassPathXmlApplicationContext("spring-ioc.xml");//获取beanStudentstudent=ioc.getBean......
  • [省选联考2023] 填数游戏
    [省选联考2023]填数游戏题目描述众所周知,Alice和Bob是一对好朋友。今天,他们约好一起玩游戏。一开始,他们各自有一张空白的纸条。接下来,他们会在纸条上依次写\(n\)个\([1,m]\)范围内的正整数。等Alice写完,Bob在看到Alice写的纸条之后开始写他的纸条。Alice需要保......
  • 2023年7月25日,File类,IO流
    File类1.概述File,是文件和目录路径的抽象表示File只关注文件本身的信息,而不能操作文件里的内容。如果需要读取或写入文件内容,必须使用IO流来完成。在Java中,java.io.File类用于表示文件或目录的抽象路径名。它提供了一组方法,可以用于创建、访问、重命名、删除文件或目录,以及获取......
  • day13
    一、[第五空间2021]alpha101.foremost分离,得到png和jpg,两张图片一样,猜测是盲水印隐写,得到一张类似于flag的图片pythonbwmforpy3.pydecode1.jpg2.pngresult.png2.颜色异或转换一下,得到flag二、messy_traffic1.打开流量过滤HTTP流,发现了文件上传,直接导出HTTP对象文......
  • 学习生理基础 | 记忆的四个环节2——保持 | 2023年7月25日
    小虾米原创作品,转载请注明出处:https://www.cnblogs.com/shrimp-can/p/17580595.html我们都想高效学习,但如何实现呢?网络上充斥着各种记忆、学习的技巧,能给予我们很大的帮助。但我始终认为,要做好一件事,须得“顺势而为”。那对于学习,什么是这个“势”呢?我认为便是人学习的生理和心......
  • 2023长郡集训 动态规划笔记
    动态规划原理何为动态规划?动态规划(\(\text{Dynamicprogramming}\)),简称DP。DP并不是一种算法,与模拟、贪心一样,而是一种解决问题的方式。DP的基本思想为「将给定的问题拆分为一个个规模更小的子问题,直到子问题可以直接解决,返回/保存这个值,再根据方程一步步推出原本问题的答......
  • 重磅来袭 | 2023数字供应链安全大会邀请函(DSS 2023)
    2023数字供应链安全大会(DSS2023)将于8月10日在北京·国家会议中心隆重开幕。本次大会由悬镜安全主办,ISC互联网安全大会组委会、中国软件评测中心(工业和信息化部软件与集成电路促进中心)、中国信息通信研究院云计算与大数据研究所、CCF计算机安全专业委员会联合发起,OpenSCA开源社区、......