这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞

一堆人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 模拟赛(十六)的更多相关文章

  1. EZ 2018 05 20 NOIP2018 模拟赛(十五)

    这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...

  2. EZ 2018 05 04 NOIP2018 模拟赛(十二)

    这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...

  3. EZ 2018 05 13 NOIP2018 模拟赛(十三)

    这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...

  4. EZ 2018 05 01 NOIP2018 模拟赛(十一)

    莫名其妙暴涨Rating 其实题目都挺好挺简单的,但是越简单就越容易ZZ 不理解问什么第一题这么多人找环 不过T2是真心细节题,T3太难了 题目戳这里 T1 仔细分析题意发现那个交换规则就是废话,如果 ...

  5. EZ 2018 02 26 NOIP2018 模拟赛(一)

    这次是校内OJ(HHHOJ)线上比赛,网址:http://211.140.156.254:2333/contest/51 (我去刚刚快写完了手贱关掉了) 这次总体难度也不高,T1&&T ...

  6. EZ 2018 03 30 NOIP2018 模拟赛(六)

    链接:http://211.140.156.254:2333/contest/67 转眼间上次加回来的Rating又掉完了. 这次不知为何特别水,T1想了一段时间没想出来弃了,导致后面心态炸了. T2 ...

  7. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  8. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  9. EZ 2018 06 24 NOIP2018 模拟赛(二十)

    很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...

随机推荐

  1. 安卓开发_WebView如何在Fragment中使用

    之前学习了如何在activity中使用WebView控件来显示网页. 在我的实际开发中,有需要在Fragment中用到WebView控件的,那么就百度学习了一下 其实很简单,但是当然不是和在Activ ...

  2. 理解ES6中的Promise

    一.Promise的作用 在ajax请求数据的过程中,我们可以异步拿到我们想要的数据,然后在回调中做相应的数据处理. 这样做看上去并没有什么麻烦,但是如果这个时候,我们还需要做另外一个ajax请求,这 ...

  3. g4e基础篇#1 为什么要使用版本控制系统

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...

  4. FUSE 文件系统 example部分 源码注释 (libfuse 2.9.9)

    本篇文章主要是针对fuse-2.9.9 Example 部分 给出的源码,结合官方文档,以及网上的资料给出注释,希望能给正在学习的你们一点帮助. Hello.c /* FUSE: Filesystem ...

  5. Linux 小知识翻译 - 「内核(kernel)」

    上次介绍了Linus Torvalds, 这次介绍他开发的「内核」. 经常听人提到「Linux kernel」,但如果被问到「kernel究竟是什么?」的话,会出乎意料的觉得难以回答. 那么,kern ...

  6. 回文数的golang实现

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数 输入: 输出: true 输入: - 输出: false 解释: 从左向右读, 为 - . 从右向左读, 为 - ...

  7. mysql 拒绝访问的解决办法

    java.sql.SQLException: null,  message from server: "Host 'xxx' is not allowed to connect to thi ...

  8. HTTP数据组织方式

    HTTP网络传输中的数据组织方式有三种方式: 1.HTML方式 2.XML方式 3.JSON方式     XML介绍:XML称为可扩展标记语言,它与HTML一样,都是SGML(标准通用标记语言) XM ...

  9. 寒假训练——搜索 E - Bloxorz I

    Little Tom loves playing games. One day he downloads a little computer game called 'Bloxorz' which m ...

  10. IOS - 执行时 (经常使用函数)

    能够通过NSObject的一些方法获取运行时信息或动态运行一些消息: /*Returns a Boolean value that indicates whether the receiving cl ...