NOIP模拟测试20「周·任·飞」

liu_runda出的题再次$\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%$

题解

题目中为什么反复强调简单路径,没有环

没有环的图中点数-边数=联通块数

前缀和维护边的前缀和,和点的前缀和,

在维护边的前缀和不好维护转化为横着边前缀和,竖着边前缀和

注意边的边界问题

看边如何维护

就拿我的举例

你在当前为边且当前左面为边时置为1

那么当你统计答案时

        ll bia=bianheng[x2][y2]-bianheng[x1-1][y2]-bianheng[x2][y1]+bianheng[x1-1][y1];

思考我们统计答案时要把x2相连的边切断

类似的,我们维护竖着的边时也要类似操作

代码

#include<bits/stdc++.h>
using namespace std;
#define ll int
#define A 2101
char s[A][A];
ll vis[A][A],stax[4200000],stay[4200000],dian[A][A],bianheng[A][A],bianshu[A][A];
ll cnt=0,n,m,q;
const ll nowx[5]={0,0,0,1,-1};
const ll nowy[5]={0,1,-1,0,0};
void dfs(ll x,ll y,ll x1,ll y1,ll x2,ll y2){vis[x][y]=cnt;
//    printf("x=%lld y=%lld vis=%lld\n",x,y,vis[x][y]);for(ll i=1;i<=4;i++){ll xnow=x+nowx[i],ynow=y+nowy[i];if(xnow>x2||xnow<x1) continue;if(ynow>y2||ynow<y1) continue;if(s[xnow][ynow]-'0'==0) continue;if(vis[xnow][ynow]) continue;dfs(xnow,ynow,x1,y1,x2,y2);}
}
void bfs(ll x1,ll y1,ll x2,ll y2){cnt=0;for(ll i=x1;i<=x2;i++)for(ll j=y1;j<=y2;j++){if(s[i][j]=='1'&&!vis[i][j]){++cnt;dfs(i,j,x1,y1,x2,y2);}}for(ll i=x1;i<=x2;i++)for(ll j=y1;j<=y2;j++){vis[i][j]=0;}printf("%d\n",cnt);
}
int main(){scanf("%d%d%d",&n,&m,&q);for(ll i=1;i<=n;i++){scanf("%s",s[i]+1);}
//    memset()for(ll i=1;i<=n;i++)for(ll j=1;j<=m;j++){if(s[i][j]=='1'&&s[i][j-1]=='1'){bianheng[i][j]++;}if(s[i][j]=='1'&&s[i-1][j]=='1'){bianshu[i][j]++;}if(s[i][j]=='1'){dian[i][j]++;}}for(ll i=1;i<=n;i++)for(ll j=1;j<=m;j++){bianheng[i][j]=bianheng[i][j]+bianheng[i-1][j]+bianheng[i][j-1]-bianheng[i-1][j-1];bianshu[i][j]=bianshu[i][j]+bianshu[i-1][j]+bianshu[i][j-1]-bianshu[i-1][j-1];dian[i][j]=dian[i][j]+dian[i-1][j]+dian[i][j-1]-dian[i-1][j-1];}
//    for(ll i=1;i<=n;i++,puts(""))
//        for(ll j=1;j<=m;j++){
//            printf("bian=%d ",bianheng[i][j]);
//        }for(ll i=1,x1,x2,y1,y2;i<=q;i++){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);ll bia=bianheng[x2][y2]-bianheng[x1-1][y2]-bianheng[x2][y1]+bianheng[x1-1][y1];
//        printf("%d %d %d %d bia=%d\n",bianheng[x2][y2],bianheng[x1-1][y2],bianheng[x2][y1],bianheng[x1-1][y1-1],bia);bia+=bianshu[x2][y2]-bianshu[x1][y2]-bianshu[x2][y1-1]+bianshu[x1][y1-1];
//        printf("%d %d %d %d        bia=%d\n",bianshu[x2][y2],bianshu[x1][y2],bianshu[x2][y1-1],bianshu[x1-1][y1-1],bia);ll dia=dian[x2][y2]-dian[x1-1][y2]-dian[x2][y1-1]+dian[x1-1][y1-1];printf("%d\n",dia-bia);}
}

题解

其实就是求逆序对,然而逆序对是$n*log$的并不能过,思考优化

我们发现其实它给了多段等差数列,

先看所有等差数列都是完整的情况

我们在同一段等差数列上可以由$x[i-1]$推到$x[i]$思考我们找的是比当前大的个数,$x[i]=x[i-1]+a$所有之前等差数列贡献都要减一

那么设之前贡献$tmp$得到当前贡献$tmp-cnt(等差数列个数)$

