// 此博文为迁移而来,写于2015年7月22日,不代表本人现在的观点与看法。原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w72i.html

1、总结
       向总表示今天的题目简单些,恩我觉得我又单纯了。今天的分数略低啊,第三题的动规只有10分,第一题的暴力也TLE了一堆,最后就剩下个150分了。
 
2、题解
       T1 坐船问题(TAG:结论题)

 
       简直就是一道结论题啊!这道题不存在什么算法。最开始想到的是二分图匹配,但是过于繁琐,而且已经证出存在反例。首先对于两个对象A和B,如果他们姓相同或者名相同,则将两者之间连一条边,任何相对之间存在姓相同或名相同关系的点,便会组成一个连通块,通过对其中的分析,可以得出其中的结论。具体的我没有做出来,大家可以看看解题报告中的一段话,代码就不上了。

 
T2 多边形划分问题(TAG:动态规划)
 

【P.S 标题有误,特此提醒】

一道动态规划题目,核心在于对于多边形的每一个顶点进行编号,根据n边形由n-2个三角形组成的原理,可以设计出状态。

 
代码:
---------------------------------------------------------------------------------------------------
#include cstdio
#include cstring
#define MAXN 105
#define MOD 100000
#define INF 1<<30
 
typedef long long arr[MAXN];
 
long long max(long long a,long long b) { return (a>b)?a:b; }
arr f[MAXN][MAXN],a,s1,s2,s3;
long long n;
 
void mark(arr &c)
{
        for (int i=1;i<=c[0];i++)
        {
                c[i+1]+=c[i]/MOD;
                c[i]%=MOD;
        }
        while (c[c[0]+1])
        {
                c[0]++;
                c[c[0]+1]+=c[c[0]]/MOD;
                c[c[0]]%=MOD;
        }
}
 
void multi(long long a1,long long a2,long long a3,arr &s)
{
         memset(s,0,sizeof(s));
         s[0]=s[1]=1;
         for (int i=1;i<=s[0];i++) s[i]*=a1; mark(s);
         for (int i=1;i<=s[0];i++) s[i]*=a2; mark(s);
         for (int i=1;i<=s[0];i++) s[i]*=a3; mark(s);
}
 
void addVal(arr a,arr b,arr &c)
{
     memset(c,0,sizeof(c));
     c[0]=max(a[0],b[0]);
     for (int i=1;i<=c[0];i++) c[i]=a[i]+b[i];
     mark(c);
}
 
int check(arr a,arr b)
{
        if (a[0]<b[0]) return 0;
        if (a[0]>b[0]) return 1;
        for (int i=a[0];i>=1;i--)
                if (a[i]
                else if (a[i]>b[i]) return 1;
        return 0; 
}
 
int main()
{
        freopen("polygon.in","r",stdin);
        freopen("polygon.out","w",stdout);
        scanf("%I64d",&n);
        for (int i=1;i<=n;i++) scanf("%I64d",&a[i]);
        for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++) f[i][j][0]=1;
        for (int i=n-2;i>=1;i--)
                for (int j=i+2;j<=n;j++)
                {
                        f[i][j][0]=INF;
                        for (int k=i+1;k<=j-1;k++)
                        {
                                multi(a[i],a[k],a[j],s1);
                                addVal(f[i][k],f[k][j],s2);
                                addVal(s1,s2,s3);
                                if (check(f[i][j],s3)) memcpy(f[i][j],s3,sizeof(f[i][j]));
                        }
                }
        printf("%I64d",f[1][n][f[1][n][0]]);
        for (int i=f[1][n][0]-1;i>=1;i--) printf("I64d",f[1][n][i]);
        printf("\n");
}
----------------------------------------------------------------------------------------------------
       
T3  系统可靠性问题(TAG:动态规划)
 

这道题是比较简单的完全背包问题了,但是由于考试时候匆匆忙忙,写萎了,结果只得了10分。含有一个值得注意的地方,读入的时候,对于每一个零件,题目中并没有给出他的备用零件个数选择有多少种方式,所以需要在读入时判断回车符。

 
代码略。
 
T4 重复子串问题(TAG:KMP算法)
 

暴力大法好!有人打了个暴力就A了真是不能忍。。。我开始想过这种做法,但是看到数据范围后就弃疗了,然而并不清楚为什么可以A了。先说说暴力的做法吧:对于每一个字母数字组合,记录其曾经出现过的位置,依次进行比较,得到重复串后判断是否相连即可。正解的话是江哥跟我们讲的,可以巧妙利用KMP算法的fail指针。

 
代码略。
 
 

