EZ 2018 05 26 NOIP2018 模拟赛(十六)
这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了
一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating。
不过还好最后5min的时候想出了T1正解,否则就会因为少10pts被爆踩了吧
好了开始讲题。
T1
这其实是水题,我们很容易想到DP:
令\(f_{i,j}\)表示前\(i\)个数中有i个数选择正数时的最小价值和,则有转移:
\(f_{i,j}=min(f_{i-1,j-1}+min(a_{i,0},a_{i,1}),f_{i-1,j}-max(a_{i,0},a_{i,1}))\)
其中\(a_{i,0},a_{i,1}\)表示这张纸牌正反面的数字
这里贪心的技巧还是很好想到的,如果是正数的纸牌就让小的一个数露出,负数的纸牌就让大的一个数露出。
然后滚动优化一下即可得到90pts
但是正解其实要简单很多,这也是很好YY的
然后我们现在先假设没有负数这一条件,所以我们总是选择每一对\(min(a_{i,0},a_{i,1})\)来朝上。
但是由于我们有放在负数位置的权利,所以我们可以让一些数变成\(-max(a_{i,0},a_{i,1})\)朝上
然后我们看一下对于从\(min(a_{i,0},a_{i,1})\)变到\(-max(a_{i,0},a_{i,1})\)d的时候,相当于把值减少了:
\(min(a_{i,0},a_{i,1})-(-max(a_{i,0},a_{i,1}))=min(a_{i,0},a_{i,1})+max(a_{i,0},a_{i,1})=a_{i,0},a_{i,1}\)
所以我们对于所有的数按照\(a_{i,0},a_{i,1}\)从大到小排序,然后前面的一些数就放在负数位置了
然后就轻松切掉了
CODE
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100005;
struct data
{
int x,y;
}a[N];
int n,ans;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc(); int flag=1;
while (ch<'0'||ch>'9') { if (ch=='-') flag=-1; ch=tc(); }
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc(); x*=flag;
}
inline int min(int a,int b)
{
return a<b?a:b;
}
inline int max(int a,int b)
{
return a>b?a:b;
}
inline bool comp(data a,data b)
{
return a.x+a.y>b.x+b.y;
}
int main()
{
//freopen("A.in","r",stdin); freopen("A_.out","w",stdout);
register int i; read(n);
for (i=1;i<=n;++i)
read(a[i].x),read(a[i].y);
sort(a+1,a+n+1,comp);
for (i=1;i<=n>>1;++i)
ans-=max(a[i].x,a[i].y);
for (i=(n>>1)+1;i<=n;++i)
ans+=min(a[i].x,a[i].y);
printf("%d",ans);
return 0;
}
T2
这道题还是比较难搞的。
刚开始考虑悬线法,发现没什么用就直接上了DP。
令\(f_{i,j}\)表示以\(a_{i,j}\)为右下角的正方形的边长为多少,然后我们要求的就是:
\(\sum_{i=1}^n\sum_{j=1}^m\ f_{i,j}(if\ there\ is\ not\ a\ furniture\ on\ a_{i,j})\)
然后我们可以预处理\(l_{i,j},h_{i,j}\)分别表示\(a_{i,j}\)的左边和上面分别最多有多少个格子没有家具
然后则有\(f_{i,j}=min(f_{i-1,j-1}+1,min(l_{i,j},h_{i,j}))\)
特别的如果\(a_{i,j}\)上是家具,那么\(f_{i,j}=-1\)。这个主要是为了抵消对DP方程的影响,使\(f_{I+1,j+1}=0\)
然后\(O(n^2)\)转移即可
然后优化的话就是在\(b\)个点之间转移一下但是我真的不会啊
53ptsCODE
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1005;
int a[N][N],l[N][N],h[N][N],f[N][N],n,m,b,x,y;
long long ans;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline int min(int a,int b)
{
return a<b?a:b;
}
int main()
{
//freopen("B.in","r",stdin); freopen("B.out","w",stdout);
register int i,j;
read(n); read(m); read(b);
for (i=1;i<=b;++i)
read(x),read(y),a[x][y]=1;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
{
if (i^1) h[i][j]=a[i-1][j]?0:h[i-1][j]+1;
if (j^1) l[i][j]=a[i][j-1]?0:l[i][j-1]+1;
}
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if (!a[i][j])
{
f[i][j]=min(f[i-1][j-1]+1,min(l[i][j],h[i][j]));
ans+=f[i][j];
} else f[i][j]=-1;
printf("%lld",ans);
return 0;
}
T3
这道题超级不可做,全场无人写出,集体爆零
大概是一道平面几何+树形DP的题目,也是很不可做的
而且这道题,莫名奇妙地没有开放
然后又是留坑了
EZ 2018 05 26 NOIP2018 模拟赛(十六)的更多相关文章
- EZ 2018 05 20 NOIP2018 模拟赛(十五)
这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...
- EZ 2018 05 04 NOIP2018 模拟赛(十二)
这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...
- EZ 2018 05 13 NOIP2018 模拟赛(十三)
这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...
- EZ 2018 05 01 NOIP2018 模拟赛(十一)
莫名其妙暴涨Rating 其实题目都挺好挺简单的,但是越简单就越容易ZZ 不理解问什么第一题这么多人找环 不过T2是真心细节题,T3太难了 题目戳这里 T1 仔细分析题意发现那个交换规则就是废话,如果 ...
- EZ 2018 02 26 NOIP2018 模拟赛(一)
这次是校内OJ(HHHOJ)线上比赛,网址:http://211.140.156.254:2333/contest/51 (我去刚刚快写完了手贱关掉了) 这次总体难度也不高,T1&&T ...
- EZ 2018 03 30 NOIP2018 模拟赛(六)
链接:http://211.140.156.254:2333/contest/67 转眼间上次加回来的Rating又掉完了. 这次不知为何特别水,T1想了一段时间没想出来弃了,导致后面心态炸了. T2 ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- EZ 2018 06 24 NOIP2018 模拟赛(二十)
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...
随机推荐
- Application.Current的使用
来源 http://www.cnblogs.com/symons/archive/2010/03/15/1686200.html Application.Current的使用 WPF程序对应一个App ...
- 二. Redis 安全性
由于Redis速度相当快,当一台服务器比较好的时候,一个外部用户可以在一秒钟内进行150K(15万)次的密码尝试,因此意味着你需要设置一个非常非常强大的密码来防止暴力破解. 1.设置密码 (1). 通 ...
- 聊聊setTimeout和setInterval线程
在聊setTimeout和setInterval这两个事件的前,先聊另外一个与之密切关联的知识点,那就是线程(thread).而线程有常常跟另外一个词语--“进程”一起出现.那么何为线程?何为线程呢? ...
- Linux的命名空间详解--Linux进程的管理与调度(二)【转】
Linux Namespaces机制提供一种资源隔离方案. PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace.每个Namespace里面的资源对其他Namesp ...
- CRM lookup筛选
function Loadcouse() { var type; var id; retrieveRecord(Xrm.Page.getAttribute("ownerid").g ...
- U盘内容被病毒隐藏的解决办法(亲测可用)
前几天用U盘的时候不小心感染上了病毒,用自己的电脑打开后里面只剩下一个U盘的快捷方式,选中显示隐藏文件之后依然没有任何显示,但是查看U盘的属性的时候可以看到,U盘已经使用了300多M,所以就上网查了一 ...
- AD域自定义属性《完整》
1.安装Active Directory 架构,下载:adminpak.msi安装. 2.以管理员运行cmd,执行:regsvr32 schmmgmt.dll(该命令将在计算机上注册“schmmgmt ...
- php把阿拉伯数字转为银行数字大写
php把阿拉伯数字转为银行数字大写 前言:之前在做一个外贸公司的询报价系统时用到了记录关于金额的数据,一般阿拉伯数字都需要转为银行使用的大写数字,在这简单记录一下 /* * 数字金额转换成中文大写金额 ...
- WCF REST模式下的UriTemplate路径问题
问题:在WCF4.0中,用UriTemplate进行表明路径参数的时候会出现问题 1.创建的项目是Service.Interface[4.0]和Service[4.0]还有Client[4.0] 2. ...
- Lua与C交互之基础操作(1)
@(语言) Lua是一个嵌入式的语言,可以Lua可以作为程序库用来扩展应用的功能,也可以注册有其他语言实现的函数,这些函数可能由C语言(或其他语言)实现,可以增加一些不容易由Lua实现的功能.这就是L ...