当前位置: 首页 > wzjs >正文

西安商城网站制作最大的推广平台

西安商城网站制作,最大的推广平台,聊城公司做网站,二次开发需要什么大佬题解 如果你有深度学习基础的话,那么这道题就很容易想到了,根据深度学习的计算规则,想要计算梯度,先要构建一张计算图,使用二叉树实现,因为已经给了逆波兰表达式,使用栈就可以构建出计算图&…

大佬题解

如果你有深度学习基础的话,那么这道题就很容易想到了,根据深度学习的计算规则,想要计算梯度,先要构建一张计算图,使用二叉树实现,因为已经给了逆波兰表达式,使用栈就可以构建出计算图(二叉树),然后forward正向传播,正向传播的目的是计算出每个结点对应的中间值用来反向传播使用,然后backward反向传播,递归求解到叶子结点然后返回即可。
AC代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MOD = 1e9 + 7;/*----------------- 结点 -----------------*/
struct Node {string op;int l = -1, r = -1;Node() {}Node(string o) :op(std::move(o)) {}Node(string o, int L, int R) :op(std::move(o)), l(L), r(R) {}
};
vector<Node> tree;/*----------------- 工具 -----------------*/
inline bool isOp(const string& s) { return s == "+" || s == "-" || s == "*" || s == "/"; }
inline bool isNumber(const string& s) { return !s.empty() && (isdigit(s[0]) || (s[0] == '-' && s.size() > 1)); }
ll mod_add(ll a, ll b) { a += b; if (a >= MOD) a -= MOD; if (a < 0) a += MOD; return a; }
ll mod_mul(ll a, ll b) { return (a % MOD) * (b % MOD) % MOD; }/*----------------- build -----------------*/
int build_tree(const vector<string>& pf) {stack<int> st;for (const string& tok : pf) {if (isOp(tok)) {int r = st.top(); st.pop();int l = st.top(); st.pop();int id = tree.size();tree.emplace_back(tok, l, r);st.push(id);}else {int id = tree.size();tree.emplace_back(tok);st.push(id);}}return st.top();
}/*----------------- forward -----------------*/
ll eval(int u, vector<ll>& val, const vector<ll>& varVal) {if (val[u] != -1) return val[u];const Node& nd = tree[u];if (nd.l == -1) {                              // 叶子if (isNumber(nd.op))val[u] = (stoll(nd.op) % MOD + MOD) % MOD;else {int idx = stoi(nd.op.substr(1)) - 1; // 关键修正 ↓↓↓val[u] = varVal[idx];}}else {ll L = eval(nd.l, val, varVal);ll R = eval(nd.r, val, varVal);if (nd.op == "+") val[u] = mod_add(L, R);else if (nd.op == "-") val[u] = mod_add(L, -R);else if (nd.op == "*") val[u] = mod_mul(L, R);}return val[u];
}/*----------------- backward -----------------*/
ll backward(int u, int target, const vector<ll>& val) {const Node& nd = tree[u];if (nd.l == -1) {return (!isNumber(nd.op) && (stoi(nd.op.substr(1)) - 1) == target) ? 1 : 0; // 关键修正 ↓↓↓}ll dL = backward(nd.l, target, val);ll dR = backward(nd.r, target, val);ll L = val[nd.l];ll R = val[nd.r];if (nd.op == "+") return mod_add(dL, dR);if (nd.op == "-") return mod_add(dL, -dR);if (nd.op == "*") return mod_add(mod_mul(dL, R), mod_mul(L, dR));return 0;
}/*----------------- main -----------------*/
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, m;cin >> n >> m;cin.ignore();string line, tok;getline(cin, line);istringstream iss(line);vector<string> postfix;while (iss >> tok) postfix.push_back(tok);tree.clear();int root = build_tree(postfix);for (int q = 0; q < m; ++q) {int idx; cin >> idx; --idx;          // 改成 0‑basevector<ll> varVal(n);for (int i = 0; i < n; ++i) {cin >> varVal[i];varVal[i] = (varVal[i] % MOD + MOD) % MOD;}vector<ll> val(tree.size(), -1);eval(root, val, varVal);cout << backward(root, idx, val) % MOD << '\n';}return 0;
}

http://www.dtcms.com/wzjs/6882.html

相关文章:

  • WordPress 熊掌号模板重庆百度seo排名
  • 黔东南建设厅网站百度账号出售平台
  • 网站建设珠海百度下载app安装
  • 淮安网站建设杭州seo优化公司
  • 北京朝阳区网站建设汕头网站建设平台
  • 专业网站建设设计装饰中国去中心化搜索引擎
  • 惠州做网站 百度优化网站推广的优化
  • 网站后台样式模板色盲悖论
  • discuz门户网站模板手机关键词查询的分析网站
  • 网站建设补充协议网络优化的流程
  • 网站制作的核心要点是什么下拉框关键词软件
  • 大连网站制作需要多少钱百度官网首页登录
  • 湖南做网站 e磐石网络seo推广沧州公司电话
  • 制作简历的免费模板网站今天新闻头条最新消息
  • 五金批发网站怎么做什么是互联网营销师
  • 天猫网站怎么做搜索引擎优化百度
  • 网站页面建设方案书模板上海搜索排名优化公司
  • 定制搭建网站长沙网站快速排名提升
  • 网站设计建设百度推广方案
  • 有利于优化的网站建设免费收录软文网站
  • 网站做的漂亮的企业一站式推广平台
  • smartschool 学校网站管理系统新手电商运营从哪开始学
  • 紧固件网站建设湖北网站seo
  • 商洛网站建设3分钟搞定网站seo优化外链建设
  • 怎样做好公司网站重庆seo代理
  • 在哪个网站做注册资本变更线上宣传推广方案
  • 企业建网站开发百度竞价一个月5000够吗
  • 徐州网站建设市场网络推广计划制定步骤
  • 附近培训电脑的地方seo策略
  • 浪子做的阿哲喊麦网站多少百度快照推广效果怎样