EZ 2018 05 04 NOIP2018 模拟赛(十二)
这次的试卷应该是激励我们一下的,链接
然后大家的分数就都很高,然后我就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 模拟赛(十二)的更多相关文章
- EZ 2018 05 20 NOIP2018 模拟赛(十五)
这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...
- EZ 2018 05 26 NOIP2018 模拟赛(十六)
这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...
- EZ 2018 06 24 NOIP2018 模拟赛(二十)
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...
- 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 28 NOIP2018 模拟赛(二)
我TM的终于改完了(其实都是SB题) 题目链接:http://211.140.156.254:2333/contest/53 T1送分,T2前40%送分,还有骗分机制在里面,T3暴力50 所以200应 ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- EZ 2018 06 02 NOIP2018 模拟赛(十七)
这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...
随机推荐
- fastjson 反序列化漏洞利用总结
比赛遇到了,一直没利用成功,这里做个记录. 环境搭建 首先用 vulhub 搭建 fastjson 的漏洞环境. 漏洞环境程序的逻辑为接收 body 的数据然后用 fastjson 解析. 漏洞利用 ...
- linux 网络和流量监控
1.流量监控 工具iptraf 安装:sudo apt-get install iptraf 运行:sudo iptraf 2.网络监控扫描 参考:https://www.cnblogs.com/ ...
- Android实用代码
1.展开.收起状态栏 public static final void collapseStatusBar(Context ctx) { Object sbservice = ...
- OneAPM NI 基于旁路镜像数据的真实用户体验监控
在这个应用无处不在的时代,一次网络购物,一次网络银行交易,一次网络保险的购买,一次春运车票的购买,一次重要工作邮件的收发中出现的延时,卡顿对企业都可能意味着用户忠诚度下降,真金白银的损失. 因而感知真 ...
- MyEclipse总是quick update解决办法
这个问题的解决办法是关闭自动更新 1. Windows > Preferences > MyEclipse> Community Essentials, 把选项 "Sear ...
- Qt与PyQT中设置ToolBar在AllowedArea的显示
因为个人对传统的软件GUI界面不是太喜欢,最近又在学习Qt和PyQt5,所以就有了设置ToolBar在窗口的不同地方的想法,经过浪里淘沙,最终在Qt官网里找到了,原来再添加toolBar的时候是由设置 ...
- CSS| position定位和float浮动
对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.rela ...
- Django接收URL问号参数
问题概览: 一开始需求是想通过URL接收参数,但是一直固守通过正则表达式的方式接收参数,即形如(?P<parm>.+)的方式. 后面发现(/?)在http://regex101.com是可 ...
- 实现CTreeCtrl父子节点的联动选择
本文实现了下面的功能: 当选中父节点时, 其所有子节点全部选中. 当取消选中父节点时, 其所以子节点全部取消选中. 点击子节点时, 根据子节点与其兄弟节点的选中状态, 自动设置父节点的选中状态. 通过 ...
- 团队作业——Alpha冲刺 7/12
团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:将编辑界面与标题栏合并.与同队成员,讨论部分功能合并的问题. 明日任务:编辑界面与另一队员完成的字体设置弹窗合并. 郭剑南 今日任务:使用 ...