[NOIP模拟20]题解
来自达哥的问候……
A.周
究级难题,完全不可做QAQ
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
int n;
ll a[],b[],c[],d[],ans;
void dfs(int step,ll mdx,ll lhb)
{
if(step>n)
{
ans=max(ans,mdx*lhb);
return ;
}
//cout<<mdx<<' '<<lhb<<endl;
dfs(step+,mdx+a[step]>?mdx+a[step]:,lhb-b[step]>?lhb-b[step]:);
dfs(step+,mdx-d[step]>?mdx-d[step]:,lhb+c[step]>?lhb+c[step]:);
return ;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lld%lld%lld%lld",&a[i],&b[i],&c[i],&d[i]);
dfs(,,);
cout<<ans<<endl;
return ;
}
B.任
题目中特意强调了简单路径,往无环图的性质上想。显然无环图联通块个数=点数-边数,那么直接二维前缀和维护黑块个数、横向边数、纵向边数即可。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int N=;
int n,m,Q;
int a[N][N];
int hl[N][N],sl[N][N],sum[N][N];
int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch))x=x*+ch-'',ch=getchar();
return x*f;
}
/*
int getsum(int tmp[][N],int i,int j)
{
return tmp[i][j-1]+tmp[i-1][j]-tmp[i-1][j-1];
}
*/
int main()
{
/*freopen("dat.in","r",stdin);
freopen("my.out","w",stdout);*/
n=read();m=read();Q=read();
char s[N];
for(int i=;i<=n;i++)
{
scanf("%s",s+);
for(int j=;j<=m;j++)
a[i][j]=s[j]-'';
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
sum[i][j]=sum[i][j-]+sum[i-][j]-sum[i-][j-]+a[i][j];
hl[i][j]=hl[i][j-]+hl[i-][j]-hl[i-][j-];
sl[i][j]=sl[i][j-]+sl[i-][j]-sl[i-][j-];
if(a[i-][j]&&a[i][j])sl[i][j]++;
if(a[i][j-]&&a[i][j])hl[i][j]++;
}
for(int i=;i<=Q;i++)
{
int x=read(),y=read(),xx=read(),yy=read();
int ans=sum[xx][yy]-sum[x-][yy]-sum[xx][y-]+sum[x-][y-];
int cover1=hl[xx][yy]-hl[xx][y]-hl[x-][yy]+hl[x-][y];
int cover2=sl[xx][yy]-sl[x][yy]-sl[xx][y-]+sl[x][y-];
ans-=(cover1+cover2);
printf("%d\n",ans);
}
return ;
}
C.飞
鬼畜值的计算公式其实就是$C_n^2$,所以每一对相交线贡献就是1,不用考虑多条线交于一点的情况。
其实手玩一下的话很容易发现题目要求的就是逆序对个数(只要你别像我一样以为这是一道美妙的数学题考场推2页A4纸公式就行)
但是达哥为了不让自己出的题被AK(虽说我们那场还是有AK的),把内存卡到了32M
肯定要在$x[]$的生成方式上寻求突破,可以发现$x[]$构成的序列由多个等差数列构成。如果$x[i]$和$x[i-1]$在同一段等差数列内,且$x[i-1]$和前面的数列构成了m个逆序对,那么$x[i]$一定可以和前面的数构成m-k个逆序对。因为每段中必然有一个数能和$x[i-1]$构成逆序对而不能和$x[i]$构成,所以每段贡献都要少1。
如果到了新一段等差数列的开始,就直接用树状数组计算逆序对数。另外,对于刚开始不完整的一段等差数列需要加特判。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define int long long
int n,ini,a,mod,maxx,ans;
int c[];
int lb(int x){return x&-x;}
int add(int x,int val)
{
for( ;x<=a;x+=lb(x))
c[x]+=val;
}
int sum(int x)
{
int res=;
for( ;x;x-=lb(x))
res+=c[x];
return res;
} signed main()
{
scanf("%lld%lld%lld%lld",&n,&ini,&a,&mod);
int old=ini;
if(ini<a)add(ini+,);
int now=,num=;
for(int i=;i<=n;i++)
{
ini=(ini+a)%mod;
if(ini<a)num=i-sum(ini+)-,now++,add(ini+,);
else num-=now;
if(ini>=a&&ini<old)num++;
ans+=num;
}
cout<<ans<<endl;
return ;
}
[NOIP模拟20]题解的更多相关文章
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- 「题解」NOIP模拟测试题解乱写I(29-31)
NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...
- HZOJ 20190818 NOIP模拟24题解
T1 字符串: 裸的卡特兰数题,考拉学长讲过的原题,就是bzoj3907网格那题,而且这题更简单,连高精都不用 结论$C_{n+m}^{n}-C_{n+m}^{n+1}$ 考场上10min切掉 #in ...
- HGOI NOIP模拟4 题解
NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...
- [NOIP模拟14]题解
当垃圾已经成为一种常态233333 A.旋转子段 考场上的$n^2$手残少了20分,555 (主要是因为实在打不出来$n^3$的做法所以写不了对拍?ccc为什么考场上没有想起有reverse()这么 ...
- [NOIP模拟13]题解
A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...
- 8.3 NOIP 模拟12题解
话说这次考试T1和T2是真的水,然而T1CE,T2TLE,T3CE 这不就是在侮辱我的智商啊!之前本机编译都是c++,以后要用c++11. 这次的T1就是一个大型找规律,我的规律都找出来了,但是竟然用 ...
- 『7.3 NOIP模拟赛题解』
T1 gift Description 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜 ...
随机推荐
- 标准标签库JSTL(JSP Standard Tag Library)
1, 核心标签(最常用, 最重要的) 表达式控制标签 out 输出常量 value---直接赋值 输出变量 default---默认值 escapeXml---控制转义字符(默认为true, 如果需要 ...
- spring-第十篇之XML Schema的简化配置,p、c、util命名空间
1.p:命名空间 引入命名空间:xmlns:p="http://www.springframework.org/schema/p" 配置举例: <?xml version=& ...
- mysql DATETIME和TIMESTAMP类型
以mysql 5.7.20 为例 一直以来,理解有偏差,作此记录,纠正 一.DATETIME和TIMESTAMP 都有高达微秒(6位)的精度 范围 DATETIME 1000-01-01 00: ...
- luoguP3384 [模板]树链剖分
luogu P3384 [模板]树链剖分 题目 #include<iostream> #include<cstdlib> #include<cstdio> #inc ...
- P2172 [国家集训队]部落战争(最小路径覆盖)
P2172 [国家集训队]部落战争 每个点仅走一次:最小路径覆盖 套路地拆点,具体看代码中的$draw()$ 流量每增加1,意味着一支军队可以多走一格,代价减少1 最后答案即为总点数$-dinic() ...
- mySql配置在nodejs中使用
mySql安装完成后,配置链接nodejs项目中的数据库. 1.测试是否安装成功. 2.use nodejs使用nodejs 3.设置数据源 5.exit
- Git相关命令整理
git config --global user.name //配置姓名git config --global user.email //配置邮箱git config --list //查看配置 ...
- javascript中的toString()、toLocaleString()方法
javascript中的toString()方法,主要用于Array.Boolean.Date.Error.Function.Number等对象.下面是这些方法的一些解析和简单应用,做个纪律,以作备忘 ...
- ahocorasick使用
一.作用 字符串匹配,比如现在有个大的列表,客户输入一句话,如何根据客户输入的一句话,从大列表中匹配出字符串交集 具体请详细查阅 二.示例 比如我们有一个wordlist列表,长度很长,包含43430 ...
- Linux就该这么学08学习笔记
参考链接:https://www.linuxprobe.com/chapter-08.html 防火墙管理工具 众所周知,相较于企业内网,外部的公网环境更加恶劣,罪恶丛生.在公网与企业内网之间充当保护 ...