比赛链接:牛客编程巅峰赛S1第7场 - 黄金&钻石

文章目录

  • A.牛牛打怪兽 DFS
  • B.牛牛的冰激凌 贪心
  • C.数列求值 矩阵快速幂

A.牛牛打怪兽 DFS

题意
身为屯里第一剑士的牛牛来到训练场里闯关,由于过于勤奋,牛牛的宝剑的耐久度降到了 2 ,这意味着牛牛最多只能打倒两只怪兽,否则将会被淘汰。
训练场的地图可以看作一棵以1为根节点的树,训练场的终点为这棵树的叶子结点,树上的每个结点最多有一只怪兽,结点与结点间的边上没有怪兽。
每一个有怪兽的结点上牛牛都需要打倒怪兽才算安全,并且牛牛一旦选定好打怪路线之后便不能走回头路。
请问牛牛有多少种到达终点且不被淘汰的路径。
输入
第一个参数为 n ,(1≤n≤100,000)
第二个参数为大小为 n-1 的点对 ( u i u_i ui​, v i v_i vi​)的集合,其中 ( u i u_i ui​, v i v_i vi​)表示结点 u i u_i ui​ 与结点 v i v_i vi​之间有一条边,1≤ u i u_i ui​ , v i v_i vi​ ≤n,第三个参数为大小为 n 的 0/1 序列 f ,若 f i f_i fi​为 0 表示i-1结点没有怪兽,否则表示 i-1 结点有怪兽。
返回
一个整数,表示牛牛能到达终点且不被淘汰的路径数。

class Solution {public:
vector<vector<int> >v;
vector<int>vis,val;
int ans;
bool check(int id)
{for(int i=0;i<v[id].size();i++)if(vis[v[id][i]]==0)return 0;return 1;
}
void dfs(int id,int sum)
{if(sum>2)return;if(check(id))ans++;for(int i=0;i<v[id].size();i++){if(vis[v[id][i]]==0){vis[v[id][i]]=1;dfs(v[id][i],sum+val[v[id][i]]);}}
}
int solve(int n, vector<Point>& edge, vector<int>& f)
{ans=0;v.resize(n+1);vis.resize(n+1);val.resize(n+1);for(auto it:edge){v[it.x].push_back(it.y);v[it.y].push_back(it.x);}for(int i=1;i<=n;i++){vis[i]=0;val[i]=f[i-1];}vis[1]=1;dfs(1,val[1]);return ans;
}
};

B.牛牛的冰激凌 贪心

牛牛公司老板让牛牛负责m个冰激凌的运输。运输车的冷库只够装n个冰激凌,一次运输需要t分钟,返回也需要t分钟。每个冰激凌制作好有一个时间。牛牛想知道最短运输完所有冰激凌的时间,以及在时间最短的情况下最少运输次数。

class Solution {public:
vector<int> icecream(int n, int m, int t, int* c, int cLen)
{sort(c, c + m);int remain = m % n;if (!remain) remain = n;int ans =0;for (int i = remain - 1; i < m; i += n) {ans = max(ans, c[i]);ans += 2*t;}return {ans-t, m / n + (m % n != 0) };
}
};

C.数列求值 矩阵快速幂

已知 a 0 = 0 , a 1 = 1 a_0=0,a_1=1 a0​=0,a1​=1, a i = b a i − 1 + c a i − 2 a_i=b a_{i-1}+ c a_{i-2} ai​=bai−1​+cai−2​
(i≥2),现在给你b和c两个系数的值,请你求出 a n a_n an​
除以10^9+7的余数。
( 2 ≤ n ≤ 1 0 18 , 0 ≤ b , c ≤ 1 0 9 ) ( 2 ≤ n ≤ 1 0 18 , 0 ≤ b , c ≤ 109 ) (2 \leq n \leq 10^{18}, 0 \leq b,c \leq 10^9)(2\leq n \leq 10^{18},0\leq b,c \leq 10 9) (2≤n≤1018,0≤b,c≤109)(2≤n≤1018,0≤b,c≤109)

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
const long long mod = 1e9+7;
class Solution {public:
struct Matrix {long long a[3][3];Matrix() { memset(a, 0, sizeof a); }Matrix operator*(const Matrix &b) const {Matrix res;for (int i = 0; i < 2; ++i)for (int j = 0; j < 2; ++j)for (int k = 0; k < 2; ++k)res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]) % mod;return res;}
} ans, base;void init(long long x,long long y) {base.a[0][0] = x; base.a[0][1] = 1;base.a[1][0] = y;ans.a[0][0] =x; ans.a[0][1] = 1;
}void qpow(long long b) {while (b) {if (b & 1) ans = ans * base;base = base * base;b >>= 1;}
}
long long nthElement(long long n, long long x, long long y)
{if(n==0)return 0;if(n==1)return 1;init(x,y);qpow(n-2);return ans.a[0][0]%mod;
}
};

