• 【转载】常用外挂


    转自http://blog.csdn.net/mxymxy1994mxy/article/details/47679971

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cctype>
    using namespace std;
    
    //C++扩栈
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    //读入挂
    inline char getc(){  
    	static const int BUFLEN = 1 << 15;  
    	static char B[BUFLEN], *S = B, *T = B;  
    	if(S == T){  
    		S = B;  
    		T = S + fread(B, 1, BUFLEN, stdin);  
    	}  
    	return (S == T) ? 0 : *(S ++);  
    }  
    int ReadInt(){  
    	char ch;  
    	do ch = getc(); while(!isdigit(ch));  
    	int aa = ch - '0';  
    	for(ch = getc(); isdigit(ch); ch = getc())  
    		aa = aa * 10 + ch - '0';  
    	return aa;  
    }
    
    //O(N)排序+离散化
    void Distinct(unsigned int arr[], const int N){
    	int i, n2;
    	static int cnt[0x10000], tab1[MAXN], tab2[MAXN];
    	static unsigned int arr2[MAXN];
    
    	//第一轮
    	for(i = 0; i <= 0xFFFF; i ++) cnt[i] = 0;
    	for(i = 0; i < N; i ++) cnt[arr[i]&0xFFFF] ++;
    	for(i = 0; i < 0xFFFF; i ++) cnt[i + 1] += cnt[i];
    	for(i = N - 1; i >= 0; i --){
    		tab1[i] = -- cnt[arr[i]&0xFFFF];
    		arr2[tab1[i]] = arr[i];
    	}
    	//第二轮
    	for(i = 0; i <= 0xFFFF; i ++) cnt[i] = 0;
    	for(i = 0; i < N; i ++) cnt[arr2[i]>>16] ++;
    	for(i = 0; i < 0xFFFF; i ++) cnt[i + 1] += cnt[i];
    	for(i = N - 1; i >= 0; i --){
    		tab2[i] = -- cnt[arr2[i]>>16];
    		arr[tab2[i]] = arr2[i];
    	}
    	//值离散化
    	arr2[0] = n2 = 1;
    	for(i = 1; i < N; i ++){
    		if(arr[i] != arr[i - 1]) ++ n2;
    		arr2[i] = n2;
    	}
    	//复原数组
    	for(i = 0; i < N; i ++) arr[i] = arr2[tab2[tab1[i]]];
    }
    
    //大数乘法取模
    //如果是64位要写imulq,idivq和r?x
    #define MO 1000000007
    #ifdef _MSC_VER
    inline int ml(int a,int b){
        int ret;
        _asm{
            mov eax, a;
            mov ebx, b;
            mov ecx, MO;
            imul ebx;
            idiv ecx;
            mov ret, edx;
        }
        return ret;
    }
    #else
    inline int ml(int a,int b){
        int ret;
        __asm__ __volatile__ ("	imull %%ebx
    	idivl %%ecx
    " :"=d"(ret):"a"(a),"b"(b),"c"(MO));
        return ret;
    }
    #endif
    

      

  • 相关阅读:
    Android的数据存储
    Servlet第一天
    JavaScript高级程序设计读书笔记(3)
    Interesting Papers on Face Recognition
    Researchers Study Ear Biometrics
    IIS 发生意外错误 0x8ffe2740
    Father of fractal geometry, Benoit Mandelbrot has passed away
    Computer vision scientist David Mumford wins National Medal of Science
    Pattern Recognition Review Papers
    盒模型bug的解决方法
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4737493.html
Copyright © 2020-2023  润新知