9.18考试总结

9.18考试总结

现在发好像有点晚了不过还是要发一下

漂亮字串

其实是一道简单的题,当时没有仔细想每一种情况就没有做出来

实际上一种种情况排除就出不多了o(1)算法值得拥有

这种题就没有必要放代码了

Set

这个题目最开始还是比较暴力,因为涉及到质因数的问题,也就是说一个数可能有多个质数组成,这些质数就可能将其他数字所在的集合串在一起。

当时还没有想到在求出质数的时候就顺便合并的想到没有实现方法这里就要用到并查集来帮助合并,可以从一定程度上减小合并过程中的时间复杂度

弄清楚这一点以后基本就敲定是水题了

#include<bits/stdc++.h>
#define open(s) freopen(s".in", "r", stdin); freopen(s".out", "w", stdout);
#define IL inline
#define ll long long
#define ull unsigned long long
#define max(a, b) a > b ? a : b;
#define min(a, b) a < b ? a : b;
using namespace std;

int a, b, p, n;
bool pd[100010];
int c[20000], lenc;
int f[100010];

IL int read();
IL void primes();
IL int find(int);
IL void merge(int, int);

int main()
{
//  open("set");
    a = read(); b = read(); p = read();
    n = b - a + 1;
    for (int i=1; i<=b; ++i)
        f[i] = i;
    primes();
    for (int i=1; i<=lenc; ++i)
    {
        int j=0;
        while (j*c[i] < a) j++;
        while (c[i]*(j+1) <= b)
        {
            merge(c[i]*j, c[i]*(j+1));
            j++;
        }
    }
    int ans = 0;
    for (int i=a; i<=b; ++i)
        if (f[i] == i)
            ans++;
    cout << ans;
    cout << endl;
    return 0;
}

int find(int x)
{
    return f[x] == x ? x : find(f[x]);
}

void merge(int x, int y)
{
    int r = find(x), l = find(y);
    if (r != l)
        f[l] = r;
}

void primes()
{
    pd[1] = pd[0] = 1;
    for (int i=2; i<=b; ++i)
    {
        if (pd[i]) continue;
        if (i >= p) c[++lenc] = i;
        for (int j=i; j<=b/i; ++j)
            pd[j*i] = 1;
    }
}

int read()
{
    int i=1, j=0;
    char x = getchar();
    while (x < '0' || '9' < x)
    {
        if (x == '-') i = -1;
        x = getchar();
    }
    while ('0' <= x && x <= '9')
    {
        j = j * 10 + x - '0';
        x = getchar();
    }
    return i*j;
}

Prison

这个是一个区间DP跟石子合并差不多没做只要将初始的情况预处理一下其实也并不能

考试的时候主要没有想到要将分割好的结果以前缀和的方式存起来,直接将分割后的结果逐个合并就可以达到题目要求,所以考试的时候就靠暴力拿分可惜没有拿到。

for (int k=2; k<=q; ++k)
        for (int i=1; i<=q-k+1; ++i)
        {
            int j = i + k - 1;
            for (int t=i; t<j; ++t)
                if(!f[i][j]||f[i][j]>f[i][t]+f[t+1][j]+b[j]-b[i-1]+j-i-1)
                    f[i][j] = f[i][t]+f[t+1][j]+b[j]-b[i-1]+j-i-1;
        }

因为当时没有想到这种解法所以转移方程自然也就没有想出来,在提供了这种方法以后自然还是可以想出来的

Tree

神仙题,还没有到我能够解出的地步。

总得来说面对数学题还是有很大的不足,需要强化这一方面,手推公式,手算规律都比较重要。对新学的知识在运用上有很大问题,还需要题目的练习才能熟练运用。要加强对于算模板的理解

原文地址:https://www.cnblogs.com/rendex/p/9678691.html

时间: 2024-08-17 17:30:09

9.18考试总结的相关文章

9.18考试 第一题count题解

这道题说起来挺可惜的,当时纠结是用常数大但有可能减少递归层数的模还是用常数小但递归多的回溯纠结了好半天,最终错误的选择了摸.导致T了20分,改成回溯就A了. 先分析一下性质,我在考试的时候打表发现在数据范围内因子最多有240个,因此有可能是通过枚举因子进行计算,然后如果说对于一个块他的确可以把一棵树分为几块方法只有一种(不要问我为什么,我也不知道怎么证,但的确如此)那么我们的最坏复杂度就是O(240*n),比理论最大复杂度还多了一倍,这也是为什么当时我自己预估60分的原因,然而这就很尴尬了,这的

9.18考试 第二题Dinner题解

