来自达哥的问候……

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]题解的更多相关文章

  1. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  2. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  3. 「题解」NOIP模拟测试题解乱写I(29-31)

    NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...

  4. HZOJ 20190818 NOIP模拟24题解

    T1 字符串: 裸的卡特兰数题,考拉学长讲过的原题,就是bzoj3907网格那题,而且这题更简单,连高精都不用 结论$C_{n+m}^{n}-C_{n+m}^{n+1}$ 考场上10min切掉 #in ...

  5. HGOI NOIP模拟4 题解

    NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...

  6. [NOIP模拟14]题解

    当垃圾已经成为一种常态233333 A.旋转子段 考场上的$n^2$手残少了20分,555  (主要是因为实在打不出来$n^3$的做法所以写不了对拍?ccc为什么考场上没有想起有reverse()这么 ...

  7. [NOIP模拟13]题解

    A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...

  8. 8.3 NOIP 模拟12题解

    话说这次考试T1和T2是真的水,然而T1CE,T2TLE,T3CE 这不就是在侮辱我的智商啊!之前本机编译都是c++,以后要用c++11. 这次的T1就是一个大型找规律,我的规律都找出来了,但是竟然用 ...

  9. 『7.3 NOIP模拟赛题解』

    T1 gift Description ​ 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. ​ 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜 ...

随机推荐

  1. Jexus web server V5.1 安装配置要点

    一.Jexus简介:Jexus web server for linux 是一款基于.NET兼容环境,运行于Linux/unix操作系统之上,以支持ASP.NET为核心功能的高性能WEB服务器.Jex ...

  2. linux下rpm包安装、配置和卸载mysq

    l   WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [root@vm-xiluhua][/home/xiluhua]$ cat /etc/red ...

  3. Vagrant 手册之 Provisioning - File

    原文地址 Provisioner 名字:"file" Vagrant 的 file provisioner 允许将文件或目录从主机上传到客户机. File provisioning ...

  4. 深入浅出WPF(Binding篇1)

    Binding在业界的使用一直是音译而来的,称为"Binding".Binding的源是逻辑数据对象,目标则是UI层上面的控件对象.数据通过Binding送达UI层,被UI层展示出 ...

  5. Optimal Subsequences(主席树)

    题意: 给定一个序列,长度为n(<=2e5),有m(<=2e5)个询问,每个询问包含k和pos,要从原序列中选出一个长度为k的子序列,要求是这个序列的和是所有长度为k的序列中最大的,且是字 ...

  6. 12.定义Lock类,用于锁定数据.三步走,锁的优缺点

    #在threading模块当中定义了一个Lock类,可以方便的使用锁定: # #1.创建锁 # mutex = threading.Lock() # # #2.锁定 ''' mutex.acquire ...

  7. python之从文件中按行读取数据

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' # 从文件中按行读取数据 file = open(& ...

  8. CF1105C Ayoub and Lost Array ——动态规划

    CF1105C Ayoub and Lost Array 题意:一个整数数组,满足: 1. 长度为n 2. 所有元素都在[l, r]范围内 3. 所有元素的和能被3整除给出n, l, r (1 ≤ n ...

  9. SLA服务可用性4个9是什么意思?怎么达到?

    SLA:服务等级协议(简称:SLA,全称:service level agreement).是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定.通常这个开销是驱动提供服 ...

  10. 无法删除VMware旧版本,请与技术小组联系

    问题:把文件夹清理了n遍,却无法重装VMware,报错如标题. 原因:相关注册表没删完. 解决办法: - 1.创建一个.txt文本 - 2.将下面的内容复制到.txt文本中: echo off cls ...