首页 > 其他分享 >【每日一题】Problem 414B. Mashmokh and ACM

【每日一题】Problem 414B. Mashmokh and ACM

时间:2023-07-02 19:23:47浏览次数:50  
标签:std long int ACM vector Mashmokh Problem dp

原题

解决思路

  1. 先计算 \([1, n]\) 中的约数集合
  2. \(dp[i][j](i\in [1, n], j\in [1, k])\) 表示第 \(j\) 个数放置 \(i\) 所拥有的可能性
  3. 以此类推,到达 \(k\) 时,计算 \(\sum_{i=1}^{n}dp[i][k]\) 即可
#include <bits/stdc++.h>

int main() {
  int n, k; std::cin >> n >> k;
  std::map<int, std::vector<int>> m;
  m[0] = std::vector<int>(n + 1, 0);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= i; ++j) {
      if (i % j == 0) {
        if (m.find(i) == m.end()) m[i] = std::vector<int>();
        m[i].push_back(j);
      }
    }
    m[0][i] = i;
  }
  long long ans = 0;
  std::vector<std::vector<long long>> dp(
      n + 1, std::vector<long long>(k + 1, 0));
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= k; ++j) {
      if (j == 1) dp[i][j] = 1;
      else {
        for (auto &v : m[i]) {
          dp[i][j] += dp[v][j - 1];
          dp[i][j] %= 1000000007;
        }
      }
      if (j == k) {
        ans += dp[i][j];
        ans %= 1000000007;
      }
    }
  }

  std::cout << ans << std::endl;
  return 0;
}

标签:std,long,int,ACM,vector,Mashmokh,Problem,dp
From: https://www.cnblogs.com/HelloEricy/p/17521220.html

相关文章

  • ACM模式机考准备指南
    1熟练掌握格式化输入输出方法ACM模式需要题目要求,按照规定的格式自己手动写输入和输出的代码,如果没有充分准备,考试的时候就有可能会在输入输出这块卡很久,浪费考试的时间,反之,如果能够掌握各种格式的输入输出方法,则可以让我们在考试的时候快速完成输入输出代码的编写,节省出更多的......
  • 【哈佛cs50 2022】lab3 & problemSet3【ing】
    (1)lab3如何测试每个代码运行所需要的时间?time./sort1sorted5000.txt sort1sort2sort3sorted5000.txt0.037s0.020s0.045ssorted10000.txt0.058s0.050s0.151ssorted50000.txt1.244s2.238s5.637sreversed5000.txt0.088s0.026s0.045srever......
  • 2023ACM暑假训练day 6-字符串
    目录DAY6字符串训练情况简介题DAY6字符串训练地址:传送门训练情况简介题题意:思路:......
  • 2023ACM暑假训练day 5-单调队列 单调栈
    目录DAY5单调队列/栈训练情况简介A题B题C题D题E题未出,题解补F题未出,题解补G题看了cf数据,得wa启发补充内容单调栈MonotoneStack单调栈矩形系列字典序最小贡献法单调队列MonotoneQueueDAY5单调队列/栈训练地址:传送门训练情况简介早上:A、B、C、D题下午:E题(未......
  • Constructive Problem
    ConstructiveProblemtimelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputAsyouknow,anyproblemthatdoesnotrequiretheuseofcomplexdatastructuresisconsideredconstructive.Youare......
  • PACM Team (牛客多校) (DP 01背包, 维度较多)
    题目大意:给出n个物品,物品有4个空间值,然后有一个权值问在不超过最大的空间值时,最大的权值  思路:一开始想了很多其他思路没有想出来开始广搜算法,发现dp可以解决(注意看数据范围,是满足的)遇到奇怪的题,就试试dp,特别在数据范围很小的时候 ......
  • 【每日一题】Problem 489B. BerSU Ball
    原题解决思路排序+双指针#include<bits/stdc++.h>intmain(){intn;std::cin>>n;std::vector<int>a(n+1,0);for(inti=1;i<=n;++i)std::cin>>a[i];intm;std::cin>>m;std::vector<int>b(m+1,0);......
  • 【每日一题】Problem 443B. Kuriyama Mirai's Stones
    原题解决思路两个数组,一个未排序,一个排序;使用前缀和的方式减少时间复杂度#include<bits/stdc++.h>intmain(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);intn;std::cin>>n;std::vector<int>v(n+1,0);f......
  • 【华为机试ACM基础#02】从单向链表中删除指定值的节点(熟悉链表的输入方式,虽然说本题可
    从单向链表中删除指定值的节点输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表的值不能重复。构造过程,例如输入一行数据为:6212325145722则第一个参数6表示输入总共6个节点,第二个参数2表示头节点值为2,剩......
  • 【cs50 2022】lab1 && problem set1
    |lab1|#include<cs50.h>#include<stdio.h>intmain(void){//TODO:Promptforstartsizeintstart_size;do{start_size=get_int("Startsize:");}while(start_size<9);//TODO:Promptforend......