Luogu五月月赛

Posted $mathcal{color{skyblue}{\_Orch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu五月月赛相关的知识,希望对你有一定的参考价值。

首先,到此为止,我只会\(t1\)\(t2\)

T1:

\(\color{red}{Description}\)

\(Alice\)\(Bob\) 在玩游戏。

他们有 \(n\) 堆石子,第\(i\)堆石子有\(a_i\)个,保证初始时 \(a_i \leq a_{i + 1}(1 \leq i < n)\)。现在他们轮流对这些石子进行操作,每次操作人可以选择满足\(a_i > a_{i - 1}\)(a_0$视为 \(0)\)的一堆石子,并从中取走一个。谁最后不能取了谁输。\(Alice\) 先手,他们都使用最优策略,请判断最后谁会取得胜利。

好了这就是个博弈论(?)的水题\(qwq\).

\(\color{red}{Solution}\)

那么事实上,这个博弈有两种均衡:

1、自己拿最多。

2、让对方拿最少。

然而事实上,因为第一堆总可以拿,所以即使石头被拿成单调的(即\(a_i <= a_{i-1}\) )由于第\(0\)堆是\(0\),所以并不存在第二种均衡。

那么很显然了,在第一种均衡的前提下,奇数个石头先手赢,偶数个石头后手赢。

\(\color{red}{over}\)

T2:

\(\color{red}{Description}\)

\(Alice\)\(Bob\) 生活在一个 \(l \times l\) 的正方形房子里,由于 \(Bob\) 最近沉迷隔膜,\(Alice\) 决定要限制 \(Bob\) 上网的频率。

\(Alice\) 建造了 \(n\) 个无线信号屏蔽器,第 \(i\) 个位于 \((x_i, y_i)\) ,屏蔽范围为 $\frac{l}{n} $

\(Bob\) 网瘾发作按捺不住上网的冲动,找到了你,帮他找到一个位置 \((x,y)\) ,使得没有被 \(Alice\) 的无线信号屏蔽器覆盖.

空间限制\(512Mb\),时间限制\(2s\)

\(\color{red}{Solution}\)

这个题的正解(\(rqy\)解)是随机撒点

那么我们考虑正确性:

首先对于所有的圆的面积\[S_C=n \times \pi \times \frac{l}{n}^2=\frac{ \pi l^2 }{n}\]

而正方形矩阵的面积为 \[S_Q=l^2\]

其比值为:\[\frac{\pi}{n}\]

那么我们现在就可以随机撒点了,随机生成一万多次坐标,然后判断即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<cstdlib>
using namespace std;
#define MAXN 100
struct circle{
    double x,y;
}s[MAXN];
double r;
inline bool check(double x,double y,double x1,double y1){
    return (x1-x)*(x1-x)+(y-y1)*(y-y1)<=(r+0.000001)*(r+0.000001);
} 
int main(){
    double x=0.23,y=0.66,n;
    int l,tot=0;
    srand(time(0));
    cin>>n>>l;
    r=double(l)/double(n);
    for(int i=1;i<=n;i++){
        cin>>s[i].x>>s[i].y;    
    }
    for(int i=1;i<=12233;i++){
        tot=0;
        x*=2.2333;
        y*=8.6666;
        x+=591;
        y+=721;
        while(x>l){
            x-=96.88;
            while(x<0)x+=4.333;
        }   
        while(y>l){
            while(y<0)y-=87.67;
        }
        for(int j=1;j<=n;j++){
            if(!check(s[j].x,s[j].y,x,y)){
                tot++;  
            }
        }   
        if(tot==n){
            printf("%.3lf",x);
            cout<<" ";
            printf("%.3lf",y);
            return 0;
        }
    }
    cout<<"GG"<<endl;
}

以上是关于Luogu五月月赛的主要内容,如果未能解决你的问题,请参考以下文章

新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)- 猴子排序的期望

新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)F 猴子排序的期望Java/高精度/组合数学+概率论

ybtoj 二叉堆课堂过关 例题3luogu 月赛 P5462指针龙珠游戏 & X龙珠

P3818 小A和uim之大逃离 II(洛谷月赛)

Luogu P6789 寒妖王

luogu7月月赛记录