zoukankan      html  css  js  c++  java
  • 网易雷火 笔试 4.25

    第一题:n个1*1*1立方体组成的立体结构(立方体可以悬空),求表面积

    思路:假设初始表面积是6*n,看哪些相交减去即可。

    代码:弄丢了

    第二题:求一个连续楼层的能放的最大广告牌面积。

    思路:很经典的单调栈例题

    代码:https://blog.csdn.net/ranwen2/article/details/70943498

    第三题:有多少数满足以下条件。(可以带前缀0)

    1.由n个十进制数组成。

    2.每三位可以被x整除。

    3.每位上的总和为s。

    (3<=n<=50,s<=9*n,0<=x<=999)

    思路:dp[i][j][k]表示在第i位的情况下,以第i位为末尾的连续三位数为j,目前所有位置上数字总和为k。推一下dp,即可,我做了一些优化。

    代码:

     1 #include <iostream>
     2 #include <cmath>
     3 #include <cstring>
     4 #include <stack>
     5 #include <map>
     6 using namespace std;
     7 typedef long long ll;
     8 const ll maxn = 1e5 + 5;
     9 ll dp[51][1005][460];
    10 bool vis[1005];
    11 ll num[1005];
    12 const ll mod=1000009;
    13 int main() {
    14     ll n, sum, last, w, x, s, i, j, t,k, ss,ans = 0, cnt;
    15     while (cin >> n >> s >> x) {
    16         cnt = 1;
    17         map<ll,ll>mp;
    18         memset(vis, false, sizeof(vis));
    19         memset(dp, 0, sizeof(dp));
    20         for (i = 0; i < 1000; i++)
    21             if (i % x == 0)
    22                mp[i]=cnt, num[cnt++] = i, vis[i] = true;
    23         for(i=1;i<cnt;i++)
    24         {
    25              w=num[i]%10;
    26              t=(num[i]/10)%10;
    27              ss=num[i]/100;
    28              sum=ss*100+t*10+w;
    29             dp[3][i][ss+t+w]=1;
    30         }
    31         for(i=3;i<=n-1;i++)
    32         {
    33             for(j=1;j<cnt;j++)
    34             {
    35                 sum=num[j]%100;
    36                 for(t=0;t<10;t++)
    37                 {
    38                     if(vis[sum*10+t])
    39                     {
    40                         w=mp[sum*10+t];
    41                         for(k=0;k<=450;k++)
    42                         {
    43                             dp[i+1][w][k+t]=(dp[i][j][k]+dp[i+1][w][k+t])%mod;
    44 
    45                         }
    46                     }
    47                 }
    48             }
    49         }
    50         sum=0;
    51         for(i=1;i<cnt;i++)
    52             sum=(dp[n][i][s]+sum)%mod;
    53        cout<<sum<<endl;
    54 
    55     }
    56     return 0;
    57 }

     第四题:大模拟太长了,没做

  • 相关阅读:
    web.xml配置详解
    javascript实现的网页打印
    C#实现新建文件并写入内容
    nodeJs学习过程之认识nodejs
    windows下nodejs与coffeeScript环境搭建
    javascript/css压缩工具---yuicompressor使用方法
    verilog描述表决器的两种方式简易分析
    verilog阻塞与非阻塞的初步理解(二)
    verilog阻塞与非阻塞的初步理解(一)
    FIFO学习心得
  • 原文地址:https://www.cnblogs.com/Carits/p/12773430.html
Copyright © 2011-2022 走看看