Day13 备战CCF-CSP练习

news/2024/11/13 9:51:45/文章来源:https://www.cnblogs.com/mathblog/p/18537909

Day 13

题目描述

题目分析

大模拟,用栈储存每一个多项式,最后根据导数的加法原则依次求导相加,注意取模。

C++代码

#pragma GCC optimize(3, "Ofast", "inline")
#include <bits/stdc++.h>
#define int long longusing namespace std;
const int N = 100010, MOD = 1e9 + 7;
string oper;
int n, m;
stack<vector<pair<map<string, int>, int>>> heap;
map<string, int> num;
map<string, int> p;bool is_num(string x)
{for (auto s : x)if (!isdigit(s) && s != '-')return false;return true;
}int qmi(int a, int b)
{int res = 1;while (b){if (b & 1)res = res * a % MOD;a = a * a % MOD;b >>= 1;}return res % MOD;
}int to_num(string x)
{int res = 0, flag = 1;for (auto s : x){if (s == '-')flag = -1;elseres = res * 10 + s - '0';}return res * flag;
}void calc(string op)
{auto a = heap.top();heap.pop();auto b = heap.top();heap.pop();if (op == "+"){for (auto it : b)a.push_back(it);heap.push(a);}else if (op == "-"){for (auto it : a)b.push_back({it.first, -1ll * it.second});heap.push(b);}else{vector<pair<map<string, int>, int>> t;for (auto itb : b){for (auto ita : a){pair<map<string, int>, int> tmp;for (auto [k, v] : itb.first){tmp.first[k] = itb.first[k] + ita.first[k];}tmp.second = ita.second * itb.second % MOD;t.push_back(tmp);}}heap.push(t);}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; i++){string s = "x" + to_string(i);p[s] = 0;}getline(cin, oper);getline(cin, oper);for (int i = 0; i < oper.size(); i++){string x = "";while (oper[i] != ' ' && i < oper.size())x += oper[i++];if (x == "+" || x == "-" || x == "*")calc(x);else if (is_num(x)){vector<pair<map<string, int>, int>> c;c.push_back({p, to_num(x)});heap.push(c);}else{auto t = p;t[x]++;vector<pair<map<string, int>, int>> c;c.push_back({t, 1});heap.push(c);}}// auto t = heap.top();// for (auto [y, c] : t)// {//     for (auto [k, v] : y)//         cerr << k << ' ' << v << endl;//     cerr << "c " << c << '\n';// }while (m--){int id;cin >> id;string x = "x" + to_string(id);for (int i = 1; i <= n; i++){string x2 = "x" + to_string(i);int number;cin >> number;num[x2] = number;}// for (auto [y, c] : num)// {//     cerr << y << ' ' << c << '\n';// }int res = 0;for (auto t : heap.top()){auto it = t.first;int c = t.second;if (c == 0)continue;int k = c;for (auto y : it){string w = y.first;int mi = y.second;// cout << w << ' ' << num[w] << ' ' << mi << '\n';if (x == w){if (mi == 0){k = 0ll;break;}else{k = k * qmi(num[w], mi - 1) % MOD;k = k * mi % MOD;}}else{k = k * qmi(num[w], mi) % MOD;}// cout << k << '\n';}res = (res + k) % MOD;}cout << (res % MOD + MOD) % MOD << '\n';}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830625.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OOP实验三

任务1: 源码:1 #pragma once2 3 #include <iostream>4 #include <string>5 6 using std::string;7 using std::cout;8 9 // 按钮类 10 class Button { 11 public: 12 Button(const string &text); 13 string get_label() const; 14 void click()…

鸿蒙NEXT开发案例:转盘1W

【1】引言(完整代码在最后面) 在鸿蒙NEXT系统中,开发一个有趣且实用的转盘应用不仅可以提升用户体验,还能展示鸿蒙系统的强大功能。本文将详细介绍如何使用鸿蒙NEXT系统开发一个转盘应用,涵盖从组件定义到用户交互的完整过程。 【2】环境准备 电脑系统:windows 10 开发工…

