zoukankan      html  css  js  c++  java
  • 2017 10 10 模拟赛T1

    初次见面(firstmeet)

    一段很一颗赛艇的题目背景:

    雾之湖边,静得可怕。
    露米娅出神凝望。黑白连衣裙,像极了绽放的墨黑和洁白的莲。身边的雾之
    湖,倒映着血色天空。酒红的双眸,映照一切。低声浅笑,双臂伸直,她悄无声
    息地没入一抹黑暗中,纵身一跃,便穿梭在无尽的苍穹之下。 漆黑,在她的身
    影上缠绕,蔓延...... 空中,红白的巫女灵梦正在低低的飞着,享受着清爽的微风。
    突然,灵梦的速度放缓,笑意渐渐凝固——灵梦与露米娅就此见面。
    灵梦瞳孔骤缩,那嗜血的笑容,无力的啜泣,血红染满的双手,欣慰却又毫
    无生机的微笑......一系列画面先潮水般涌入她的脑海,进而又碎得无影无踪。
    无助,失落,灵梦攥紧双拳,想要留下些什么,却又真的无能为力。终于,
    她厉声向对面喊道:“这红雾是你放的吧!?”话语未落便祭出阴阳玉,摆出阵
    法,绚丽的弹幕旋即铺天盖地地扎了过去。

    问题描述:

    此次灵梦发动的阵法可以看做是一个n*n 的矩阵,阵法的每行都有一个阴阳
    玉,矩阵的其余位置为空,保证任意两个阴阳玉不在同一行,不在同一列,想要
    成功发动阵法,灵梦必须在阵法中放置n 张符纸。符纸的放置需满足以下要求:
    1.有阴阳玉的地方不能放置符纸;
    2.每行只能有一张符纸;
    3.每列只能有一张符纸。
    在满足上述要求下,符纸放置的方案数就为此次阵法的攻击力,求灵梦此次
    阵法的攻击力为多少。

    输入格式:

    第一行一个数n,接下来n行,每行n个数,一个0或一个1

    输出格式:

    一个数,阵法的最大攻击力。

    数据范围:对于100%的数据,n<=5000

    由于此题与斜线无关,所以可以将各行交换,将所有的1都聚集在对角线上,于是这就成为错排问题,使用递推高精求和即可。

    此题来自HAOI2016,不过原题的数据范围只有2000,高精不压位也可以过,但是。这道题的数据范围有5000,最后答案数加起来可能有15000位左右,有可能超时,所以用压位优化(不知道算不算优化)一下。

    #include<cstdio>
    int n,c[20005],b[20005],a[20005],s=1,t;
    int main()
    {
    //    freopen("firstmeet.in","r",stdin);
    //    freopen("firstmeet.out","w",stdout);
        scanf("%d",&n);
        if(n==1)
        {
            printf("0");
            return 0;
        }
        a[1]=1;
        for(int i=2;i<n;i++)
        {
            for(int j=1;j<=s;j++)
            {
                c[j]=a[j];
                a[j]+=b[j];
                b[j]=c[j];
                a[j]*=i;
            }
            for(int j=1;j<s;j++)
            {
                if(a[j]>=10000)
                {
                    a[j+1]+=a[j]/10000;
                    a[j]%=10000;
                }
            }
            while(a[s]>=10000)
            {
                a[s+1]+=a[s]/10000;
                a[s]%=10000;
                s++;
            }
        }
        printf("%d",a[s]);
        for(int i=s-1;i>=1;i--)
        {
            if(a[i]<1000) printf("0");
            if(a[i]<100) printf("0");
            if(a[i]<10) printf("0");
            printf("%d",a[i]);
        }
        return 0;
    }
  • 相关阅读:
    递归遍历树形json
    关于作用域理解的一道题
    微信站 返回上一页并刷新
    Vuex有哪些作用
    两段代码实现vue路由懒加载
    Vuex目录结构推荐
    售后打电话说现场设备出问题了,嵌入式工程师最想干什么?
    Qt编译出现cc1plus.exe: out of memory allocating 65536 bytes问题
    OpenCV计算机视觉编程攻略(第三版)源码
    C++ Json工具--Jsoncpp用法简介
  • 原文地址:https://www.cnblogs.com/zeroform/p/7644931.html
Copyright © 2011-2022 走看看