zoukankan      html  css  js  c++  java
  • 模拟【P1650】 田忌赛马

    z

    你没有发现两个字里的blog都不一样嘛 qwq

    题目描述--->p1650 田忌赛马

    先%dalao sto GMPotlc orz

    他教给的我,征求意见后终于来水题解.

    分析

    我们需要知道的是如何决策,才能让田忌胜利次数最多.

    n<=2000?

    我们可以自认为是田忌来模拟这个过程(穿越?)

    值得考虑的是,我们每次调换每匹马的位置会白白增加复杂度。

    因此我们找规律(说不上是真正意义上的找规律 qwq.)

    这里只给出一个例子,不太理解的话还请大家手推一下 qwq.

    排序之后,我们得到的序列为这样.(这里按数组下标来解释)

    1即代表能力值最低,5代表能力值最高.

    因为排序之后排名都一样.

    这时我们考虑将后两匹马提前.

    对应的就是这个样子啦 qwq

    我们不必去真正的模拟这个交换的过程.

    为啥?

    上图中我们的

    4     5     1     2     3
    

    实际上对应原序列的是

    1     2     3     4     5
    

    如何找到规律?

    我们发现从1到len(此时len为2

    位置对应的是我们后面的n到n-len.

    此时我们得到的对应关系就是 n-len+i 与 i 对应.

    而我们从len+1到n

    位置对应的是我们前面的1-len.

    此时我们又得到一组对应关系就是 i-len与 i 对应.

    (这两组关系如果得到一组的话我们就可以得到另一组应该是

    如果不太理解的话最好还是自己多手出几组尝试一下.

    -------------------代码------------------

    #include<bits/stdc++.h>
    #define R register
    using namespace std;
    inline void in(int &x)
    {
        int f=1;x=0;char s=getchar();
        while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
        while(isdigit(s)){x=x*10+s-'0';s=getchar();}
        x*=f;
    }
    int n,tianji[2508],qiwang[2508],ans;
    int main()
    {
        in(n);
        for(R int i=1;i<=n;i++)in(tianji[i]);
        for(R int i=1;i<=n;i++)in(qiwang[i]);
        sort(tianji+1,tianji+n+1);
        sort(qiwang+1,qiwang+n+1);
        for(R int len=1;len<=n;len++)
        {
            R int cnt=0;
            for(R int i=1;i<=len;i++)
            {
                if(tianji[n-len+i]>qiwang[i])
                cnt++;
                if(tianji[n-len+i]<qiwang[i])
                cnt--;
            }
            for(R int i=len+1;i<=n;i++)
            {
                if(tianji[i-len]>qiwang[i])
                cnt++;
                if(tianji[i-len]<qiwang[i])
                cnt--;	
            }
            ans=max(ans,cnt);
        }
        printf("%d",ans*200);
    }
    

    有不理解的地方来gay私信我就好了 qwq

    再度sto GMPotlc orz

  • 相关阅读:
    973. K Closest Points to Origin
    919. Complete Binary Tree Inserter
    993. Cousins in Binary Tree
    20. Valid Parentheses
    141. Linked List Cycle
    912. Sort an Array
    各种排序方法总结
    509. Fibonacci Number
    374. Guess Number Higher or Lower
    238. Product of Array Except Self java solutions
  • 原文地址:https://www.cnblogs.com/-guz/p/9696285.html
Copyright © 2011-2022 走看看