// 此博文为迁移而来,写于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. [考试]NOIP2015模拟题2

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

  2. 【题解】[NOIP模拟题]我要的幸福-C++

    题目Description我要的幸福(happiness)幸福/我要的幸福/渐渐清楚/梦想/理想/幻想/狂想/妄想/我只想坚持每一步/该走的方向/就算一路上/偶尔会沮丧/生活是自己/选择的衣裳/幸福/ ...

  3. csu 1312 榜单(模拟题)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312 1312: 榜单 Time Limit: 1 Sec  Memory Limit: 128 ...

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

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

  5. 《ACM国际大学生程序设计竞赛题解Ⅰ》——模拟题

    这篇文章来介绍一些模拟题,即一类按照题目要求将现实的操作转换成程序语言. zoj1003: On every June 1st, the Children's Day, there will be a ...

  6. PAT甲级 模拟题_C++题解

    模拟题 PAT (Advanced Level) Practice 模拟题 目录 1008 Elevator (20) 1042 Shuffling Machine (20) 1046 Shortes ...

  7. 【题解】NOIP2015提高组 复赛

    [题解]NOIP2015提高组 复赛 传送门: 神奇的幻方 \([P2615]\) 信息传递 \([P2661]\) 斗地主 \([P2668]\) 跳石头 \([P2678]\) 子串 \([P26 ...

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

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

  9. 【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\)个元素的 ...

随机推荐

  1. jQuery 操作复选框(checkbox) attr checked不起作用

    参考资料 http://www.paobuke.com/develop/javascript/pbk849.html   这天用到jQuery功能,想实现一个简单的复选框动态全选或全不选,结果测试发现 ...

  2. SVN 操作指南

    1.安装 和 使用 2.导入导出 2.错误信息 ① svn不知到这样的主机

  3. Windows 10 周年更新正式版下载 + win10 快捷键

    Windows 10 周年更新正式版  360云资源总汇(施工中): https://yunpan.cn/c6Svi7Az52XBs (提取码:e5dd)今后提到周年更新版.1607版或RS1版,都是 ...

  4. JavaScript - UnderScore

    UnderScore 第一步 call(this) (function() {}.call(this)); 一些简单的初始化操作 (function() { var root = this; var ...

  5. angularjs 菜鸟教程 版本1.4.6

    最简angularJS webstorm代码提示 在 head 里面添加:<script src="https://ajax.googleapis.com/ajax/libs/angu ...

  6. Java关键字native、volatile、transient

    native native是方法修饰符.Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法.一般用于JNI中. native关键字说明其修饰的方法是一个原生态方法,方 ...

  7. loj 1210 (求最少的加边数使得图变成强连通)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1210 思路:首先是缩点染色,然后重建并且统计新图中的每个点的入度和出度,于是答案就是m ...

  8. 德飞莱STM32单片机学习(一)——下载环境搭建

    一.下载驱动安装. 1.手动打开CH341 文件夹(驱动程序文件夹内) ,双击安装驱动 2. 尼莫M3S 开发硬件设置 硬件需要做到以下2 点:1. USB插入USB1(COM),打开电源开关J14( ...

  9. Loadrunne实现多个场景运行

    如何让Loadrunne实现多个场景运行? 场景分析: 有3个不同的场景,分别为搜索,下载,上传,其中3个场景执行顺序为按照搜索->下载->上传流程操作:哪么如何让Loadrunner中如 ...

  10. windows进程中的内存结构[转载]

    在阅读本文之前,如果你连堆栈是什么多不知道的话,请先阅读文章后面的基础知识. 接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据.那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变 ...