UVALive 6449 IQ Test --高斯消元?
题意:给你一串数字,问这串数字符合f[n] = a*f[n-1],f[n] = a*f[n-1]+b*f[n-2],f[n] = a*f[n-1]+b*f[n-2]+c*f[n-3]这几个方程中的哪个,然后要你给出第n+1项,如果符合多个方程,项数小的优先(第一个方程优先)。
解法:这题我先处理看是否满足f[n] = a*f[n-1]的形式,如果不满足,则用高斯消元借出两项和三项的情况的a,b,c,比如第二个方程,f[3] = a*f[2]+b*f[1],f[4] = a*f[3]+b*f[2],两个方程两个未知量,用高斯消元解出a,b,这里可能不是整数,我将他们加了个0.5取下整,居然对了。后来看那场比赛没一个人是用的高斯消元,所以不知道这样是否正确,有看出来端倪的欢迎评论告诉我。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 4 int f[];
typedef double Matrix[N][N];
int x,y,z; void gauss_elimination(Matrix A,int n)
{
int i,j,k,r;
for(i=;i<n;i++)
{
//选一行r并与i行交换
r = i;
for(j=i+;j<n;j++)
if(fabs(A[j][i]) > fabs(A[r][i]))
r = j;
if(r != i)
{
for(j=;j<=n;j++)
swap(A[r][j],A[i][j]);
}
//与第i+1~n行进行消元
for(k=i+;k<n;k++)
{
double f = A[k][i]/A[i][i]; //为了让A[k][i] = 0,第i行乘以的倍数
for(j=i;j<=n;j++)
A[k][j] -= f*A[i][j];
}
}
//回代
for(i=n-;i>=;i--)
{
for(j=i+;j<n;j++)
A[i][n] -= A[j][n]*A[i][j];
A[i][n] /= A[i][i];
}
x = (int)floor(A[][n]+0.5);
y = (int)floor(A[][n]+0.5);
if(n == )
z = (int)floor(A[][n]+0.5);
} int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(f,,sizeof(f));
for(i=;i<=n;i++)
scanf("%d",&f[i]);
int ans = Mod;
int a1,a2,a3;
int flag;
if((f[] == && f[] == ) || f[]%f[] == )
{
if(f[] == && f[] == )
a1 = ;
else
a1 = f[]/f[];
flag = ;
for(i=;i<=n;i++)
{
if(f[i] != a1*f[i-])
flag = ;
}
if(flag)
ans = a1*f[n];
}
if(ans != Mod)
{
printf("%d\n",ans);
continue;
}
Matrix A;
A[][] = A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
gauss_elimination(A,);
flag = ;
for(i=;i<=n;i++)
{
if(f[i] != x*f[i-]+y*f[i-])
flag = ;
}
if(flag)
ans = x*f[n]+y*f[n-];
if(ans != Mod)
{
printf("%d\n",ans);
continue;
}
A[][] = A[][] = A[][] = f[];
A[][] = A[][] = f[];
A[][] = f[];
A[][] = A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
gauss_elimination(A,);
//printf("%d %d %d\n",x,y,z);
ans = x*f[n]+y*f[n-]+z*f[n-];
if(ans != Mod)
printf("%d\n",ans);
}
return ;
}
UVALive 6449 IQ Test --高斯消元?的更多相关文章
- First Knight UVALive - 4297(优化高斯消元解概率dp)
题意: 一个矩形区域被分成 m*n 个单元编号为 (1, 1)至 (m, n),左上为 (1, 1),右下为(m, n).给出P(k)i,j,其中 1 ≤ i ≤ m,1 ≤ j ≤ n,1 ≤ k ...
- UVALive 7138 The Matrix Revolutions(Matrix-Tree + 高斯消元)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...
- UVALive 7455 Linear Ecosystem (高斯消元)
Linear Ecosystem 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/B Description http://7xj ...
- UVALive - 6185 Find the Outlier暴力填表+高斯消元+卡eps
https://cn.vjudge.net/problem/UVALive-6185 我真的是服了orz eps 1e5,1e6过不了 开1e2 1e1都能过 题意:给你一个d阶多项式f的f(0),f ...
- UVALive - 3490 Generator (AC自动机+高斯消元dp)
初始有一个空串s,从前n个大写字母中不断随机取出一个字母添加到s的结尾,出现模式串t时停止,求停止时s的长度期望. 这道题解法不唯一,比较无脑的方法是对模式串t建一个单串AC自动机,设u为自动机上的一 ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
- 【BZOJ-3270】博物馆 高斯消元 + 概率期望
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 292 Solved: 158[Submit][Status][Discuss] ...
- *POJ 1222 高斯消元
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9612 Accepted: 62 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
随机推荐
- 【poj 3080】Blue Jeans(字符串--KMP+暴力枚举+剪枝)
题意:求n个串的字典序最小的最长公共子串. 解法:枚举第一个串的子串,与剩下的n-1个串KMP匹配,判断是否有这样的公共子串.从大长度开始枚举,找到了就break挺快的.而且KMP的作用就是匹配子串, ...
- oauth授权协议的原理
http://oauth.net/2/ 协议的原文.原来是1.0版本,现在是2.0版本了 https://ruby-china.org/topics/15396 https://blog.yorkxi ...
- SQL Server join介绍
介绍Inner Join(可以省略Inner,平常经常inner,就是inner join), Full Out Join,Cross Join,Left Join, Right Join区别. )) ...
- 调试CRM JS开发
CRM 2013 的表单是一个IFrame,如果使用jquey来控制表单的话调试起来比较麻烦,如果直接使用浏览器(firefox)来开发和验证脚本可能会事半功倍. 首页列表页主窗体:var table ...
- Oracle自动统计信息的收集原理及实验
[日期:2014-11-21]来源:Linux社区 作者:stevendbaguo[字体:大 中 小] 从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATH ...
- ListView的addHeaderView()方法相关问题
使用listView.addHeaderView(view) 可以在 listView 上方添加一个view视图 ,使listView和这个view连接在一起 效果上看上去是一个整体 一般用于上拉刷新 ...
- 解决SSIS中的脚本任务无法调试的问题
开发环境:操作系统环境为Win7 64Bit,数据库为SQLServer2008R2 问题现象:在SSIS的项目工程中,新建Package包,新建脚本任务,编写脚本程序以后,设置断点无法调试(Debu ...
- 利用Handler访问网络数据
废话不多白吃,代码如下: 1.MainActivity package com.yz.day11_22_handler;import android.app.Activity;import andro ...
- OC知识梳理-NSArray与NSMutableArray相关知识
知识普及: 1.数组中的元素在系统中都会有其默认对应的下标,下标是一个整形的数字,默认从0开始. 例:NSArray *arr3 = @["345","234" ...
- 【读书笔记】iOS-简单的数据驱动程序
一,效果图. 二,,工程文件如下图所示: 三,DataModel.h #import <Foundation/Foundation.h> @interface DataModel : ...