那么我们思考$<a$(即等差数列首项)怎么维护,我们拿一个树状数组维护$<a$的所有值

假设当前值为$x$那么逆序对数就是$i-sum(x)-1$

然后我们考虑第一段不是完整的

假设当前$x$转移到$x2$中$x,x2$都比$begin$小那么等差数列上所有小于$begin$贡献都要减一(头一段上没有处于$x$--$x2$数不能转移)

若当前已经比$begin$大了把它当成一个正常等差数列

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 111111
ll c[A];
ll tus,n,a,mod,now,cnt=0,ans=0,last,tmp;
void add(ll x,ll u){for(ll i=x;i<=a;i+=i&-i)c[i]+=u;
}
ll sum(ll x){ll ans=0;for(ll i=x;i>=1;i-=i&-i)ans+=c[i];return ans;
}
int main(){scanf("%lld%lld%lld%lld",&n,&tus,&a,&mod);ll now=tus;if(tus<=a){add(tus+1,1);}for(ll i=2;i<=n;i++){now=(a+now)%mod;if(now<a){tmp=i-sum(now+1)-1;cnt++;add(now+1,1);}else{tmp-=cnt;if(now<tus) tmp++;}ans+=tmp;}printf("%lld\n",ans);
}

 

转载于:https://www.cnblogs.com/znsbc-13/p/11366198.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何脚踏实地构建Java Agent

在构建Plumbr的多年中&#xff0c;我们遇到了许多具有挑战性的问题。 在其他方面&#xff0c;使Plumbr Java Agent可靠地执行而又不危害客户的应用程序&#xff0c;是一个特别棘手的任务。 从实时系统中安全地收集所有需要的遥测会带来很多问题。 其中一些非常简单&#xff0c;…

ASP.NET Core MVC 之依赖注入 Controller

ASP.NET Core MVC 控制器应通过构造函数明确地请求它们地依赖关系&#xff0c;在某些情况下&#xff0c;单个控制器地操作可能需要一个服务&#xff0c;在控制器级别上的请求可能没有意义。在这种情况下&#xff0c;也可以将服务作为 Action 的参数。 依赖注入是一种如 Depend…

16g内存 32g内存游戏区别_电脑内存8G和16G的差别大吗?打游戏需要多大内存?

Hello大家好&#xff0c;我是兼容机之家的小牛。电脑内存是除了CPU之外最重要的元件之一&#xff0c;电脑内存的多少直接影响着运行大型软件、多任务时电脑的流畅程度&#xff0c;很多玩家在第一次购买电脑的时候并不知道应该购买内存多大的电脑&#xff0c;今天小牛就来和大家…

用友U9执行JS代码。

