zoukankan      html  css  js  c++  java
  • 【转载】常用外挂

    转自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
    

      

  • 相关阅读:
    文件复制
    linux 计划任务
    mysql查询权限的用户名密码
    mysql导入导出及复制
    windowslucene安装配置
    apache+php32位平台安装
    文件移动
    mysql查询权限的用户名密码
    取树状结构的某个值下的所有记录
    今天发生了个有趣的排序
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4737493.html
Copyright © 2011-2022 走看看