HRBU--10.1训练

A - CQXYM Count Permutations

 题意:

给定n,表示一个长度为2n的数组,数组内部的元素为1~2n的数字且不重复,求该数组全排列时数组中有n对a[i]<a[i+1]。求这样的排列有多少个?

做法:

2n个数全排列一共有2n!种情况,因为是全排列,具有对称性!,所以满足条件的排列情况恰好是一半,也就是2n!/2,但是该题中数据范围太大了,求2n!的时候我们得保证不会炸范围,所以在算的过程中就得进行取模,其次/2这个因为求阶乘时有2出现就直接抵消了,所以循环从3开始。

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll mod=1e9+7;
int t,n,m,k;
string s;

int main()
{
    ios::sync_with_stdio(false);
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        ll sum=1;
        for(int i=3;i<=2*n;i++)
            sum=sum*i%mod;
        cout<<sum<<endl;
    }
    return 0;
}

B - Diameter of Graph

题意:

给定一个无向图的点,总边数以及最长的长度(任意两点之间的边不得大于这个长度)问能否构成一个无重复边且没有内部环的存在的图

做法:

只知道一点浅薄图的知识,首先构成图最多的边数是(n*(n-1))/2,最少也得是n-1,所以我们就可以排除两种种情况

输出NO的情况:1、m>n*(n-1))/2 2、m<n-1 3、k<=1 (当直径<=1时,除非你是一个点否则根本满足不了条件) 4、k==2时只满足三点且两边的情况 5、k>=3时只有m=(n*(n-1))/2时才满足

以及一个特判的YES情况:n==1且m==0;

但是我WA了。。。不知道为啥

C - Portal

题意:

构造MC的地狱传送门(MC大佬??)由01组成的矩阵,要求边界必须为1(不包含顶点),且必须是行数>5,列数>4,中间部分必须为0,四个顶点随意,你可以进行的操作就是01反转,问最少几次操作后,你就能构造出一个子矩阵满足条件

思路:

我表示。。。我的菜鸡想法是暴力跑这个矩阵就完了,边界的直接变,然后边界到了,就直接内部清1,但是这个一定会炸。。而且感觉必WA,推荐大佬的博客,虽然我不太明白但是他写的是真的好。

链接:Codeforces Round #745 (Div. 2) A~D - 知乎

D - Mathematics Curriculum

题意:

对于 (1,2,3,...n) 的某个排列,取其中某个数 x ,考虑所有包含 x 的一段。若这些段的最大值的集合中,恰好含有 [公式] 个元素,则称 [公式] 是“好”的。

给定n,m,k,求满足以下条件的排列的个数:

恰有k个数是“好”的。

(转载至:Codeforces Round #745 (Div. 2) A~D - 知乎)(我是真看不懂。。。QAQ)

思路:

我推荐直接楼上,但是我还是得写一手

三阶DP,加油,dalao们!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值