【11.9校内测试】【倒计时1天】【ak欢乐赛】【多项式计算模拟】
然而AK失败了,就是因为这道摸你题:(最后一篇题解了吧?QAQ)
Solution
模拟多项式乘法,其中的运算处理很像高精度,不过第$i$位代表的就是$x^i$前面的系数了。
好像去年的时候就讲了表达式的计算(又开始玻璃心了QAQ),开双栈,一个栈表示数字,一个栈表示运算符。然后碰到右括号或者运算级低就弹栈。这里只是把数字的栈变成了多项式的栈而已QAQ
然后该怎么搞就怎么搞,虽然下面的代码并没有处理符号前驱的问题,然而数据中没有出。
作为纪念的摸你题了QAQ
Code
#include<bits/stdc++.h>
#define mod 10007
using namespace std; bool pd(char t) { return isdigit(t) || t == 'x'; }
int level(char t) { if(t == '+' || t == '-') return ; if(t == '*') return ; return ; } char s[], q[];
int tp, tp1, i; struct Node {
int v[];
int siz;
Node operator + (const Node &a) const {
Node c;
memset(c.v, , sizeof(c.v));
c.siz = max(siz, a.siz);
for(int i = ; i <= c.siz; i ++) c.v[i] = (v[i] + a.v[i]) % mod;
while(c.siz && c.v[c.siz] == ) c.siz --;
return c;
}
Node operator - (const Node &a) const {
Node c;
memset(c.v, , sizeof(c.v));
c.siz = max(siz, a.siz);
for(int i = ; i <= c.siz; i ++) c.v[i] = ((v[i] - a.v[i]) % mod + mod) % mod;
while(c.siz && c.v[c.siz] == ) c.siz --;
return c;
}
Node operator * (const Node &a) const {
Node c;
memset(c.v, , sizeof(c.v));
c.siz = siz + a.siz;
for(int i = ; i <= siz; i ++)
for(int j = ; j <= a.siz; j ++)
c.v[i + j] = (c.v[i + j] + v[i] * a.v[j] % mod) % mod;
while(c.siz && c.v[c.siz] == ) c.siz --;
return c;
}
} q1[], zero; Node read() {
Node nd = zero;
if(s[i] == 'x') {
nd.siz = ;
nd.v[] = ;
i ++;
return nd;
} else {
int now = ;
while(isdigit(s[i])) now = now * + s[i] - '', i ++;
nd.v[] = now;
return nd;
}
} void cal() {
Node b = q1[tp1 --], a = q1[tp1 --];
char t = q[tp --];
if(t == '*') q1[++tp1] = a * b;
else if(t == '+') q1[++tp1] = a + b;
else if(t == '-') q1[++tp1] = a - b;
} void push_char(char t) {
if(level(t) >= ) {
while(tp && level(t) <= level(q[tp])) cal();
q[++tp] = t;
} else if(t == '(') q[++tp] = t;
else {
while(q[tp] != '(') cal();
tp --;
}
} int main() {
freopen("simplify.in", "r", stdin);
freopen("simplify.out", "w", stdout);
scanf("%s", s + ); int len = strlen(s + );
s[] = '(', s[++len] = ')';
while(i <= len) {
if(pd(s[i])) q1[++tp1] = read();
else push_char(s[i ++]);
}
printf("%d\n", q1[].siz);
for(int i = ; i <= q1[].siz; i ++) printf("%d\n", q1[].v[i]);
}
【11.9校内测试】【倒计时1天】【ak欢乐赛】【多项式计算模拟】的更多相关文章
- 【11.8校内测试】【倒计时2天】【状压DP】【随机化?/暴力小模拟】
Solution 数据范围疯狂暗示状压,可是一开始发现状态特别难受. 将每一层的奇偶性状压,预处理所有状态的奇偶性.每一层的输入代表的其实可以是下一层某个点可以被从这一层哪些点转移到. 所以枚举每个状 ...
- 【11.5校内测试】【倒计时5天】【DP】【二分+贪心check】【推式子化简+线段树】
Solution 非常巧妙的建立DP方程. 据dalao们说题目明显暗示根号复杂度??(反正我是没看出来 因为每次分的块大小一定不超过$\sqrt n$,要不然直接每个位置开一个块答案都才为$n$. ...
- 【11.1校内测试】【快速幂DP】【带权并查集】【模拟】
Solution $jzy$大佬用了给的原根的信息,加上矩阵快速幂150行QAQ 然而$yuli$大佬的做法不仅好懂,代码只有50行! 快速幂的思想,把m看成要组成的区间总长度,每次将两段组合得到新的 ...
- 【8.30校内测试】【找规律模拟】【DP】【二分+贪心】
对于和规律或者数学有关的题真的束手无策啊QAQ 首先发现两个性质: 1.不管中间怎么碰撞,所有蚂蚁的相对位置不会改变,即后面的蚂蚁不会超过前面的蚂蚁或者落后更后面的蚂蚁. 2.因为所有蚂蚁速度一样,不 ...
- 【10.11校内测试】【优先队列(反悔贪心)】【莫队】【stl的应用??离线处理+二分】
上次做过类似的题,原来这道还要简单些?? 上次那道题是每天可以同时买进卖出,所以用两个优先队列,一个存买进,一个存卖出(供反悔的队列). 这道题实际上用一个就够了???但是不好理解!! 所以我还是用了 ...
- c++11 function bind 测试。
实验小结 1)function 是一个模板类.有函数指针成员.可以看作安全型函数指针. template<typename _Res, typename... _ArgTypes> cla ...
- Python学习总结 11 使用tempest测试OpenStack
1, 什么是Tempest tempest ├── api # API的测试集 ├── cli # OpenStack的命令行工具测试集 ├── common # 一些公共的工具类和函数 ├── sc ...
- 11.14java课堂测试
源代码: import java.*; import java.util.*; import java.io.File; import java.io.FileInputStream; import ...
- 【9.7校内测试】【二分+spfa】【最长上升子序列】【状压DP+贪心(?)】
刘汝佳蓝书上的题,标程做法是从终点倒着$spfa$,我是二分答案正着$spfa$判断可不可行.效果是一样的. [注意]多组数据建边一定要清零啊QAQ!!! #include<iostream&g ...
随机推荐
- 实现开发板与ubuntu的共享--根文件系统NFS--Samba共享【sky原创】
虚拟机要选择桥接,并且禁用有线和无线网卡,开启本地连接,本地连接属性要写如下: ip地址是在连上板子后,windows cmd 下 ipconfig得出的 板子的网线最好连接交换机或者 ...
- STOMP Over WebSocket
Show Table of Contents What is STOMP? STOMP is a simple text-orientated messaging protocol. It defin ...
- Salt Document学习笔记2
配置文件需修改的内容及注意点: Edit the master config file: 1. Uncomment and change the user: root value to your ow ...
- eclipse自动编译
自动编译:对java应用没有什么意义,对web应用来说,当修改了代码时,会自动帮你编译并发布到web容器中去,省的重启web容器了. build:编译,Eclipse的编译是基于时间戳的判断机制的.c ...
- 如何设置font-family
第一部分: 根据font-family的原则,假如客户终端不认识前面的字体,就自动切换到第二种字体,第二种不认识就切换到第三种,以此类推.假如都不能识别就调用默认字体 根据font-family的字体 ...
- 【python】已安装模块提示ImportError: No module named
今天遇到了一个问题,运行代码时出现错误 Traceback (most recent call last): File , in <module> import zmq ImportErr ...
- OI中坑点总结
以下是我个人OI生涯中遇到的坑点的一个小总结,可能是我太菜了,总是掉坑里,请大佬勿喷 1,多重背包的转移的循环顺序 //默认每个物品体积为一(不想打码……) //dp[i]表示占用背包容量i所能获得的 ...
- (四)CXF处理JavaBean以及复合类型
前面讲的是处理简单类型,今天这里来讲下CXF处理JavaBean以及复合类型,比如集合: 这里实例是客户端传一个JavaBean,服务器端返回集合类型: 在原来的项目实例基础上,我们先创建一个实体类U ...
- 优化MVC,实现数据库表的记录的添加、删除、修改、查询。
一.在UserDAO里面重写实体user要调用的方法: 1.查询所有user表中的记录.用getAllUser()方法得到List public class UserDAO { public List ...
- windows Service程序的安装、启动、卸载命令
安装:%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe ServiceTest.exe 启动:Net Start serv ...