首页 > 其他分享 >CSP模拟21

CSP模拟21

时间:2023-08-16 14:25:46浏览次数:51  
标签:le dbinom int 21 交点 include CSP 模拟 mod

CSP模拟21

T1 Get P5999

把跳的顺序转换为填数。

对于一个位置,两边填的数都要小于或都大于它才符合题意。

我们按照从小到大的顺序插入数字,这样保证填的位置左右都小于它。设 \(dp_{i,j}\) 表示填了 \(i\) 个数,分成了 \(j\) 个块的方案数。

考虑添加一个数,我们有三种情况。

  • \(i\) 自己成为一个新段,我们已经填的 \(j-1\) 段把区域分成了 \(j\) 部分,我们可以在这 \(j\) 部分中选一个插入 \(i\),有 \(j\) 种情况。但是当 \(s\) 或 \(t\) 已经出现时,我们就不能添加开头和结尾,也就是说不能在边界添加 \(i\)。

\[f_{i,j}=(j-[i>s]-[i>t])\times{f_{i-1,j-1}} \]

  • \(i\) 添加进一个已经存在的段。此时不满足两边填的数都要小于或都大于它。

  • \(i\) 合并两个存在的段,在 \(j+1\) 个段的基础上有 \(j\) 种方式。

  • 如果 \(i=s\) 或 \(i=t\),只能新建边界段或添加到边界段。

\[f_{i,j}=f_{i-1,j-1}+f_{i-1,j} \]

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define int long long
int n,s,t,f[2010][2010],mod=1e9+7;
signed main(){
    scanf("%d%d%d",&n,&s,&t);
    f[1][1]=1;
    for(int i=2;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(i==s||i==t){
                f[i][j]+=f[i-1][j-1]+f[i-1][j];
                f[i][j]%=mod;
            }
            else{
                int m=(i>s)+(i>t);
                f[i][j]+=f[i-1][j-1]*(j-m);
                f[i][j]+=f[i-1][j+1]*j;
                f[i][j]%=mod;
            }
        }
    }
    cout<<f[n][1];
    return 0;
}

T2 On P9350

我们考虑拆分绝对值,

\[|x_i-x_j|\le{e_i-e_j}\iff {x_i-x_j\le{e_i-e_j}} 且 x_j-x_i\le{e_i-e_j} \]

移项,

\[e_j-x_j\le{e_i-x_i} \]

\[e_j+x_j\le{e_i+x_i} \]

我们把 \(e_i+x_i\) 和 \(e_i-x_i\) 当作两个维度,排序后按照单调队列做即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,tot,p[500010];
struct nod{
    int x,e;
}a[500010];
bool cmp(nod x,nod y){
    if(x.x==y.x) return x.e<y.e;
    return x.x<y.x;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&a[i].x,&a[i].e);
        int t=a[i].e-a[i].x;
        a[i].e=a[i].e+a[i].x;
        a[i].x=t;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        while(tot&&a[p[tot]].e<=a[i].e) tot--;
        p[++tot]=i;
    }
    cout<<tot;
    return 0;
}

T3 Your

我们可以发现对于每个交点,都在圆上有 \(4\) 个点对应。所以交点个数就是$$\dbinom{n}{4}$$

有交点的图不能用欧拉定理,我们考虑把它转化为没有交点的图,我们把每个交点都看成一个新的点,容易发现每个交点都增加了两条边,所以边的个数为

\[\dbinom{n}{2}+2\dbinom{n}{4} \]

利用欧拉定理,点数-边数+区域数是 \(2\),所以区域数为

\[2-\dbinom{n}{4}-n+\dbinom{n}{2}+2\dbinom{n}{4}=2+\dbinom{n}{2}+\dbinom{n}{4}-n \]

由于不包括圆外的的区域,圆和多面形有 \(n\) 个区域,所以答案为

\[1+\dbinom{n}{2}+\dbinom{n}{4} \]

