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
    

      

  • 相关阅读:
    镜像转换:img转换为iso
    IDM的谷歌插件安装
    Adams和UG许可证冲突问题
    步进电机驱动总结
    比赛官网收集
    树莓派安装pip包管理工具
    光固化打印后处理过程
    Arduino 串口库函数
    六足蜘蛛机器人行走控制
    温湿度传感器DHT11程序示例
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4737493.html
Copyright © 2011-2022 走看看