开源 - Ideal库 - 常用时间转换扩展方法(二)Qv

合集 - Ideal库 - Common库(2)1.开源 - Ideal库 - 常用时间转换扩展方法(一)11-07:悠兔机场2.开源 - Ideal库 - 常用时间转换扩展方法(二)11-09收起 书接上回,我们继续来分享一些关于时间转换的常用扩展方法。01、时间转日期时间 TimeOnly 该方式是把TimeOnly类型转为Date…

存储器的知识

以W25Q256为例子(外部Flash),结构如下:扇区的内部结构以F10系列为例子 64位代表的是8个字节的数据,一个地址最多可以存储8个字节的数据(double数据类型就是8个字节),4k,16k,64k,32k代表的是地址的总数,主存储块又可以分为很多个页,页里面也有存储的空间大小嵌入式闪存的组成

什么是git,什么是github,git和github的使用

Git实战注意:本项目是学习笔记,来自于哔哩哔哩武沛齐老师的Git实战视频, 网址:【武沛齐老师讲git,看完绝对上瘾!!!】 https://www.bilibili.com/video/BV1ne4y1E7np/?share_source=copy_web&vd_source=2c9a5d5590d3759367594e264ff079c4另外,因为这个博客是我直接…

law Intermediate walkthrough pg

靶场很简单分数只有10分跟平常做的20分的中级靶场比确实简单 我拿来放松的 算下来30分钟解决战斗 nmap 扫到80端口web界面 是个框架 搜exp https://www.exploit-db.com/exploits/52023 他的脚本可能有点问题看不到回显 我们审脚本直接看到漏洞点所在 命令执行 curl -s -d "…

streamlit run执行报错,Invalid value: File does not exist: XXX.py

streamlit run执行报错,Invalid value: File does not exist: XXX.py 在终端执行 streamlit run xxx.py 的时候报错提示 Invalid value: File does not exist: XXX.py 网上众说纷纭,但是我个人的解决方法其实非常简单 在终端中执行的时候会发现中间多了个warning翻译过来就是…

03_muduo_base3

5.6 互斥锁和条件变量的封装 类图该类是封装了互斥锁的一些基本操作,包括互斥锁的初始化、销毁、上锁、解锁等功能。但是实际上使用RAII技术又封装了一个类,那就是MutexLockGuard。这主要也是采取了类似智能指针的封装思路,让互斥锁的生命周期交给操作系统去管理,释放的时机…

B样条(BSpline,即 Basis Spline)

B 样条(BSpline)是一种在计算机图形学、计算机辅助设计、数值分析等领域广泛应用的数学曲线和曲面表示方法。以下是对 B 样条的详细定义: 一、基本概念 B 样条是基于一系列控制点(Control Points)来定义曲线或曲面的。它通过一个特定的基函数(Basis Functions)集合与这些…

实验3 类和对象

实验任务1: button.hpp#pragma once#include <iostream> #include <string>using std::string; using std::cout;// 按钮类 class Button { public:Button(const string &text);string get_label() const;void click();private:string label; };Button::Butto…

【LaTex 2024软件下载与安装教程】

1、安装包 Latex2024: 链接:https://pan.quark.cn/s/1dad34ca4d8f 提取码:5bja 2、安装教程 1) 双击压缩包内intall-tl-windows.bat安装,弹窗安装对话框2) 自动弹出安装窗口,如果弹出以下窗口说明文件夹目录太长或者有中文,建议放磁盘根目录;如果没有弹出…

实现qt 窗口无边框拖拽

无边框拖拽是参考Qt实战6.万能的无边框窗口(FramelessWindow) - Qt小罗 - 博客园的文章,对其代码进行修改而来。 本篇一共会提供本人写的无边框的代码以及Qt实战6.万能的无边框窗口(FramelessWindow) - Qt小罗 - 博客园里面的完整代码供大家参考. 代码使用的话,我是直接让…