这次的试卷应该是激励我们一下的,链接

然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩

掉了5rating但Rank竟然发杀了 X_o_r dalao && YZC dalao

论写暴力的重要性

T1

真心水,直接DFS爆搜即可

O(2^n)不会超,n大了之后可以DP,签到题不解释

CODE

#include<cstdio>
using namespace std;
typedef long long LL;
const int N=20;
int n,a[N],b[N],c[N],d[N];
LL ans=0;
inline LL max(LL a,LL b)
{
return a>b?a:b;
}
inline void DFS(int now,int tot1,int tot2)
{
if (now>n) { ans=max(ans,(LL)tot1*tot2); return; }
DFS(now+1,tot1+a[now],max(tot2-b[now],0));
DFS(now+1,max(tot1-d[now],0),tot2+c[now]);
}
int main()
{
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
register int i;
for (scanf("%d",&n),i=1;i<=n;++i)
scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
DFS(1,0,0);
printf("%lld",ans);
return 0;
}

T2

我去这题考结论

我记得LowestJN dalao在讲这套试卷的时候对于里面的T2讲了一个很重要的公式

在一个无环图中,连通块数=点数-边数

这是不是就是SB题了

我们二维前缀和统计点数和边数,容斥一下即可

点的算法比较简单,对于边的话要统计出行列的边数然后。。。

自己看CODE参透吧

CODE

#include<cstdio>
using namespace std;
const int N=2005;
bool a[N][N];
int h[N][N],l[N][N],node[N][N],edge[N][N],n,m,q,x1,x2,y1,y2;
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 void write(int x)
{
if (x/10) write(x/10);
putchar(x%10+'0');
}
inline void init(void)
{
register int i,j;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
{
node[i][j]=node[i-1][j]+node[i][j-1]-node[i-1][j-1]+a[i][j];
edge[i][j]=edge[i-1][j]+edge[i][j-1]-edge[i-1][j-1]+(a[i][j]&&a[i-1][j])+(a[i][j]&&a[i][j-1]);
h[i][j]=h[i][j-1]+(a[i][j]&&a[i][j-1]); l[i][j]=l[i-1][j]+(a[i][j]&&a[i-1][j]);
}
}
int main()
{
//freopen("B.in","r",stdin); freopen("B.out","w",stdout);
register int i,j;
read(n); read(m); read(q);
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
{
char ch=tc();
while (ch!='0'&&ch!='1') ch=tc();
a[i][j]=ch-'0';
}
init();
while (q--)
{
read(x1); read(y1); read(x2); read(y2);
int d=node[x2][y2]-node[x1-1][y2]-node[x2][y1-1]+node[x1-1][y1-1];
int b=edge[x2][y2]-edge[x1][y2]-edge[x2][y1]+edge[x1][y1]+h[x1][y2]-h[x1][y1]+l[x2][y1]-l[x1][y1];
write(d-b); putchar('\n');
}
return 0;
}

T3

有区分度的数学+数据结构神题,反正我乱猜了一个结论

首先,如果线段不相交那么就没有鬼畜值

很显然,因为y的坐标不断上升,因此运用一下数学姿势生活常理就知道只有当x坐标到前面去才能有线段相交

因此如果只考虑两条线段相交的情况(没有三条及以上的线段交于同一点)

然后问题就转化为:求x[1],x[2],...,x[n]的逆序对对数

但是如果有三条及以上的线段交于同一点怎么办呢?

大胆猜结论——没有这种情况

然而就是这样,我考试的时候直接跳了这个结论和大样例拍过之后发现是对的

然后就不管了直接40分离散化+树状数组

其实标算也是利用等差数列的性质,搞一下即可

因为我们发现,x数组是由不超过a段等差数列构成的

若x[i]>a,设x[i]产生的逆序对为y,前面共有z段等差数列

那么x[i]产生的逆序对数就是y-z

原因在于:每段等差序列中必然有一个数字和 x[i-1]能组成逆序对,但不能和 x[i]组成逆序对.那么每段等差数列的贡献都会减 1.

然后O(1)转移即可

若x[i]<a,那么直接树状数组统计一下所有在它之前的x[i]<a的情况转移即可

