共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. [Swift通天遁地]一、超级工具-(8)地图视图MKMapView的常用代理方法

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. $CF241D\ Numbers$

    problem 题目大意: 给你n个数和p,都小于50000要求留下若干个数字,使得剩下的数字异或为0,并且从左到右串联起来可以被p整除,求一种这样的方案. 搜索 #include <bits/ ...

  3. CF482C Game with Strings

    题意 你和你的朋友玩一个游戏,游戏规则如下. 你的朋友创造 n 个长度均为 m 的不相同的字符串,然后他随机地选择其中一个.他选择这些字符串的概率是相等的,也就是说,他选择 n 个字符串中的每一个的概 ...

  4. 最大流增广路(KM算法) HDOJ 1533 Going Home

    题目传送门 /* 最小费用流:KM算法是求最大流,只要w = -w就可以了,很经典的方法 */ #include <cstdio> #include <cmath> #incl ...

  5. AOP面向方面编程---postsharp

    PostSharp是一个用于在.NET平台上实现AOP(Aspect-Oriented Programming,面向方面编程)的框架,现通过简单的示例代码来演示如何使用postsharp. 1.新建一 ...

  6. 由ibatis向mybatis的转变

    我将项目引用的ibatis换成mybatis 过程中遇到一个问题:org.apache.ibatis.datasource.DataSourceException: Unknown DataSourc ...

  7. 全志A33平台编译linux(分色排版)V1.1

    全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/13 10:41 版本:V1.1 (一)解压缩lichee备用 ...

  8. 用纯函数式思维在Java8下写的一段奇葩程序

    首先说一下什么是纯函数式.在我的理解,"纯函数式"用一句话就可以描述:Anything is value.--我的理解不一定准确,但我就是这么理解的. 就是所有的东西都是值--没有 ...

  9. 一次“MySQL server has gone away”故障及其解决

    1,问题现象 某次测试发现,程序失去响应.由于程序集成了EurekaLog组件,弹出了错误框.查看其给出的Call Stack信息,发现没有发生线程死锁(DeadLock=0;),问题在于 Wait ...

  10. Struts工作机制

    Struts工作机制? 为什么要使用Struts?工作机制:Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config. ...