http://acm.nyist.net/JudgeOnline/problem.php?pid=298

最好还是自己手推一下矩阵式子..不算太难..但是有一些小知识....

首先当然是矩阵的细节..矩阵是不支持交换率的..所以如图的式子乘进去时要放在左边...

还有的比如说:

cmath里的sin函数用的是弧度制..需要把度数/180*M_PI ( M_PI是cmath里定义的常数π );

double在取固定小数位的时候小负数四舍五入会出现-0.0之类的情况,可以自己const一个小数eps加上去.

代码如下

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=;
const double eps=1e-;
int n,m;
double a[maxn][]={};
double b[][]={};//初始
double c[][]={};//添加
double e[][]={};//结束
void doit(int k){
if(k==){
for(int i=;i<=;i++){
for(int j=;j<=;j++){
b[i][j]=c[i][j];
}
}
}else{
memset(e,,sizeof(e));
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int w=;w<=;w++){
e[i][j]+=c[i][w]*b[w][j];
}
}
}
for(int i=;i<=;i++){
for(int j=;j<=;j++){
b[i][j]=e[i][j];
}
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%lf%lf",&a[i][],&a[i][]);
}double x,y;
for(int i=;i<=m;++i){
memset(c,,sizeof(c));
char ch;
scanf("%s",&ch);
if(ch=='M'){
scanf("%lf%lf",&x,&y);
c[][]=1.0;c[][]=1.0;
c[][]=1.0;c[][]=x;c[][]=y;
}else if(ch=='X'){
c[][]=1.0;c[][]=-1.0;c[][]=1.0;
}else if(ch=='Y'){
c[][]=-1.0;c[][]=1.0;c[][]=1.0;
}else if(ch=='S'){
scanf("%lf",&x);
c[][]=x;c[][]=x;c[][]=1.0;
}else{
scanf("%lf",&x);
c[][]=cos(x/*M_PI);c[][]=-sin(x/*M_PI);
c[][]=sin(x/*M_PI);c[][]=cos(x/*M_PI);
c[][]=1.0;
}
doit(i);
}
for(int i=;i<=n;i++){
x=a[i][]*b[][]+a[i][]*b[][]+*b[][];
y=a[i][]*b[][]+a[i][]*b[][]+*b[][];
printf("%.1f %.1f\n",x+eps,y+eps);
}
return ;
}

NYOJ 298 点的变换 矩阵乘法的更多相关文章

  1. NYOJ 298 点的变换

    题目链接:298 点的变换 这题放在矩阵快速幂里,我一开始想不透它是怎么和矩阵搭上边的,然后写了个暴力的果然超时,上网看了题解后,发现竟然能够构造一些精巧的矩阵来处理,不得不说实在太强大了! http ...

  2. OpenGL学习进程(12)第九课:矩阵乘法实现3D变换

    本节是OpenGL学习的第九个课时,下面将详细介绍OpenGL的多种3D变换和如何操作矩阵堆栈.     (1)3D变换: OpenGL中绘制3D世界的空间变换包括:模型变换.视图变换.投影变换和视口 ...

  3. CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network

    from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...

  4. NYOJ298 点的变换 【矩阵乘法经典】

    任意门:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=298 点的变换 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 ...

  5. NYOJ 298

    利用矩阵来做变换,参考Max大神的思想的,虽然不是同一道题. ----------- 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置.操作有平移.缩放.翻转和旋转    这里的操 ...

  6. 有关CUBLAS中的矩阵乘法函数

    关于cuBLAS库中矩阵乘法相关的函数及其输入输出进行详细讨论. ▶ 涨姿势: ● cuBLAS中能用于运算矩阵乘法的函数有4个,分别是 cublasSgemm(单精度实数).cublasDgemm( ...

  7. 使用blas做矩阵乘法

      #define min(x,y) (((x) < (y)) ? (x) : (y)) #include <stdio.h> #include <stdlib.h> # ...

  8. 矩阵乘法code

    VOJ1067 我们可以用上面的方法二分求出任何一个线性递推式的第n项,其对应矩阵的构造方法为:在右上角的(n-1)*(n-1)的小矩阵中的主对角线上填1,矩阵第n行填对应的系数,其它地方都填0.例如 ...

  9. luogu P4719 【模板】动态 DP 矩阵乘法 + LCT

    方法二:LCT+矩阵乘法 上文中,我们用线段树来维护重链上的各种矩阵转移. 第二种方法是将树链剖分替换为动态树. 我们知道,矩阵乘法 $\begin{bmatrix} F_{u,0} & F_ ...

随机推荐

  1. 51Nod - 1006 最长公共子序列Lcs模板

    给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的).   比如两个串为:   abcicba abdkscab   ab是两个串的子序列,abc也是,abca也是,其中abca是这 ...

  2. h5 canvas动画,不知道谁写的

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. 读书笔记 ~ Nmap渗透测试指南

    记录Nmap选项及脚本使用,仅供参考... 除了端口扫描,好像其它脚本都比较鸡肋,用途感觉应该没有专用的小工具好用,不过还是可以看看,选项和脚本还是相当的丰富的. Nmap 使用帮助 starnigh ...

  4. NYOJ 1012 RMQ with Shifts (线段树)

    题目链接 In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each q ...

  5. ubuntu之安装pycharm编辑器

    pycharm是Java写的,运行需要Java环境. 安装java jdk sudo add-apt-repository ppa:webupd8team/java sudo apt-get upda ...

  6. svn add --no-ignore

    提交新代码时:svn add --no-ignore  /dir   不加的话可能会漏提交某些依赖或文件. Svn st -q --no-ignore. 提交时不需要加

  7. React 16 源码瞎几把解读 【三 点 二】 react中的fiberRoot

    〇.先来看看常用的常量 NoWork = 0 noTimeout = undefined HostRoot = 3 NoContext = 0b000; AsyncMode = 0b001; Stri ...

  8. 013 GC机制

    本文转自:https://www.cnblogs.com/shudonghe/p/3457990.html 最近还是在找工作,在面试某移动互联网公司之前认为自己对Java的GC机制已经相当了解,其他面 ...

  9. laravel入门教程

    参考地址:https://github.com/johnlui/Learn-Laravel-5/issues/16

  10. Oracle数据库,基础知识

    1.Oracle的五大约束条件: 1 主键  primary key2 外键  foreign key,3 唯一  unique,4 检测  check5 非空  not null 实例运用: -- ...