其他分享
首页 > 其他分享> > 【ZJSU - 大红大紫:ACM - Template】比赛用模板13:杂类

【ZJSU - 大红大紫:ACM - Template】比赛用模板13:杂类

作者:互联网

杂类

与、或、异或

运算 运算符、数学符号表示 解释
&and 同1出1
|or 有1出1
异或 ^、\(\bigoplus\)、xor 不同出1

一些结论:

对于给定的 \(X\) 和序列 \([a_1,a_2,…,a_n]\) ,有:\(\pmb {X=(X \&a_1)or(X\&a_2)or…or(X\&a_n)}\) 。
原理是 \(and\) 意味着取交集,\(or\) 意味着取子集。来源 - 牛客小白月赛49C


三分

\(\mathcal{Provided \ by \ \pmb{Hamine}}\) 。给出一个 \(n\) 次函数,保证在范围 \([l, r]\) 内存在一点 \(x\),使得 \([l, x]\) 上单调增,\([x, r]\) 上单调减。求出 \(x\) 的值。

#include <bits/stdc++.h>
using namespace std;
#define eps 1e-8
const int N = 15;
int n;
double l, r, a[N];
double f(double x){
    double ans = 0;
    for (int i = 0; i <= n; i ++ )
        ans = ans * x + a[i];
    return ans;
}
int main(){
    cin >> n >> l >> r;
    for (int i = 0; i <= n; i ++ )
        cin >> a[i];
    while (r - l > eps){
        double mid1 = l + (r - l) / 3.0, mid2 = r - (r - l) / 3.0;
        if ( f(mid1) > f(mid2) )
            r = mid2;
        else
            l = mid1;
    }
    printf("%.5lf\n", l);
    return 0;
}

读入优化 \(\tt fread\)

可以处理正、负整数。

char buf[1 << 21], *p1 = buf, *p2 = buf;
inline int getc() {
    return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++;
}
inline int read() {
    int ret = 0, f = 0; char ch = getc();
    while (!isdigit(ch)) {
        if (ch == '-') f = 1;
        ch = getc();
    }
    while (isdigit(ch)) {
        ret = ret * 10 + ch - 48;
        ch = getc();
    }
    return f ? -ret : ret;
}

大整数类 \(\tt \_\_int128\)

只在基于 \(\tt Lumix\) 系统的环境下可用,38位精度,除输入输出外与普通数据类型无差别。输入输出流定义如下:

__int128 read() {
    int128 x = 0; bool f = 0; char c = getchar();
    while (c < '0' || c > '9') {
        if (c == '-') f = 1;
        c = getchar();
    }
    while (c >= '0' && c <= '9') {
        x = (x << 1) + (x << 3) + (c ^ 48);
        c = getchar();
    }
    return f ? -x : x;
}
void write(__int128 x) {
    if (x < 0) putchar('-'), x = -x;
    if (x > 9) write(x / 10);
    putchar(x % 10 + '0');
}

对拍版子

int r(int a, int b) { //随机数构造
    return (long long)rand() * rand() % (b - a + 1) + a;
}
int main(){
    freopen("3.txt", "w", stdout); //输出文件
    srand((unsigned)time(0)); //种子传入
    return 0;
}
:loop
3
2
1 
fc 1.out 2.out
if errorlevel==1 pause
goto loop
int main() {
    for(int Case = 1; Case <= 10000; Case ++) {
        cout << "==============\n";
        system("3.exe"); system("1.exe");
        
        double start = clock();
        system("2.exe");
        double end = clock();
        
        if(system("fc 1.out 2.out")) { puts("WA"); break; }
        else { cout << end - start << "ms\n"; }
    }
    return 0;
}

标签:13,return,int,大红大紫,tt,ZJSU,double,mid2,mid1
来源: https://www.cnblogs.com/WIDA/p/16676300.html