UVA 10014(推公式)
2015-08-13 19:27
435 查看
题目链接:UVA 10014
解题思路:
第一个想法是高斯消元,但貌似复杂度有点高,于是开始推公式,想了好久。
推导过程:
a[i-1] + a[i+1] = 2 * ( a[i] + c[i] )
a[1] + a
= a[0] + a[n+1] - c[1:n]
n = 1, 2, 3, … n
(n+1) * a[1] = n*a[0] +a[n+1] - ( n*c[1] + (n-1)*c[2] + … + c
)
代码:
总结:
太久没做题,感觉脑袋要生锈
解题思路:
第一个想法是高斯消元,但貌似复杂度有点高,于是开始推公式,想了好久。
推导过程:
a[i-1] + a[i+1] = 2 * ( a[i] + c[i] )
a[1] + a
= a[0] + a[n+1] - c[1:n]
n = 1, 2, 3, … n
(n+1) * a[1] = n*a[0] +a[n+1] - ( n*c[1] + (n-1)*c[2] + … + c
)
代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n; double a[3005],c[3005]; int main() { int T; scanf("%d",&T); int flag=0; while(T--) { if(flag) printf("\n"); else flag=1; memset(a,0,sizeof(a)); memset(c,0,sizeof(c)); scanf("%d",&n); scanf("%lf %lf",&a[0],&a[n+1]); for(int i=1;i<=n;i++) scanf("%lf",&c[i]); double sum = n*a[0] + a[n+1]; for(int i=1;i<=n;i++) { sum-=2*c[i]*(n-i+1); } sum/=(n+1); printf("%.2lf\n",sum); } return 0; }
总结:
太久没做题,感觉脑袋要生锈
相关文章推荐
- 快速排序,归并排序,堆排序的java代码实现
- 数据库操作符
- HDU 1014 Uniform Generator (水题_格式控制)
- Polar Code主要研究者的个人主页(持续更新中........)
- 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)
- 绘制圆动画--重写view
- 动态加载
- Leetcode #4 Median of Two Sorted Arrays
- 绘制 ToggleButton --重写view
- jQuery 获取当前节点的html包含当前节点的方法
- c/c++里的 堆区 栈区 静态区 文字常量区 程序代码区
- 第三周第四天
- hdu 5374 Tetris(模拟俄罗斯方块)
- vector用法
- Python爬虫1
- scala-08Scala主构造器、私有构造器、构造器重载实战详解
- Git 查看修改历史
- 2015-8-13 省赛模拟总结
- 深入init进程(and5.1)
- 【转】Web 开发调试工具 Livepool