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

一堆人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. Android 2018最新验证手机号正则表达式

    /** * 判断字符串是否符合手机号码格式 * 移动号段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,18 ...

  2. Android 获取网络类型

    获取网络类型 public class IntenetUtil { //没有网络连接 public static final int NETWORN_NONE = 0; //wifi连接 public ...

  3. [20170825]11G备库启用DRCP连接3.txt

    [20170825]11G备库启用DRCP连接3.txt --//昨天测试了11G备库启用DRCP连接,要设置alter system set audit_trail=none scope=spfil ...

  4. scrapy之spider模块

    scrapy中的spider的用法 : 1.scrapy命令行可以传参数给构造器 scrapy crawl myspider -a category=electronics 构造器接收传入的参数 im ...

  5. fedora 28 安装 wine 运行 uTorrent 解决linux 端,pt 资源下载问题

    fedora 28 仓库中,资源比较多.使用 wine 运行windows 程序,可以一定程度上解决软件跨平台问题. 搜索: Last metadata expiration check: :: ag ...

  6. Centos7下gogs数据配置迁移

    工作需要把测试版的gogs迁移到正式版gogs,顺便记下笔记防止以后需要忘记了 环境: centos7测试版gogs:192.168.1.63 centos7正式版gogs:192.168.0.100 ...

  7. 搜索插入位置的golang实现

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 输入: [,,,], 输出: 输入: [,,,] ...

  8. EasyUI设置选中复选框

    //设置选中 $('#isBind').prop('checked', true); //获取是否选中 var isChecked = $('#isBind').prop('checked'); if ...

  9. 【 nginx 】怎么安装nginx

    一,下载地址:http://nginx.org/en/download.html 二,下载完成之后,是一个安装包,解压之后就能直接使用 三,点击进去我们刚刚解压好的nginx的安装包,打开nginx. ...

  10. Find a multiple POJ - 2356 (抽屉原理)

    抽屉原理: 形式一:设把n+1个元素划分至n个集合中(A1,A2,…,An),用a1,a2,…,an分别表示这n个集合对应包含的元素个数,则:至少存在某个集合Ai,其包含元素个数值ai大于或等于2. ...