[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(每种礼物的喜 ...
随机推荐
- ELK 日志系统入门及通过 Docker 部署
1. ELK 系统是什么 ELK 是一套日志中心解决方案,其三个字母分别表示: Elasticsearch:负责日志存储及检索 Logstash:负责日志收集.过滤及格式化 Kibana:数据看板,负 ...
- 使用HEXO建站
使用Hexo模板 按以下指导进行本地预览和上传到你的github. 环境安装 安装node.js node.js官方下载地址https://nodejs.org/en/ 设置npm淘宝镜像站(npm默 ...
- [LeetCode] 260. Single Number III(位操作)
传送门 Description Given an array of numbers nums, in which exactly two elements appear only once and a ...
- 12.定义Lock类,用于锁定数据.三步走,锁的优缺点
#在threading模块当中定义了一个Lock类,可以方便的使用锁定: # #1.创建锁 # mutex = threading.Lock() # # #2.锁定 ''' mutex.acquire ...
- HTML5-新增表单元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 同步GitHub上fork的项目
最近在做“Python练习册,每天一个小程序”,fork了项目并贡献自己写的代码,项目还有其他人在贡献代码,每天都会更新,这就涉及到了自己fork的项目与原项目的同步更新问题,下面就是我最常用的方法. ...
- [BZOJ4151]The Cave
Solution: 假设现在在点1,有许多形如 (x, y, z) 的限制条件,那么对于一组限制,必须先走到 x, y 的 \(\frac{z-dis(x, y)}{2}\) 级祖先,叫这些点为限 ...
- dp或dfs(01背包问题)
链接:https://ac.nowcoder.com/acm/contest/993/C来源:牛客网题意:n头牛,给出它们的H高度,问这些牛的高度叠加起来大于等于书架高度,问叠加后的高度与书架的差值最 ...
- 【java】jstack分析查看线程状态
演示代码 public class StackTest { public static void main(String[] args) { Thread thread = new Thread(ne ...
- k3 cloud移动审批提示实体类型BD_TaxRate中不存在名为AmountDigits属性
原因是由于字段没有正确绑定币别,找到对应的字段并修改绑定币别