当时初步感觉是一个类似动归或者贪心的神题,然而由于本题已经给出顺序,贪心貌似并没有什么道理,所以放弃贪心.然后又由于这是一个环的问题,我想到了"合并石子"那种环转链的思路,然后就是一个O(n^2*m)的近似背包的打法,虽然没有去打,但应该可行吧-- 然后我又发现这道题貌似可以二分答案来进行check,然后我们就需要去枚举每一次的起始点,并进行模拟,然后加了一个剪枝即如果当前点的前缀和大于当前check的值,说明我们已经在给第一个点第一份菜单时给了他第二份菜单,而这又是不可行的,否则我们

2019.3.18考试&amp;2019.3.19考试

2019.3.18 C O D E T1 树上直接贪心,环上for一遍贪心 T2 正反都做一遍DP T3 观察到顺序不影响答案,分块打标记 2019.3.19 肥肠爆芡,因为沙茶博主昨天在学校的煞笔食堂吃坏了肚子,所以这场考试咕咕了 我佛了 一定补这两场.jpg 原文地址:https://www.cnblogs.com/ydnhaha/p/10558495.html

6.18 考试总结

QAQ 没有去考大视野的题目觉得非常的不开心 QAQ 然后被硬塞了一套非常水的题目 上午快结束还莫名其妙自己的电脑的电源掉了QAQ 那么就没有代码了QAQ不过都拍过问题不大QAQ 第一题 首先我们发现这是个裸的块状链表练习题 但是回想了一发发现自己不怎么会写块状链表 YY了一下觉得块内维护一个链表好像时间复杂度也是O(n*sqrt(n)) 大概码了一个多小时吧,链表的边界什么的讨论起来有些麻烦 一边拍一边改掉了QAQ 具体做法是这样的: 我们考虑设S(i,k)表示前i个块k这个值出现的次数 不难

2019.10.18考试解题报告

总结 期望得分:\(100 + 100 + 10\) 实际得分:\(0 + 20 + 10\) 完美. 今天的考试格外完美,\(T1\)做了*\(2.5h\),最后换来了\(0\)分的好成绩,史无前例,美妙绝伦,我竟然不删调试,做得?好. \(T2\)是个好题,是个好阅读题,\(n\)和\(m\)写反了,样例给的是\(n\)和\(m\)相等的情况,最终完美\(100->20\),我竟然这么粗心,题目竟然没读好,做得?好. \(T3\)没时间了,都耗在\(T1\)上了,可惜\(T1\)还没有分,做

[9.18考试] antipalindrome

题意:给你两个整数 n 和 m ,计算字母表大小为 m ,长度为 n ,不包含长度大于1的回文子串的字符串个数 题解: 规律+快速幂 一个字符不能和它前面两个字符相等,这样就构不成最小的回文,那么更大的也构不成 所以对于第一个字符有m种,第二个字符m-1种,后面的都是m-2种 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorith

5.18 考试小记

绝望的比赛.又一次爆零-- 上来读完了三道题发现都没有什么最最基础的暴力,基本第一遍遛完所有题目测得分是0.第二题看着无比眼熟,但是忘记了具体打法了,但是记得当时这道题我是打出来暴力分了的.由于第一眼看上去都没有什么分,于是决定按照题目编号1.2.3的顺序做题.第一题看上去像是毒瘤数据结构,由于没有给最基础暴力分,想先直接做只有第一种操作的部分分,由于是颜色计数问题而且在树上,想到的就是主席树,并没有想到莫队算法,然后发现怎么处理都处理不出来,想尝试这bitset+树剖,但是并不会用bitset

2019.08.18考试报告

早上和skyh立flag:它在11机房虐场,我在10机房虐场.然而它考了rk1,我只拿到了rk3. T1 wxh学长讲的原题,13分钟打完正解+暴力+对拍拿到100分. T2正解复杂度$ O(n*log2(n)) $,我打的程序多了一个log,但还是可过的. 打完暴力后再打的正解,似乎很难实现? 调了1h左右,对怕出了错,发现算法需要二分找边界,所以直接先弃下去打T3了. T3码了一个dfs成功拿到10分... T2最后终于调过去啦,最后为了求稳进行了测试点分治最后WA了80. 在徐嘉一的帮助下

三级网络技术备考

1.基础准备 文档地址:打印地址 1.1 题库 买一本三级网络技术题库或者是题库软件(20 元左右),不需要买更多,总之有成套的题可以做就行.真题目前大概有二十套左右. 1.2 二进制转换 应该学过 网络技术用到的一般是八位二进制数.也就是 0 ~ 255,即 0000 0000 ~ 1111 1111(每四位空一格便于观察) 我做题前在草稿纸上先这样画 ? 这样,比如说我看见 1001 1000 这个数,就知道这是 128+16+8 对应的数. 反过来,十进制转换二进制也可以利用这个简图.还有