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. .NET中的异常和异常处理

    .NET中的异常(Exception) .net中的中异常的父类是Exception,大多数异常一般继承自Exception. 可以通过编写一个继承自Exception的类的方式,自定义异常类! 异常 ...

  2. 游戏的物理和数学:Unity中的弹道和移动目标提前量计算

    下载地址:https://www.jianguoyun.com/p/DZPN6ocQ2siRBhihnx8 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺 ...

  3. layui实现类似于bootstrap的模态框功能

    以前习惯了bootstrap的模态框,突然换了layui,想的用layui实现类似于bootstrap的模态框功能. 用到了layui的layer模块,例如: <!DOCTYPE html> ...

  4. 我的Apache又挂了之apache错误:server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName'

    表示物理机装Apache然后有时候关机会忘了关闭Apache然后长此以往会导致各种Apache起不来的缘故,上一次已经出现过一次.今天又出现了 再次记录一下解决的方法. 1.查看错误日志 /var/l ...

  5. tp5 r3 一个简单的SQL语句调试实例

    tp5 r3 一个简单的SQL语句调试实例先看效果核心代码 public function index() { if (IS_AJAX && session("uid&quo ...

  6. 【BubbleCup X】F:Product transformation

    按照题解的规律,首先能看出前面每个数幂次的性质. 然后发掘约数的性质 #include<bits/stdc++.h> ; typedef long long ll; using names ...

  7. PyQt: eg2

    #coding:utf-8 from __future__ import division import sys from math import * from PyQt4 import QtCore ...

  8. Maven如何发布项目到一个Tomcat中

    首先,在本地tomcat的conf/tomcat-users.xml 中配置一个user,准备让maven接入时使用: <role rolename="admin-gui"/ ...

  9. 用dom4j操作xml文件

    XML的全称是eXtensible Markup Language,即“可扩展标记语言”.XML文件的作用主要是数据存储,文件配置,数据传输. html与xml的区别是:①html语法松散,xml语法 ...

  10. jfinal文件上传

    jfianl获取表单数据,需要先getFile()获取文件,再使用getPara() public class ImageUploadController extends Controller{ pu ...