首页 > 其他分享 >20240519刷题总结

20240519刷题总结

时间:2024-05-19 19:42:03浏览次数:19  
标签:总结 last int d% 枚举 20240519 include dp 刷题

T1(数学化审题)

541。
观察到其实和最初功率没有关系,功率就是个系数,于是可以把
系数提出来。于是定义f[i]为功率为1,i~n最长信息。
直接转移就好。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 100010;

int n, k, c, w;
double f[N];
int a[N], b[N];
int main()
{
    freopen("broadcast.in", "r", stdin);
    freopen("broadcast.out", "w", stdout);
    scanf("%d%d%d%d", &n, &k, &c, &w);
    for (int i = 1; i <= n; i ++ ) scanf("%d%d", &a[i], &b[i]);
    for (int i = n; i; i -- )
    {
        f[i] = f[i + 1];
        if (a[i] == 1) f[i] = max(f[i], b[i] + ((double)1 - 0.01 * k) * f[i + 1]);
        else f[i] = max(f[i], ((double)1 + 0.01 * c) * f[i + 1] - b[i]);
    }
    
    
    printf("%.2lf\n", w * f[1]);
    fclose(stdin);
    fclose(stdout);
    return 0;
}

T2(线性组合,同余处理,变量枚举,数据反推)

257。
这里首先考虑枚举啊。只要枚举my,就可以一块计算,但是这样有重复,啥时候重复呢?

注意到,n的范围很小,可能往n去考虑。这里发现my%n一致的话,可以一块算啊,大的my没有用,在算x的情况算到了。于是处理dp[i]。
这样答案就累加(q - f[i]) / n + 1。+1是x=0的情况。思想上,多个量考虑枚举,范围反推想法。可以考虑同余。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100010;

typedef long long LL;

LL dp[N];
LL n, m, k;

int main()
{
    scanf("%lld%lld%lld", &n, &m, &k);
    
    for (int i = m % n, last = 0; i != 0 && dp[last] < k && !dp[i]; i = (i + m) % n)
    {
        dp[i] = dp[last] + m;
        last = i;
    }
    LL ans = k / n; //提前处理%n=0
    for (int i = 0; i < n; i ++ )
        if (dp[i] && dp[i] <= k)
        ans += (k - dp[i]) / n + 1;
    
    cout << k - ans << endl;
    return 0;
}

T3(方差,变量枚举)

先把方差化成好算的形式:

这样发现俩变量,处理不了。于是就把他作为一维状态。

二元组,枚举一个

dp维护平方和,easy。
一开始写挂的原因是平方和应该最小。取成max了。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>

using namespace std;

const int N = 40, M = 2010;

int f[N][N][M];
int n, m;
int sum;
int w[N][N];

int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= m; j ++ )
        {
            scanf("%d", &w[i][j]);
            sum = max(sum, w[i][j]);
        }
    memset(f, 0x3f, sizeof f);
    f[0][1][0] = 0;
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= m; j ++ )
            for (int k = 0; k <= sum * (i + j - 1); k ++ )
            {
                f[i][j][k] = min(f[i - 1][j][k - w[i][j]], f[i][j - 1][k - w[i][j]]) + w[i][j] * w[i][j];
            }
    
    int res = 0x3f3f3f3f;
    for (int k = 0; k <= sum * (n + m - 1); k ++ )
        if (f[n][m][k] < 1e9) res = min(res, (n + m - 1) * f[n][m][k] - k * k);
    
    printf("%d\n", res);
    return 0;
}

T4(分层图,dp,搜索及其联系)

多变量,想到设0/1状态。

这个转移方程有环,处理不了。但是,我们可以升维破坏,就是按照最短长度取转移(其实就是答案,神奇吧),这其实就是搜索!!!,这就是在做最短路,bfs了。
从图论角度,我们把每个点拆成了两个点,只不过这个转移方程有环,那我们求的其实就是最短路,这跑bfs就行。这其实就是分层图

