NOIP2016 模拟赛
7.10
T1:求出一个矩阵中平均数大于0的子矩阵的最大面积.
T2:给出一个N行的,第I行有n+1-i的倒三角形,从中选取m个数,只有当前数的左上角和右上角都被选是才能选当前数,求选的数字的最大和
T3:给一个有向无环图,求任意两点间距离除以边数的最小值.
Sol:
T1:n^2枚举行的两端,然后用处理出当前列的前缀和,只有Sum[i]-Sum[j]>0时j+1~i才满足要求 并且要求i-j最大.我们把它按照数值排序,注意Sum[0]也算,排序后从0扫到n就可以得到最小的Id值,每次更新最小的Id,和最长的距离就可以了.
T2:斜着进行DP,第一个斜行长度为n,第n个斜行长度为1,刷了改行个斜行长度为K,那么前一行长度要小于等于K+1。最后输出Max(F[n][0][m],F[n][1][m]) STD的做法奥妙重重.
T3.直接Floyd但是要记录边长的Floyd,暴力枚举就可以了.
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define LL long long
using namespace std;
const LL Maxn=;
const LL Inf=(LL)<<;
LL a[Maxn][Maxn],Sum[Maxn][Maxn],n,m,Ans;
struct Node{LL v,id;}S[Maxn];
inline LL Max(LL x,LL y) {return x>y?x:y;}
inline LL Min(LL x,LL y) {return x>y?y:x;}
inline bool cmp(Node A,Node B)
{
if (A.v==B.v) return A.id>B.id;
return A.v<B.v;
}
int main()
{
scanf("%lld%lld",&n,&m);
for (LL i=;i<=n;i++)
{
Sum[i][]=;
for (LL j=;j<=m;j++) scanf("%lld",&a[i][j]),Sum[i][j]=Sum[i][j-]+a[i][j];
}
Ans=;
for (LL i=;i<=m;i++)
{ for (LL j=i;j<=m;j++)
{
S[].v=; S[].id=;
for (LL k=;k<=n;k++) S[k].v=S[k-].v+(Sum[k][j]-Sum[k][i-]),S[k].id=k;
sort(S,S+n+,cmp); LL Mx=,Mn=Inf;
for (LL k=;k<=n;k++)
{
Mn=Min(Mn,S[k].id);
Mx=Max(Mx,S[k].id-Mn);
}
Ans=Max(Ans,Mx*(j-i+));
}
}
printf("%lld\n",Ans);
return ;
}
T1
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[][],Sum[][],F[][][],n,m;
inline int Max(int x,int y) {return x>y?x:y;}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
for (int j=;j<=n-i+;j++) scanf("%d",&a[i][j]);
for (int i=;i<=n;i++)
for (int j=;j<=n-i+;j++) Sum[j][i]=Sum[j-][i]+a[j][i]; for (int i=;i<=n;i++)
for (int j=;j<=n-i+;j++)
for (int k=;k<=j+;k++)
for (int s=j;s<=m;s++)
F[i][j][s]=Max(F[i][j][s],F[i-][k][s-j]+Sum[j][i]); printf("%d\n",Max(F[n][][m],F[n][][m]));
return ;
}
T2
#include <cstdio>
const int Inf=0x3f3f3f3f;
int F[][][],n,m,q,u,v,w,G[][];
inline int Min(int x,int y) {return x>y?y:x;}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
for (int k=;k<=n;k++) F[i][j][k]=Inf;
for (int i=;i<=n;i++) F[i][i][]=;
for (int i=;i<=m;i++)
scanf("%d%d%d",&u,&v,&w),F[u][v][]=Min(F[u][v][],w); for (int k=;k<=n;k++)
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
for (int p=;p<=n;p++)
F[i][j][p]=Min(F[i][j][p],F[i][k][p-]+F[k][j][]);
scanf("%d",&q);
for (int i=;i<=q;i++)
{
scanf("%d%d",&u,&v); double Ans=(double)Inf;
if (G[u][v]!=) Ans=G[u][v]; else
{
for (int j=;j<=n;j++)
if (F[u][v][j]<Inf && ((double)(F[u][v][j])/(double)(j))<Ans) Ans=((double)(F[u][v][j])/(double)(j));
}
G[u][v]=Ans;
if (Ans>=Inf) puts("OMG!"); else printf("%0.3lf\n",Ans);
}
return ;
}
T3
7.11
T1. 注意到我们并不需要求出具体的周期是多少。
如果
NOIP2016 模拟赛的更多相关文章
- 串门赛: NOIP2016模拟赛——By Marvolo 丢脸记
前几天liu_runda来机房颓废,顺便扔给我们一个网址,说这上面有模拟赛,让我们感兴趣的去打一打.一开始还是没打算去看一下的,但是听std说好多人都打,想了一下,还是打一打吧,打着玩,然后就丢脸了. ...
- 学军NOIP2016模拟赛1
GTMD这么水的一套题没有AK T1:妥妥的二分答案,贪心check. T2:问题可以转化为最长上升(还是下降我记不住了)子序列. T3:发现点被覆盖上的顺序是一定的.求出这个顺序,第一个操作在线段树 ...
- NOIP2016模拟赛三 Problem B: 神奇的树
题面 Description 有一棵神奇的树.这棵树有N个节点,在每个节点上都有宝藏,每个宝藏价值V[i]金币:对于每条边,每经过一次都要花费C[i]金币. 值得注意的是,每个宝藏只能领取一次(也可以 ...
- NOIP2016模拟赛三 Problem C: 不虚就是要AK
题目大意 给定一棵带有边权的树, 问你在树上随机选两个点, 它们最短路径上的边权之和为\(4\)的倍数的概率为多少. Solution 树分治. 没什么好讲的. #include <cstdio ...
- 5.4QBXT 模拟赛 (Rank1 机械键盘 蛤蛤)
NOIP2016提高组模拟赛 ——By wangyurzee7 中文题目名称 纸牌 杯具 辣鸡 英文题目与子目录名 cards cups spicychicken 可执行文件名 cards cups ...
- 4.28 QBXT模拟赛
NOIP2016提高组模拟赛 ——By wangyurzee7 中文题目名称 迷妹 膜拜 换数游戏 英文题目与子目录名 fans mod game 可执行文件名 fans mod game 输入文件名 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
随机推荐
- volatile关键字及编译器指令乱序总结
本文简单介绍volatile关键字的使用,进而引出编译期间内存乱序的问题,并介绍了有效防止编译器内存乱序所带来的问题的解决方法,文中简单提了下CPU指令乱序的现象,但并没有深入讨论. 以下是我搭建的博 ...
- 关于maven
主要涉及的配置文件是setting.xml与pom.xml 其中setting配置文件主要负责加载jar包路径设置, pom.xml文件主要负责jar包配置. 包含jar包的版本. maven打包:之 ...
- [IOS 开发]TableView如何刷新指定的cell 或section
//一个section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:]; [tableview reloadSections:ind ...
- CentOS 6.7 中安装Emacs 24.5
Emacs 版本:http://mirror.bjtu.edu.cn/gnu/emacs/emacs-24.5.tar.gz CentOS 内核版本:2.6.32-573.el6.x86_64 参考资 ...
- php实现递归的三种方式: 遍历文件夹实例
递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去.实现递归函数可以采取什么方式呢?本文列出了三种基本方式.理解其原来需要一定的基础知识 ...
- Android FragmentTransactionExtended:使Fragment以多种样式动画切换
有多种fragment之间切换的效果,效果是这样的: Demo的实现是很简单的. 在res/values中,新建一个arrays.xml文件,存放Fragment动画效果的名称,在spinner中使用 ...
- android两种基本联网方式与一种第三方开源项目的使用
安卓请求网络的三种方式 在请求网络的时候一般常用的提交方式是post或者get请求,post请求安全,传输大小无限制,但是代码量多些,get请求是浏览器有大小限制,用户提交的信息在浏览器的地址栏显示出 ...
- Matrix(单点移动,多点缩放)
package cn.iris.matrixapi; import android.app.Activity; import android.graphics.Matrix; import andro ...
- JAVA 序列化
一.概念 序列化:将对象转换为字节序列的过程. 反序列化:将字节序列恢复为对象的过程. 二.简单示例 package serialization; import java.io.Serializabl ...
- 转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程
一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这 ...