#include<iostream>
#include<cstdio>
using namespace std;
int n,ans,tot,mod=998244353,inv24=291154603,inv2=499122177;
int main(){
    scanf("%d",&n);
    int ans1=(1ll*n*(n-1)%mod*(n-2)%mod*(n-3)%mod*inv24%mod+mod)%mod;
    int ans2=(1ll*ans1+1ll*n*(n-1)%mod*inv2%mod+mod+1)%mod;
    printf("%d\n%d",ans1,ans2);
    return 0;
}

标签:le,dbinom,int,21,交点,include,CSP,模拟,mod
From: https://www.cnblogs.com/muzqingt/p/17629878.html

相关文章

  • Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流
    场景Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/121202130上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。如果在其它业务场景下需要本地的视频文件模拟海康的rtsp流协议格式进行......
  • 模拟集成电路设计系列博客——1.1.1 基本电流镜
    1.1.1基本电流镜基本电流镜的结构如下图所示,两个晶体管都工作于饱和区,假设晶体管\(Q_1\)和\(Q_2\)完全匹配,并忽略晶体管有限输出阻抗的影响,那么\(Q_1\)和\(Q_2\)将会因为相同的栅压\(V_{gs}\)而输出相同的电流。然而如果考虑晶体管有限的输出阻抗,那么有着更大漏源电压的晶体管将......
  • YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
    YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。我们在android平台下使用相机默认图像格式是NV21属......
  • 模拟修改客户端访问服务器时的IP方法
    产品需求有时候需要区分白名单城市和非白名单城市,例如:北上广深访问页面A,返回一套数据B,其他城市访问页面A,返回另一套数据C。这时候我们就需要通过一定的方法才能测试覆盖到这个场景。两个方法:1、使用第三方网络代理,代理到其他城市的网络环境(这里就不细说了,缺点就是网速不稳定,可......
  • 晚上切模拟122行祭
    #include<bits/stdc++.h>#definelllonglong#defineullunsignedlonglong#defineldlongdouble#definegcd(a,b)__gcd(a,b)usingnamespacestd;constintINF=INT_MAX;intn,m,g;map<int,int>region[1005];structNode{ intr; intcnt; ma......
  • MAME模拟器设置连发
    下载一个中文版本的就好很多了。你下载了中文版本的后,吧原来的模拟器除了roms文件夹外,其他的文件都删掉,然后把这个文件夹覆盖新下载的模拟器的roms就行了在‘ok模拟网’有中文版本的模拟器下载进入游戏,按Tab张开设置菜单,在‘输入设置(这个游戏)’里设置好射击键(J),然后向下找到‘连发......
  • LeetCode 121.买卖股票的最佳时机
    1.题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获......
  • FL Studio发布21.1新版!新增Hyper Chorus插件及自动更新功能
    很高兴地宣布在去年12月发布重大版本更新后,FLStudio在2023年8月正式更新到21.1版。本次更新虽然只是维护性质,但我们还是为大家带来了一些全新的功能,包括通过钢琴卷中的音阶捕捉和自定义音符工具,引入更快、更有创意的音符编辑。彩色波形,更好地管理采样。极致的合唱插件"HyperChor......
  • csp模拟<反思>3
    csp模拟21ARC141F首先上结论:如果一个串能用其他串消完那么这个串可以删去;剩下的串中有\(S_i\)是\(S_j\)的子串,那么答案是Yes;如果存在\(S_i=A+B\)和\(S_j=B+C\),且\(A\neqC\)则答案是Yes.第一部分:如何判断一个串\(S_i\)是否能被消完。建AC自动机,预处理\(ma......
  • 1003 Reasoning(大模拟)
    translation现有一个推理系统,有如下符号组成:圆括号:\((\)和\()\)逻辑连词:\(\lnot\)和\(\to\)全称量词:\(\forall\)变量:\(u-z\)常量:\(a-e\)函数:\(f-h\)谓词:\(P-T\)这个推理系统还包括项(term)、公式(formula)、自由出现(freeoccurrence)和替换(replacement)等概念。基于这些......