牛客编程巅峰赛S1第7场 - 黄金钻石A-B-C相关推荐

  1. 牛客编程巅峰赛S1第6场 - 黄金钻石王者(总结)

    牛客编程巅峰赛S1第6场 - 黄金&钻石&王者(总结) A:牛牛爱奇数 题意 有一个由n个元素组成的数组,牛牛想要将所有的数都变成奇数(即:将所有的偶数都变成奇数),但是他的操作是:一 ...

  2. 牛客编程巅峰赛S1第2场 - 黄金钻石 1.规律 2.bfs

    链接:https://ac.nowcoder.com/acm/contest/6357/A 来源:牛客网 题目描述 牛牛重新定义了斐波那契数列,牛牛定义f(n) = f(n-1)+f(n+1); f( ...

  3. 牛客编程巅峰赛S1第3场 - 黄金钻石 A.简单题 B.dfs C.并查集

    链接:https://ac.nowcoder.com/acm/contest/6383/A 来源:牛客网 找卧底 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

  4. 牛客编程巅峰赛S1第7场 - 黄金钻石 A.dfs B.dpC.快速幂

    链接:https://ac.nowcoder.com/acm/contest/6631/A 来源:牛客网 题目描述 题意 身为屯里第一剑士的牛牛来到训练场里闯关,由于过于勤奋,牛牛的宝剑的耐久度降到了 ...

  5. 牛客编程巅峰赛S1第6场 - 黄金钻石王者 C.dijkstra

    链接:https://ac.nowcoder.com/acm/contest/6629/C 来源:牛客网 题目描述 牛牛和牛妹在进行一场星球模拟游戏,游戏规则如下: 游戏地图内共有n个星球,共有m条隧 ...

  6. 牛客编程巅峰赛S1第6场 - 黄金钻石王者题解

    牛牛爱奇数 链接:https://ac.nowcoder.com/acm/contest/6629/A 来源:牛客网 题目描述 在牛牛面前放着n个数,这些数字既有奇数也有偶数,只不过牛牛对奇数情有独钟 ...

  7. 算法题解 - 牛客编程巅峰赛S1第3场 - 黄金钻石组

    A. 找卧底 题目描述 牛牛今天和大家玩了一个新游戏,除了牛牛以外还有 n 个人参加游戏,现在这 n 个人中的每个人从 [1, n] 中选择一个数字,保证选出的数字均不重复.牛牛作为第 n + 1 个 ...

  8. 牛客编程巅峰赛S1第2场 - 青铜白银

    A.牛牛扔牌 链接:https://ac.nowcoder.com/acm/contest/6219/A 来源:牛客网 题目描述 牛牛现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成.点数为'1' ...

  9. 牛客编程巅峰赛S2第5场 - 钻石王者 C.Tree III

    牛客编程巅峰赛S2第5场 - 钻石&王者 C.Tree III 题目链接 题目描述 给出一棵有n个节点的节点标号为1~n的有根树(根为第一个节点,并给出从第2个节点到第n个节点的父结点),请你 ...

最新文章

  1. 军用软件概算计价规范_工程造价五算:估算、概算、预算、结算、决算
  2. 如何在Eclipse中使用tomcat9 运行servlet开发简单的动态网页?
  3. Servlet接口中有哪些方法?
  4. Bootstrap4+MySQL前后端综合实训-Day04-AM【新闻管理手机端页面+数据库操作(PowerDesigner 图形化数据库设计软件、SQLyog软件)】
  5. 强烈推荐:SiteServer CMS开源免费的企业级CMS系统!
  6. 提高Objective-C代码质量心机一:简化写法
  7. 写几个函数 输入10个职工的姓名和职工号_Excel函数速查一览表-函数应用案例-信息统计(2)...
  8. linux系统设置服务开机启动3种方法,Linux开机启动程序详解
  9. c语言基本数据类型1,1、C语言基本数据类型
  10. CMD获取当前目录的绝对路径
  11. Microsoft SQL Server 2005安装
  12. 制作Mobi电子书目录
  13. 问卷星刷问卷python_Python+Selenium刷问卷星问卷
  14. STL inserter
  15. Pycharm画图中文显示报错:UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
  16. 首款物联网防火墙himqtt开源
  17. Bmob关联Android,Android如何使用Bmob后端云实现失物招领功能
  18. 【解决方案】Error response from daemon: Conflict. The container name /mongo is already in use by contain
  19. [Python]Spyder常用设置方便使用-持续更新
  20. 数字转换成大写人民币

热门文章

  1. ubuntu复制一个文件夹到另一个文件夹中
  2. 彩票抽奖机模拟器(祝君早中大奖)
  3. 牛叔说电影-人最应该追求的状态是什么?
  4. 如何一步一步成为一个技术领域专家
  5. ChatGPT中文在线官网-如何与chat GPT对话
  6. Iphone画饼图工具类
  7. java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试
  8. 网件R7000刷KOOLSHARE梅林后恢复阿苏斯完全体
  9. 下载电子版数学(1-6年级上册)的python代码
  10. 小狼毫Rime输入法简单配置指南