1108 模擬賽

寫在前面

今天的這場比賽。。。是可寫的傻哭.jpgide

仍是我太菜了測試

T1走步(travel)

連接idea

Idea

這是一道數學題spa

前置芝士:餘弦定理code

0.jpg

如圖,點\(\mathcal A\)是走了\(n\)步所到達的點,到原點距離爲\(x\)。(紅線)blog

接下來走一步走到點\(\mathcal B\)\(\mathcal B\)\(\odot A\)上一點且\(r_A=1\),),設其到原點距離\(\mathcal {BO}=y\),(藍線)ci

在$ \bigtriangleup OAB$中,使用餘弦定理,得:
\[ y^2=x^2+1-2x \cos \theta \]
咱們發現\(\cos \theta\)的指望爲零。。。(這一點但願讀者本身思考get

因此,式子化簡成
\[ y^2=x^2+1 \]
由於咱們求的正是\(E(\mathcal D^2)\),咱們上面提到,\(\mathcal A\)是第\(n\)步走到的點,\(\mathcal B\)是第\(n+1\)步走到的點,那麼\(f_{n+1}^2=f_n^2+1,n \ge 1\),因此第\(n\)步時,\(E(\mathcal D^2)=n\)數學

因此,輸出\(n\)便可。class

另注:本題只有一個測試點賣萌.jpg

Code

namespace Sol{
    inline int Main(){
        put(read());//不解釋,嘻嘻
        return 0;
    }
}

T2高不可攀

連接

Idea

對於本題,分塊、莫隊均可以寫。代碼等我回來再貼傻笑.png

這裏說一種不嚴格的\(\mathcal O(n^2 \log n)\)

由於使用了二分,還加了些剪枝,因而卡過了數據。具體能夠看代碼。

Code

namespace Sol{
    vector<int>v[maxn];
    int n,m,T,ans;
    int a[maxn];
    inline int Main(){
        n=read(); m=read(); T=read();
        for(int i=1;i<=n;i++){
            a[i]=read();
            v[a[i]].push_back(i);
        }
        while(T--){
            ans=0;
            int l=read(),r=read(),x;
            if(l==r){puts("0");continue;}
            for(int i=l;i<=r;i++){
                if(r-i<=ans)break;//若是r-i比我當前搜到的答案短,那確定找不到了。continue
                if(v[x=a[i]].size()<2) continue;//若是找不到當前數字相等的點。continue
                if(v[x][v[x].size()-1]-i<=ans) continue; //
                //就是這三個剪枝,
                int xx=lower_bound(v[x].begin(),v[x].end()-1, r)-v[x].begin();
                if(v[x][xx]>r) xx-=1;//以上兩行請本身理解/噴臉
                ans=max(ans,v[x][xx]-i);//更新答案
            }
            printf("%d\n",ans);
        }
        return 0;
    }
}
//不知爲何,這題我用cin,cout居然只有10 pts/jk

T3顛倒黑白

連接

Idea

目前只知道std是爆搜?\噴臉

Code

//容我回來再補

\[ \mathcal The \quad End \]

\[ \text{我仍然在無人問津的陰雨黴溼之地;和着雨音唱着沒有聽衆的歌曲-《世末歌者》} \]

相關文章
相關標籤/搜索