恩,被浙大的ACM  judge online吓倒起了,一个莫名其妙的问题,把我的triangle war给WA了,明明一点问题都没有!
还是北大好,不愧是我哥们的地盘,打了招呼的,一次AC,我考!
仔细研究了下,发现批浙大的那个居然前面有个莫名其妙的数据头[把测试文件代号放在标准输入里面,我只能说,确实牛!]
 
晚上翻了下Mark据牛写的那个windows internal,把windbg的环境搭建好了,pdg的符号表也导入好了!那本书结合win32 5核心编程,我觉得
win32基本上就可以理解和用的很顺手了!当然LLV原来挑战过undocumented WinNT和programming windows driver的一些东西,看得比较晕
其实没多大必要,我们又不写内核,读内核的书只是让我们加深理解,其他的我也想不出来了,可能就是搞几个蓝屏出来耍下!
剩下就是看能不能有远程的黑客方式,我真的很想kakaka!冷静冷静,我还有一道据难的题目没做,还是省点力气,洗澡之后整理下思路吧!
 
今天忽然发现1007没过,惊讶之下写了下。5分钟就写完,以为可以去k难题了,结果发现北大上面的Wrong Answer!一共就写了18行不到,要
错也错不了萨,气愤之下分析了下,俄!!!~~~数据类型用小了,人家越界了,好嘛,改了,AC了!水题不是我追求的,继续研究博弈的和局
以及调换表吧!~有点头大,还要分析等价类
 
代码贴下,庆祝一眼瞧出问题!再次声明,这决不是我追求得,还是书上的程序有写头,也确实很难!
 
加油加油加油!!!!!~~~
 

Source Code

Problem: 1007[真瓜这么靠前的题,你也有脸贴]

User: orlando22

Memory: 288K

Time: 0MS

Language: C++

Result: Accepted
  • Source Code
    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    const int MAXM=120;
    
    typedef struct stnd{
        string c;
        long k;
    };
    stnd arr[MAXM];
    int n,m;
    
    long revrt(const char* str, int l, int r);
    
    long revrt(const char* str, int l, int r){
        if(l+1==r){
            if(str[l]>str[r]) return 1;
            return 0;
        }
        //get split it
        int mid=l+(r-l)/2;
        long ret=0;
        if(mid>l) ret+=revrt(str, l, mid);
        if(mid+1<r) ret+=revrt(str, mid+1, r);
        //compare two parts
        for(int i=mid+1;i<=r;i++){
            for(int j=l;j<=mid;j++){
                if(str[i]<str[j]) ret++;
            }
        }
        return ret;
    }
    
    void sort(){
        for(int i=0; i<m; i++)
            arr[i].k=revrt(arr[i].c.c_str(), 0, n-1);
        //insert sorting
        for(int i=1; i<m; i++){
            int j=i;
            stnd cur=arr[i];
            for(;j-1>=0&&arr[j-1].k>cur.k; j--) arr[j]=arr[j-1];
            arr[j]=cur;
        }
    }
    
    int main()
    {
        cin>>n,cin>>m;
        for(int i=0; i<m; i++)
            cin>>arr[i].c;
        sort();
        for(int i=0; i<m; i++)
            cout<<arr[i].c<<endl;
        return 0;
    }
    
 
 
Advertisements