我还是怕讲不清楚,这里有详细sol

对了%%%CJJ dalao分块傲视群雄

精简CODE

#include<cstdio>
using namespace std;
typedef long long LL;
const int MAXA=1e5+10;
int tree[MAXA],n,a,now,x,cnt,last,mod;
LL ans;
inline void inc(int &x,int y)
{
if ((x+=y)>=mod) x-=mod,++cnt;
}
inline int lowbit(int x)
{
return x&(-x);
}
inline void add(int x)
{
while (x<=a) ++tree[x],x+=lowbit(x);
}
inline int get(int x)
{
int tot=0;
while (x) tot+=tree[x],x-=lowbit(x);
return tot;
}
int main()
{
//freopen("C.in","r",stdin); freopen("C.out","w",stdout);
scanf("%d%d%d%d",&n,&x,&a,&mod); now=x;
register int i;
for (i=1;i<=n;++i)
{
if (now>=a) { last-=cnt; if (now<x) ++last; } else last=i-get(now)-1,add(now+1);
ans+=last; inc(now,a);
}
printf("%lld",ans);
return 0;
}

EZ 2018 05 04 NOIP2018 模拟赛(十二)的更多相关文章

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

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

  2. EZ 2018 05 26 NOIP2018 模拟赛(十六)

    这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...

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

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

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

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

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

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

  6. EZ 2018 02 28 NOIP2018 模拟赛(二)

    我TM的终于改完了(其实都是SB题) 题目链接:http://211.140.156.254:2333/contest/53 T1送分,T2前40%送分,还有骗分机制在里面,T3暴力50 所以200应 ...

  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 02 NOIP2018 模拟赛(十七)

    这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...

随机推荐

  1. fastjson 反序列化漏洞利用总结

    比赛遇到了,一直没利用成功,这里做个记录. 环境搭建 首先用 vulhub 搭建 fastjson 的漏洞环境. 漏洞环境程序的逻辑为接收 body 的数据然后用 fastjson 解析. 漏洞利用 ...

  2. linux 网络和流量监控

    1.流量监控 工具iptraf 安装:sudo apt-get install iptraf 运行:sudo iptraf   2.网络监控扫描 参考:https://www.cnblogs.com/ ...

  3. Android实用代码

    1.展开.收起状态栏     public static final void collapseStatusBar(Context ctx) {         Object sbservice =  ...

  4. OneAPM NI 基于旁路镜像数据的真实用户体验监控

    在这个应用无处不在的时代,一次网络购物,一次网络银行交易,一次网络保险的购买,一次春运车票的购买,一次重要工作邮件的收发中出现的延时,卡顿对企业都可能意味着用户忠诚度下降,真金白银的损失. 因而感知真 ...

  5. MyEclipse总是quick update解决办法

    这个问题的解决办法是关闭自动更新 1. Windows > Preferences > MyEclipse> Community Essentials, 把选项 "Sear ...

  6. Qt与PyQT中设置ToolBar在AllowedArea的显示

    因为个人对传统的软件GUI界面不是太喜欢,最近又在学习Qt和PyQt5,所以就有了设置ToolBar在窗口的不同地方的想法,经过浪里淘沙,最终在Qt官网里找到了,原来再添加toolBar的时候是由设置 ...

  7. CSS| position定位和float浮动

    对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.rela ...

  8. Django接收URL问号参数

    问题概览: 一开始需求是想通过URL接收参数,但是一直固守通过正则表达式的方式接收参数,即形如(?P<parm>.+)的方式. 后面发现(/?)在http://regex101.com是可 ...

  9. 实现CTreeCtrl父子节点的联动选择

    本文实现了下面的功能: 当选中父节点时, 其所有子节点全部选中. 当取消选中父节点时, 其所以子节点全部取消选中. 点击子节点时, 根据子节点与其兄弟节点的选中状态, 自动设置父节点的选中状态. 通过 ...

  10. 团队作业——Alpha冲刺 7/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:将编辑界面与标题栏合并.与同队成员,讨论部分功能合并的问题. 明日任务:编辑界面与另一队员完成的字体设置弹窗合并. 郭剑南 今日任务:使用 ...