扩展:边权不为1(\(最短路dijkstra\)), 最多撞k次(\(T1048\))

标签:总结,last,int,d%,枚举,20240519,include,dp,刷题
From: https://www.cnblogs.com/qinyiting/p/18200617

相关文章

  • stm32f103c8t6使用bootloader进行ymodem下载和app程序测试,部分总结(暂未测试中断向量偏
    bootloader程序部分(功能测试)print_boot_message();/*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/uint8_tkey_get_state;while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/key_get_state=g......
  • salesforce零基础学习(一百三十七)零碎知识点小总结(九)
    本篇参考: https://help.salesforce.com/s/articleView?id=release-notes.rn_lab_conditional_visibiliy_tab.htm&release=250&type=5https://help.salesforce.com/s/articleView?id=release-notes.rn_automate_flow_builder_automation_lightning_app.htm&release=......
  • 鲜花 #1 2023 年总结
    \(2023\)的最后一天,该总结一下这一年了。对我来说,\(csp2023\)成为了一种最独特的回忆。虽然最终的成绩并不理想(见csp2023游记),但是,这也是一种回忆罢了。我们回首\(2023\),展望\(2024\)。\(2023\),我第一次参加了\(csp\),退役,回归文化课,参加学校缤纷节,第一次住校,第一次\(\do......
  • STL | vector操作总结
    vector随机访问在序列末尾插入和删除元素为常量时间,而在中间插入和删除元素需要线性时间介绍vector为可变长的数组(动态数组),定义的vector数组可以随时添加和删除元素当vector容量不足以容纳新增元素时会扩容为两倍(不同编译器有不同的实现,GCC以两倍扩容),需要将元素复制到新开辟......
  • 「比赛总结」CF Round 834 Div.3 比赛总结
    比赛链接最后AC了\(6\)题。首先开局拼手速过了前三题。然后一眼没有瞪出来D,就写了个随机化,然后交上去发现TLEontest#3,发现随机化的时候阙值取太大了,然后就把阙值改小了,然后交上去发现WAontest#3,这也太不牛了吧!于是赶紧跳了。然后看到E,这不是个傻逼题吗?严格小于......
  • 借一道流量取证题总结一下空白密文的解码姿势
    引言公司内部培训的一道题目,比较有意思,主要是复习一下空白密文的解码思路,算是脑洞的一种;流量取证的常规做法,还有AES的一段往事......题目┌───────────────────────────────────────────────────┐│......
  • 最近参加面试的一个总结
    多线程的理解thread和task的区别委托和事件的区别IOC的概念以及优劣势反射的基本概念以及优劣势aop的概念以及使用场景装箱拆箱的基本概念?如何优化装箱拆箱DI依赖注入的生命周期概念以及使用场景一个系统如果不能写入cookie,然后要通过其他怎么授权?微信扫描登录是如何授权的什么时......
  • Redis总结
    【一】redis基础【二】python连接redis【三】Redis连接池【四】redis之字符串【五】redis之哈希类型【六】redis之list类型【七】redis通用操作【八】django中使用redis......
  • 0_刷题中的基础
    目录基础练习题具体题目二叉树排序双指针法类型1:一个头指针,一个尾指针,不断缩小搜索空间类型2:快慢指针法链表动态规划二分搜索排序数组排序基于交换的排序冒泡排序快速排序基于插入的排序插入排序基于选择的排序选择排序二路归并排序链表排序搜索二分搜索二叉树的遍历深度优先遍历......
  • 学习imx6dl遇到的困难总结 持续更新 很痛也很傻
    最近进了新公司开始鼓捣imx6,虽然说之前弄过imx8的应用层,但是底层移植完全不一样简直太无助了。首先介绍下故事背景,拿到一个imx6dl的板子,是基于飞凌的板子改的。网上资料又少,一无所知的我开始了踩坑之路。拿到板子和一套飞凌板子送的源码,本以为是简单的uboot移植,还是厂家给的代码......