UFSoft.UBF.UI.AtlasHelper.RegisterAtlasStartupScript(part.Page, part.Page.GetType(), "JavaScriptExecQueue", "alert(地球即将毁灭&#xff0c;进入倒计时&#xff1a;5&#xff0c;4&#xff0c;3&#xff0c;2&#xff0c;1…嘣&#xff01;嘣&#xff…

java培训学费_北京Java培训班学费很贵吗,包含了哪些收费项目

北京的Java培训班有很多&#xff0c;价格却是相差不多的&#xff0c;但培训的课程就参差不齐了&#xff0c;有的培训班就是为了赚钱而存在的&#xff0c;想要系统的学习Java&#xff0c;确保学习效果&#xff0c;那么你一定要挑选正规的Java培训班&#xff0c;挑选适合自己的Ja…

typora.io使用教程

引言&#xff1a;对于开发人员大部分都接触过.md文件&#xff0c;而typora.io就是专门编辑.md文件的工具&#xff0c;该工具对于编写接口文档特别方便&#xff0c;它提供了word类似的大纲视图&#xff0c;同时也提供了很多的功能&#xff0c;但是改软件本身却非常的小&#xff…

c#编译时提高兼容性_幻像类型提高了编译时的安全性

c#编译时提高兼容性介绍 使用幻像类型是一种非常简单的技术&#xff0c;可用于提高代码的编译时安全性。 有很多潜在的用例&#xff0c;其复杂性程度各不相同&#xff0c;但是即使幻像类型的轻量级使用也可以显着提高编译时的安全性。 幻像类型只是带有未使用类型参数的参数化类…

如何查看电脑显卡配置_3080显卡电脑配置清单(3700X/10700)

3080显卡昨天就解禁评测了&#xff0c;因为最近的老铁都很期待装3080的机器&#xff0c;我这边做了一些整理&#xff0c;方便各位老铁3080配置有综合的了解。3080显卡售价更加详尽的3080厂家整理可以参考&#xff1a;3080公版哪里买&#xff1f;&#xff08;所有厂家整理&#…

问题 1074: 数字整除

题目描述定理&#xff1a;把一个至少两位的正整数的个位数字去掉&#xff0c;再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时&#xff0c;原数也是17的倍数 。 例如&#xff0c;34是17的倍数&#xff0c;因为3-20-17是17的倍数&#xff1b;201不是17的倍数&#xff0c…

GWT HTTP请求替代

由于多种原因 &#xff0c;许多GWT用户放弃了RPC机制&#xff0c;这是GWT提供的调用后端的标准方法。 他们发现&#xff0c;在GWT RequestBuilder与其他可能不适合其应用程序模型的外部库之间迷失了许多 。 这篇文章的目的是通过GWT中众所周知的HTTP / Rest库&#xff0c;以使情…

极限中0除以常数_基本不等式中常用公式百度作业帮

1. 基本不等式中常用公式基本不等式中常用公式&#xff1a;(1)√((ab)/2)≥(ab)/2≥√ab≥2/(1/a1/b)。(当且仅当ab时&#xff0c;等号成立)(2)√(ab)≤(ab)/2。(当且仅当ab时&#xff0c;等号成立)(3)ab≥2ab。(当且仅当ab时&#xff0c;等号成立)(4)ab≤(ab)/4。(当且仅当ab时…

NOIP模拟测试24「star way to hevaen·lost my music」

star way to heaven 题解 大致尝试了一下并查集,记忆化搜索,最小生成树 最小生成树是正解,跑最小生成树然后找到最大的值 欧几里德距离最小生成树学习 prim楞跑 至于为什么跑最小生成树不是跑最大生成树,你跑最大生成树连的边可能会^%$&$%!# 感性理解手膜吧,我理解但说不清…

NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」

字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{nm}^{m}-C_{nm}^{m-1}$ 仔细观察然后发现其实就是之前的网格那个题 那么我们回顾一下网格那个题 先看最简单的nm情况 求左下角走到右上角方案数,不能经过中间那条线 考虑大力容…

stackexchange_通过Spring Social推特StackExchange –第1部分

stackexchange本文将介绍一个快速的附带项目-一个自动从各种Q&#xff06;A StackExchange网站上发布热门问题的机器人&#xff0c;例如StackOverflow &#xff0c; ServerFault &#xff0c; SuperUser等。我们将为StackExchange API构建一个简单的客户端&#xff0c;然后进行…

bandizip最后一个无广告版本_【软件来了】这是个无广告的旧版知乎

近两天有新加入粉丝团队的小伙伴在询问G先生旧版App的事情&#xff0c;文章已发过很久&#xff0c;但是知乎的旧版本还是头一次分享给大家&#xff0c;所以G先生就找到了两个版本的旧版知乎&#xff0c;知乎V3.1和知乎V3.9这两个知乎都支持在最高的系统&#xff0c;没有广告也没…

NOIP模拟测试26「嚎叫响彻在贪婪的机房·主仆见证了 Hobo 的离别·征途堆积出友情的永恒」...

题目比较神仙&#xff0c;注意是题目神仙 贪婪暗示贪心&#xff0c;堆积暗示堆优化$\%\%\%\%\%\%\%$ 两个乱搞$$一个堆优化$dp$ 嚎叫响彻在贪婪的机房 题解 对于一个序列来说只要他们差的$gcd$不为$1$就可以构成等差数列 例如 $2$ $4$ $16$ $2$与$4$差$2$ $4$与$16$差$1…

渴望订阅– RxJava常见问题解答

在教学和指导RxJava以及撰写本书之后 &#xff0c;我注意到某些领域尤其成问题。 我决定发布一些简短的提示&#xff0c;以解决最常见的陷阱。 这是第一部分。 Observable和Flowable本质上是惰性的。 这意味着无论您在Flowable放置了多么繁琐或长时间运行的逻辑&#xff0c;仅…

WPScan高级用法和定制

自定义扫描选项 WordPress作为一个广泛使用的内容管理系统&#xff08;CMS&#xff09;&#xff0c;为用户提供了丰富的自定义选项&#xff0c;使其能够根据特定需求创建个性化的网站。其中一个重要的自定义选项是自定义扫描选项&#xff0c;它允许用户对WordPress网站进行深度…

r语言中正定矩阵由于误差不正定_R语言之数据处理(一)

在上一篇小文中&#xff0c;提到了关于R语言导入数据的一些方法&#xff0c;之后的重点就转向了数据的处理上。数据处理其实在整个数据分析项目中所占用的时间是比较多的&#xff0c;所以根据处理的目的不同&#xff0c;也有不同的处理方法。在R语言中&#xff0c;我通常会将数…