zoukankan      html  css  js  c++  java
  • [ural 2121]. Intersection of Parabolas

    题意

    给出一个整数(a),给出两个抛物线(y = (x - a) ^ 2)(x = (y - a) ^ 2)
    求两个曲线围成的面积。
    (1 leq a leq {10} ^ {18})

    题解

    开始感觉就是一道积分题。
    显然该函数图像可以分三段来积分。
    然后写了个shit长的牛迭+积分。
    然后发现它不仅爆精了,还T了。
    诶,等等……这个(a)为什么是整数啊?
    若干秒后——
    tm这竟然是找规律题……
    输出(a),输出(frac{12a - 1}{3})……
    但是这对于实数不应该也成立吗?
    原因很简单,(a)是整数时答案的形式都是(x.6666666667),直接算反而要爆精……

    #include <bits/stdc++.h>
    using namespace std;
    long long a, b;
    int main () {
    	cin >> a;
    	b = a * 4 - 1;
    	cout << b << ".6666666667" << endl;
    	return 0;
    }
    

    另附长长的暴力……

    #include <bits/stdc++.h>
    using namespace std;
    typedef double db;
    // y1 = (x - a) ^ 2
    // y2 = sqrt x - a
    // y3 = a - sqrt x
    const db eps = 1e-14, inf = 2e18;
    db a, x1, x2, x3, x4, ans;
    db sqr (db x) {
    	return x * x;
    }
    db cub (db x) {
    	return x * x * x;
    }
    db f1 (db x) {
    	return sqr(x - a) - sqrt(x) - a;
    }
    db d_f1 (db x) {
    	return (x - a) * 2 - sqrt(x) / 2;
    }
    db f2 (db x) {
    	return sqr(x - a) + sqrt(x) - a;
    }
    db d_f2 (db x) {
    	return (x - a) * 2 + sqrt(x) / 2;
    }
    db f3 (db x) {
    	return sqr(x - a) + sqrt(x) - a;
    }
    db d_f3 (db x) {
    	return (x - a) * 2 + sqrt(x) / 2;
    }
    db f4 (db x) {
    	return sqr(x - a) - sqrt(x) - a;
    }
    db d_f4 (db x) {
    	return (x - a) * 2 - sqrt(x) / 2;
    }
    db newton_f1 (db x) {
    	db x0 = x + 1;
    	for ( ; fabs(x - x0) > eps; ) {
    		x0 = x, x = x0 - f1(x0) / d_f1(x0);
    	}
    	return x;
    }
    db newton_f2 (db x) {
    	db x0 = x + 1;
    	for ( ; fabs(x - x0) > eps; ) {
    		x0 = x, x = x0 - f2(x0) / d_f2(x0);
    	}
    	return x;
    }
    db newton_f3 (db x) {
    	db x0 = x + 1;
    	for ( ; fabs(x - x0) > eps; ) {
    		x0 = x, x = x0 - f3(x0) / d_f3(x0);
    	}
    	return x;
    }
    db newton_f4 (db x) {
    	db x0 = x + 1;
    	for ( ; fabs(x - x0) > eps; ) {
    		x0 = x, x = x0 - f4(x0) / d_f4(x0);
    	}
    	return x;
    }
    db i_f12 (db x) {
    	return -cub(x) / 3 + a * sqr(x) + 2.0 / 3 * pow(x, 1.5) + a * x - sqr(a) * x;
    }
    db i_f12 (db l, db r) {
    	return i_f12(r) - i_f12(l);
    }
    db i_f23 (db x) {
    	return 4.0 / 3 * pow(x, 1.5);
    }
    db i_f23 (db l, db r) {
    	return i_f23(r) - i_f23(l);
    }
    db i_f34 (db x) {
    	return -cub(x) / 3 + a * sqr(x) + 2.0 / 3 * pow(x, 1.5) + a * x - sqr(a) * x;
    }
    db i_f34 (db l, db r) {
    	return i_f34(r) - i_f34(l);
    }
    int main () {
    	cin >> a;
    	x1 = newton_f1(0);
    	x2 = newton_f2(0);
    	x3 = newton_f3(a * 2);
    	x4 = newton_f4(a * 2);
    	ans = i_f12(x1, x2) + i_f23(x2, x3) + i_f34(x3, x4);
    	cout << fixed << setprecision(10) << ans << endl;
    	return 0;
    }
    
  • 相关阅读:
    数组中的stdClass Object如何访问
    Django Forms的错误提示
    Thymeleaf+layui+jquery复选框回显
    使用jquery刷新页面以及javascript的一些基本函数
    jQuery遍历的几种方式
    Js和Thymeleaf如何获取model中的值
    数据库索引的理解
    HTTPS
    设计模式 命令模式
    饰者模式
  • 原文地址:https://www.cnblogs.com/psimonw/p/11801093.html
Copyright © 2011-2022 走看看