共3道题目,时间3小时

题目非原创,仅限校内交流使用

题目名称

Graph

Incr

Permutation

文件名

graph

incr

permutation

输入文件

graph.in

incr.in

permutation.in

输出文件

graph.out

incr.out

permutation.out

时间限制

1000ms

1000ms

1000ms

内存限制

256mb

256mb

256mb

测试点数目

10

10

10

测试点分值

10

10

10

是否有部分分

题目类型

传统

传统

传统

评测环境

操作系统:Windows XP Professional SP3

CPU: Intel(R) Pentium(R) CPU G2030 @ 3.00GHz (2CPUs)

系统内存:2GB

评测工具:Cena 0.8.

Problem 1 Graph (graph.cpp/c/pas)

【题目描述】

给出 N 个点,M 条边的有向图,对于每个点 v,求 A(v) 表示从点 v 出发,能到达的编号最大的点。

【输入格式】

第 1 行,2 个整数 N,M。 接下来 M 行,每行 2 个整数 Ui,Vi,表示边 ⟨Ui,Vi⟩。点用 1,2,...,N 编号。

【输出格式】

N 个整数 A(1),A(2),...,A(N)。

【样例输入】

4 3

1 2

2 4

4 3

【样例输出】

4 4 3 4

【数据范围】

对于 60% 的数据,1 ≤ N,K ≤ 10^3;

对于 100% 的数据,1 ≤ N,M ≤ 10^5。

思路

dfs/Tarjan/拓扑序列/bfs皆可。

Problem 2 Incr(incr.cpp/c/pas)

【题目描述】

数列 A1,A2,...,AN,修改最少的数字,使得数列严格单调递增。

【输入格式】

第 1 行,1 个整数 N

第 2 行,N 个整数 A1,A2,...,AN

【输出格式】

1 个整数,表示最少修改的数字

【样例输入】

3

1 3 2

【样例输出】

1

【数据范围】

对于 50% 的数据,N ≤ 10^3

对于 100% 的数据,1 ≤ N ≤ 10^5,1 ≤ Ai ≤ 10^9

思路

对于每个Ai,先减去i,然后求最长严格上升子序列a;

ans=n-a;

代码实现

 #include<cstdio>
const int maxn=1e5+;
int n,a;
int s[maxn],v[maxn];
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&s[i]),s[i]-=i;
v[++a]=s[];
for(int i=;i<=n;i++){
if(v[a]<s[i+]) v[++a]=s[i+];
else
for(int j=;j<=a;j++)
if(s[i+]<v[j]){v[j]=s[i+];break;}
}
printf("%d",n-a);
return ;
}

Problem 3 Permutation (permutation.cpp/c/pas)

【题目描述】

将 1 到 N 任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。

问在所有排列中,有多少个排列恰好有K个“<”。

例如排列(3, 4, 1, 5, 2)

3 < 4 > 1 < 5 > 2

共有2个“<”

【输入格式】

N,K

【输出格式】

答案

【样例输入】

5 2

【样例输出】

66

【数据范围】

20%:N <= 10

50%:答案在0..2^63-1内

100%:K < N <= 100

思路

DP方程:f[i][j]=f[i-1][j]*(j+1)+f[i-1][j-1]*(i-j);

代码实现

 #include<cstdio>
const int maxn=;
inline int max_(int x,int y){return x>y?x:y;}
int n,k;
int s[][][];
void tot(int i,int j,int v1,int v2){
int b=max_(s[i^][j][],s[i^][j-][]);
for(int a=;a<=b;a++) s[i][j][a]=s[i^][j][a]*v1+s[i^][j-][a]*v2;
for(int a=;a<=b;a++)
if(s[i][j][a]>){
s[i][j][a+]+=s[i][j][a]/;
s[i][j][a]%=;
if(a==b) b++;
}
s[i][j][]=b;
}
void put(int i,int j){
printf("%d",s[i][j][s[i][j][]]);
for(int a=s[i][j][]-;a>;a--)
printf("%03d",s[i][j][a]);
}
int main(){
freopen("permutation.in","r",stdin);
freopen("permutation.out","w",stdout);
scanf("%d%d",&n,&k);
s[][][]=s[][][]=s[][][]=s[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<=k;j++)
tot(i&,j,j+,i-j);
put(n&,k);
return ;
}

20170613NOIP模拟赛的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  3. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  4. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  5. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  6. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

  7. PKUSC 模拟赛 day1 下午总结

    下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...

  8. [GRYZ]寒假模拟赛

    写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...

  9. BZOJ2741: 【FOTILE模拟赛】L

    2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1170  Solved: 303[Submit][Status] ...

随机推荐

  1. ubuntu下编译VLC源码

    http://blog.csdn.net/beitiandijun/article/details/9225591ubuntu下编译VLC源码 分类: 视频处理 2013-07-02 17:33 57 ...

  2. ci框架中model简单的mysql操作

    <?php class SingerModel extends CI_Model { function SingerModel() { //会将数据库对象赋值给CI_Controller的db属 ...

  3. Java 基础入门随笔(5) JavaSE版——函数重载

    1.函数 函数就是定义在类中具有特定功能的一段独立小程序,也称为方法. 定义函数的格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)         {      ...

  4. dutacm.club_1094_等差区间_(线段树)(RMQ算法)

    1094: 等差区间 Time Limit:5000/3000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/Others)Total ...

  5. CAD梦想看图6.0安卓版详情介绍

    下载安装 MxCAD6.0(看图版).2018.10.22更新,扫描下面二维码,安装CAD梦想看图:   下载地址: http://www.mxdraw.com/help_8_20097.html 软 ...

  6. vue学习总结(简单介绍)

    声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统: <div id="app"> {{ message }} < ...

  7. 00Extensible Markup Language

    Extensible Markup Language XML(Extensible Markup Language)可扩展标记语言是用来网络数据的组织结构,传输及存储.

  8. Intel要在中国投35亿美金造这种闪存,3DxPoint技术牛在哪里?

    Repost: https://www.leiphone.com/news/201508/bbCUJqS2M3glCY3m.html 编者按: 今年的IDF上,Intel 再次强调了3DxPoint闪 ...

  9. Maven 项目debug调试时报Source not found.异常

    正如异常描述,那么解决方法当然是指定源码. 测试于:Maven 3.0.5, eclipse-jee-indigo-SR2-win32 异常信息: Source not found. 解决方法: 首先 ...

  10. linux下C/C++程序的内存布局

    内核空间和用户空间: 我们在编写程序时使用的内存空间叫虚拟内存,程序在运行时,要完成虚拟内存到物理内存的转换.假如在32位环境上,理论上我们可以使用的虚拟内存空间是4GB,但实际上这4GB并不能完全给 ...