[考试]NOIP2015模拟题2的更多相关文章

  1. HDU 2093 考试排名 模拟题

    解题报告: 题目描述:写一个程序给一个编程考试C++实时提交系统排名,给你的数据是题目的总数,每次错误提交罚的时间分,每位用户的姓名,然后是输入用户每题的完成情况,有一下几种情况,第一,输入只有一个正 ...

  2. [题解+总结]NOIP2015模拟题2

    // 此博文为迁移而来,写于2015年7月22日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w72i.html 1.总 ...

  3. 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划

    [NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...

  4. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  5. PMP全真模拟题真题試題含答案解析 2019年下半年PMP考試适用 PMP中文文对照试题 【香港台灣地區PMP考試也可用】

    PMP全真模拟题真题试题 含答案解析 2019年下半年PMP考试适用 PMP中文文对照试题 [香港台灣地區PMP考試也可用]PMP全真模擬題真題試題 含答案解析 2019年下半年PMP考試适用 PMP ...

  6. 更新 | 2019年9月计算机二级office模拟题库

    随着2019年上半年计算机二级考试的完美落幕,紧接着的便是9月份的考试了. 到目前为止,下半年9月份计算机二级考试报名开通时间在6月前后,现在也基本结束. 2019年9月(56次)全国计算机等级考试( ...

  7. JZOJ 4298. 【NOIP2015模拟11.2晚】我的天

    4298. [NOIP2015模拟11.2晚]我的天 (File IO): input:ohmygod.in output:ohmygod.out Time Limits: 1000 ms Memor ...

  8. 【NOIP2015模拟11.5】JZOJ8月5日提高组T2 Lucas的数列

    [NOIP2015模拟11.5]JZOJ8月5日提高组T2 Lucas的数列 题目 PS:\(n*n*T*T<=10^{18}\)而不是\(10^1*8\) 题解 题意: 给出\(n\)个元素的 ...

  9. 【NOIP2015模拟11.2晚】JZOJ8月4日提高组T2 我的天

    [NOIP2015模拟11.2晚]JZOJ8月4日提高组T2 我的天 题目 很久很以前,有一个古老的村庄--xiba村,村子里生活着n+1个村民,但由于历届村长恐怖而且黑暗的魔法统治下,村民们各自过着 ...

随机推荐

  1. ES6高级技巧(五)

    Set 由于Set结构没有键名,只有键值所有keys方法和values方法的行为完全一致 let a=new Set([1,2,3,4]) //a.keys() a.values() 或者直接用of遍 ...

  2. SQL Server ---------- 分离数据库 生成 .mdf文件

    1.首先查看你要分离的数据库存储的位置 选中需要分离的数据数据库右击鼠标点击属性 要是记不住建议    复制一下 2.分离数据库      生成  .mdf 文件 右击 -----> 任务 -- ...

  3. kubeadm安装kubernetes 1.16.2

    目录 简介 环境说明 安装 准备基础环境 安装docker 安装kubeadm.kubelet.kubectl 配置kubeadm-config.yaml 部署master 安装flannel网络插件 ...

  4. Java中List集合去除重复数据的六种方法

    1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...

  5. Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)

    ​简介 通过上一篇宏哥给各位小伙伴们的引荐,大家移动对这位美女有了深刻的认识,而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里,是不是这样呢???不要害羞直接告诉宏哥:是,就对了.宏哥要的就是这个 ...

  6. ZYNQ笔记(2):PS端——Hello World !

    PL端使用过后,来到了ZYNQ核心的部分:PS端,现在用Vivado软件对ZYNQ-7000开发板的PS端进行第一个程序设计:Hello World. 一.新建Vivado工程 1.打开Vivado, ...

  7. 基于FlexBox的无约束自适应

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/11972664.html,多谢,=.=~ 一.背景描述   对于通用型带过滤条件的列表查询项目中, ...

  8. 聊聊Lambda架构

    定义 在数据分析场景中,我们可能会遇到这样的问题.例如,我们要做一个推荐系统,如果我们用批处理任务去做,一天或者一小时的推荐频次明显延迟太大.如果用流处理任务,虽然延迟的问题解决了,然而只用实时数据而 ...

  9. node、npm、gulp安装

    1.先安装node.js ,官网下载地址:https://nodejs.org/en/ 2.安装完node之后,npm自动就安装了.可以直接在visual studio code 通过命令查看 nod ...

  10. IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33)

    目录 观察IEEE浮点表示 工作中遇到过整型转浮点型(union那种转换),碰到就看下书,过后就遗忘了.等过段时间又出现此现象,又重新拿起书本,这次记录了过程.然而一直等到今天才写出来,以防以后还用到 ...