位运算
实用公式:a + b = a | b + a & b异或性质:两个数异或相当于各位进行无进制的二进制加法重要公式:1^1=0 x^x=0a^b=x a^x=b
__builtin_popcount函数(统计二进制中‘1’的个数)
__builtin_popcount(unsigned int n) //返回int类型
__builtin_popcountll(unsigned int n) //返回long long类型
三分
123456789while (fabs(R-L)<eps) (整数为R>L ){ int lmid = L + (R - L) / 3; int rmid = R - (R - L) / 3; if (F( lmid ) < F( rmid )) (自行判断有无等号) L = lmid + 1, ans = L;(找最大值) else R = rmid - 1;}
浮点数二分
1234567891011121314const double eps = <精度>(尽可能小)bool check(<参数>){ //用于实现满足题意的条件 ... return<条件>;}double l = <下界>,r = <上界>, ans;while(r-l > =eps) { double mid = (l + r) / 2; if (check(mid)) ans = mid, l = mid ; / r = mid ; (找最大值) (找最小值) else r = mid ; / l = mid;}
快速幂(取模)
12345678910int power_mod(int a, int b, int mod){ int res = 1; a = a % mod; while (b) { if (b & 1) res = (res % mod * a % mod) % mod; b >>= 1; a = (a % mod * a % mod) % mod; } return res;}
abc351
Atcoder Beginner Contest 351A - The bottom of the ninth(模拟)题意 两支队伍A,B正在进行比赛,比赛分为上半和下半两场各有9局,已知上半局A的全部得分和下半局B的前8局得分,问B的最后一局得分至少是多少才能使得B的总分严格大于A?
思路 设所有A的总和sum_A= ,前八局B的总和sum_B为;易知,当sum_Asum_B时,此时B需要sum_A-sum_B+1的得分,反之,B已经严格高于A的得分.12345678910111213141516#include<bits/stdc++.h>#define int long long#define endl '\n' using namespace std;int a[15], b[15];signed main(){ std::ios::sync_with_stdio(false);cin.tie(0); int sum1 = 0, sum2 = 0; for (int i = 1; i <= 9;i++) cin &g ...
