zoukankan      html  css  js  c++  java
  • Codeforces 997B Roman Digits【暴力】【枚举】

    缺欠的是做题的思路,当看到这道题发现n是10^9级别,第一反应是得找到一个公式。但怎么找没想出来。

    满足i+j+k+p = n (i,j,k,p分别是1,5,10,50取的个数),我们可以用n^3代价(枚举i,j,k)n比较小的时候的答案,并试着从枚举得到的答案里找到规律。

    事实也确实能从中找到规律,n从12开始就是等差数列了,方差49。

    这题说难不难,但当时卡了很多人。

    缺少的是一种思路吧。

    也确实第一道遇到的半打表ac的题

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 long long n,z,ans;
     4 long long dfs(int x)
     5 {
     6     map<long long,int>ma;
     7     ma.clear();
     8     long long num=0;
     9     for(int i=0;i<=x;i++)
    10     for(int j=0;j+i<=x;j++)
    11         for(int k=0;k+i+j<=x;k++)
    12     {
    13         z=i+j*5+k*10+(x-i-j-k)*50;
    14         if(!ma[z]) {ma[z]=1;num++;}
    15     }
    16     return num;
    17 }
    18 int main()
    19 {    
    20     scanf("%lld",&n);
    21     if(n<=20) ans=dfs(n);
    22     else ans=dfs(20)+(n-20)*49;
    23     printf("%lld
    ",ans);
    24     return 0;
    25 }

    代码是从这里摘的,没有自己写了

    https://blog.csdn.net/qq_37868325/article/details/80879686

  • 相关阅读:
    UVa LA 2965
    UVa LA 3695
    UVa LA 3029 City Game 状态拆分,最大子矩阵O(n2) 难度:2
    Uva LA 3177
    Uva LA 3902
    Uva 11520
    UVa Live 3635
    python学习笔记-day05 字典
    python学习笔记-day04 元组
    python学习笔记 day04 列表增删改查
  • 原文地址:https://www.cnblogs.com/ZhenghangHu/p/9255724.html
Copyright © 2011-2022 走看看