ACMセルフ常用テンプレート(c++版)
3950 ワード
最近の何回かの試合は毎回いくつかの問題がタイムアウトになったので、見るたびに優秀なテンプレートを写して、予備を残しています.
前面:
1.組み合わせ式の配置
2.最大公因数(gcd)
3.高速べき乗式
4.大数演算
このブログの詳細は次のとおりです.http://www.cnblogs.com/teble/p/7224597.html
5.超ビッグデータ読み込み(例えばacdream 1099題)+部分ソート(STL)
後ろはゆっくり補う...
前面:
typedef long long LL;
//#define MOD xxx
const int MOD=xxx;
1.組み合わせ式の配置
//C(m,n)
LL C(int m,int n) {
int k=1;// C(m,n)
LL ans=1;
while(k<=n) {
ans=((m-k+1)*ans)/k;
k++;
}
return ans;
}
2.最大公因数(gcd)
int gcd(int a,int b) {
if(!a)
return b;
int c;
while(b) {//
c=b;
b=a%b;
a=c;
}
return a;
}
3.高速べき乗式
LL qpow(LL a, LL b) {//a n ( )
LL ans = 1;
while (b) {
if (b & 1) {
ans *= a;
ans %= MOD;
}
b >>= 1;
a *= a;
a %= MOD;
}
return ans;
}
4.大数演算
このブログの詳細は次のとおりです.http://www.cnblogs.com/teble/p/7224597.html
5.超ビッグデータ読み込み(例えばacdream 1099題)+部分ソート(STL)
#include
#include
#include
using namespace std;
const int N = 10e6;
void scand(int &ans)
{
char c;
ans = 0;
while((c=getchar())<'0' || c>'9');//
while(c>='0'&&c<='9')
ans=(ans<<3)+(ans<<1)+(c-'0'),c=getchar();
}
int a[N];
int main()
{
int n,k;
cin>>n>>k;
for(int i = 0 ; icout<//nth_element(first,nth,end,compare)
// えばa[10]で2 に きい を つけると、nth_Element(a,a+2-1,a+10)のマイナス1は0 から
後ろはゆっくり補う...