NOIP模拟测试23「mine·water·gcd」

mine

题解

一道比较水的dp

考试因为初始化挂掉了只有$80$分

代码有注释

#include<bits/stdc++.h>
using namespace std;
//无脑dp
#define ll long long
#define A 2222222
const ll mod=1e9+7;
//设f[x][5][2]为当前是第x个格子,当前填什么 0前面填1后面填
ll f[A][5][2];
//0表示0雷,1表示一个雷 2表示两个雷 3*
ll n,ans=0;
char ch[A];
void debuger(){for(ll i=1;i<=n;i++,puts(""))for(ll j=0;j<=3;j++){if(j==1){printf("f[%lld][1][0]=%lld f[%lld][1][1]=%lld ",
i,f[i][1][0],i,f[i][1][1]);}else printf("f[%lld][%lld]=%lld ",i,j,f[i][j][0]);}
}
int main(){scanf("%s",ch+1);n=strlen(ch+1);if(ch[1]=='*'){f[0][1][1]=1;}else if(ch[1]=='?'){f[0][1][1]=1;f[0][0][0]=1;}else if(ch[1]=='1'){f[0][0][0]=1;}else if(ch[1]=='0'){f[0][0][0]=1;}for(ll x=1;x<=n;x++){if(ch[x]=='?'){f[x][3][0]=(f[x-1][1][1]+f[x-1][2][0]+f[x-1][3][0])%mod;f[x][0][0]=(f[x-1][1][0]+f[x-1][0][0])%mod;f[x][2][0]=(f[x-1][3][0])%mod;f[x][1][0]=(f[x-1][3][0])%mod;f[x][1][1]=(f[x-1][1][0]+f[x-1][0][0])%mod;}else if(ch[x]=='*'){f[x][3][0]=(f[x-1][1][1]+f[x-1][2][0]+f[x-1][3][0])%mod;//若当前格子是雷,前面格子可以是1且雷在后,两个雷标记,雷
        }else if(ch[x]=='0'){f[x][0][0]=(f[x-1][1][0]+f[x-1][0][0])%mod;//若当前格子是0雷标记,前面格子可以是0雷标记或1雷但雷在前
        }else if(ch[x]=='2'){f[x][2][0]=(f[x-1][3][0])%mod;//若当前格子是2雷标记,前面格子必须是雷
        }else if(ch[x]=='1'){f[x][1][0]=f[x-1][3][0];//若雷在前,前面格子必须是雷f[x][1][1]=(f[x-1][1][0]+f[x-1][0][0])%mod;//若雷在后,前面格子可以是1雷标记但雷在前,或是无雷标记
        }}
//    debuger();ans=(ans+f[n][1][0]+f[n][0][0])%mod;ans=(ans+f[n][3][0])%mod;printf("%lld\n",ans);
}

water

题解

一道比较水的贪心

或是一道比较难的图论

看你怎么做了

下面是贪心做法

不断地去找最低的那个小块进行灌水,这是肯定的。

由于需要一直找最小值,所以用到最小堆来进行优化。

初始化,边界是肯定不能积水的,因为肯定会流出来。所以在一开始所有的边界都设置为已访问标记。将边界上所有的点都加进堆里,并不断地调整堆。

在边界中取最低的那一个小块进行扩展,记录这个最小的节点高度为t ,扩展到的内部节点如果比t小,那么就灌水,也就是将扩展到的节点高度上升到t,不要忘了统计ans。并同时将上升后的点加进堆。如果扩展到的点比t高,也就相当于一个边界,将这个点直接加进堆。

注意如果为$-$那么它一定是要积水的而且至少积水到0

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 510
ll h[A][A],a[A][A];
bool vis[A][A];
struct node{ll x,y,high;friend bool operator < (const node &a,const node &b){return a.high>b.high;}
};priority_queue<node> q;
ll n,m;
const ll nowx[5]={0,1,-1,0,0};
const ll nowy[5]={0,0,0,1,-1};
bool pan(ll x,ll y){if(x<1||x>n||y<1||y>m||vis[x][y]) return 0;return 1;
}
void dfs(ll x,ll y,ll v){vis[x][y]=1;if(a[x][y]>v){node o;o.x=x,o.y=y,o.high=a[x][y];q.push(o);return ;}h[x][y]+=v-a[x][y];for(ll i=1;i<=4;i++){ll xnow=x+nowx[i],ynow=y+nowy[i];if(pan(xnow,ynow))dfs(xnow,ynow,v);}
}
int main(){scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++)for(ll j=1;j<=m;j++){scanf("%lld",&a[i][j]);if(a[i][j]<0){h[i][j]=0-a[i][j];a[i][j]=0;}if(i==1||j==1||i==n||j==m){node b;b.x=i,b.y=j,b.high=a[i][j];q.push(b);vis[i][j]=1;}}while(!q.empty()){node o=q.top();q.pop();ll x=o.x,y=o.y,high=o.high;for(ll i=1;i<=4;i++){ll xnow=x+nowx[i],ynow=y+nowy[i];if(pan(xnow,ynow))dfs(xnow,ynow,high);}}for(ll i=1;i<=n;i++,puts(""))for(ll j=1;j<=m;j++){printf("%lld ",h[i][j]);}
}

 gcd

题解

奇妙的莫比乌斯,等我强了再补

代码

#include<bits/stdc++.h>
using namespace std;
#define ll int
#define A 1001010
ll vis[A],mu[A],prime[A];
long long g[A],s[A],su[A];
ll get_[A];
long long  ans,cnt=0;
void get__mu(ll n){mu[1]=1;for(ll i=2;i<=500000;i++){if(!vis[i]){prime[++cnt]=i,mu[i]=-1;}for(ll j=1;j<=cnt&&prime[j]*1ll*i<=500000;j++){vis[prime[j]*1ll*i]=1;if(i%prime[j]==0) break;else mu[i*1ll*prime[j]]=-mu[i];}}
}
ll n,m;
void work(ll x,ll d){
//    printf("x=%lld\n",x);for(ll i=1;i<=sqrt(x);i++)if(!(x%i)){s[i]+=d;
//        printf("x=%lld i=%lld \n",x,i);if(i*1ll*i!=x)s[x/i]+=d;ans-=mu[i]*1ll*g[i];if(i*1ll*i!=x)ans-=mu[x/i]*1ll*g[x/i];g[i]=s[i]*1ll*(s[i]-1)/2;if(i*1ll*i!=x)g[x/i]=s[x/i]*1ll*(s[x/i]-1)/2;ans+=mu[i]*1ll*g[i];if(i*1ll*i!=x)ans+=mu[x/i]*1ll*g[x/i];}
//    for(ll i=2;i<=x;i++){
//        printf("s[%lld]=%lld\n",i,s[i]);
//    }    printf("%lld\n",ans);
}
int main(){scanf("%d%d",&n,&m);get__mu(510000);
//    printf("mu=%lld\n",prime[3]);for(ll i=1;i<=n;i++)scanf("%d",&su[i]);for(ll i=1,a;i<=m;i++){scanf("%d",&a);ll x=su[a];if(get_[a]==0)work(x,1),get_[a]=1;else work(x,-1),get_[a]=0;}
}
View Code

 

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

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

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

相关文章

在AWS中设置Cassandra集群

Apache Cassandra是一个NoSQL数据库&#xff0c;它使用一致的哈希机制可以轻松进行水平扩展。 七年前&#xff0c;我尝试了它&#xff0c;并决定不将其用于我的附带项目&#xff0c;因为它太新了。 现在情况有所不同&#xff0c;Cassandra早已建立起来&#xff0c;背后有一家公…

k8s停止服务_使用 K8S 几年后,这些技术专家有话要说

9 月 7 日下午&#xff0c;在深圳南山软件产业基地&#xff0c;腾讯云 K8S & 云原生技术开放日成功落幕&#xff0c;来自腾讯、灵雀云、超参数科技、虎牙等资深技术专家与现场开发者共同探讨企业落地 K8S 的过程中遇到的难点以及解决问题的方法。K8S 逐渐成为容器编排的标准…

spring的事件机制实战

理论 在分布式场景下&#xff0c;实现同步转异步的方式有三种方式&#xff1a; 1.异步线程池执行&#xff1b;比如借助Asyn注解&#xff0c;放到spring自带的线程池中去执行&#xff1b; 2.放到消息队列中&#xff0c;在消费者的代码中异步的消费&#xff0c;执行相关的逻辑&am…

苹果wifi网速慢怎么办_所以,WiFi和4G到底哪个更耗电?

来源 | 中科院物理所(ID&#xff1a;cas-iop)编辑 | 椒盐猫巨烦现代人行走江湖&#xff0c;必备三件法宝&#xff1a;手机&#xff0c;网络&#xff0c;充电宝。即便在4G基站遍布各个旮旮角角的今天&#xff0c;当你带着心仪的人儿走进一家咖啡店&#xff0c;第一件事仍然是低声…

问题 1073: 弟弟的作业

题目描述你的弟弟刚做完了“100以内数的加减法”这部分的作业&#xff0c;请你帮他检查一下。每道题目&#xff08;包括弟弟的答案&#xff09;的格式为abc或者a-bc&#xff0c;其中a和b是作业中给出的&#xff0c;均为不超过100的非负整数&#xff1b;c是弟弟算出的答案&#…

苹果4怎么越狱_苹果手机如何截屏

很多用过苹果手机的用户对苹果的评价可是非常高对&#xff0c;苹果手机最大的特点便是手感好&#xff0c;并且使用一年以上也不会卡机现象&#xff0c;因此苹果手机才得到了广泛的关注。苹果手机的截屏程序与安卓手机不同&#xff0c;一般情况下&#xff0c;安卓手机是可以设置…

简单的Spring Boot管理员设置

Spring Boot Admin是一个不错的仪表板&#xff0c;用于监视您的Spring Boot应用程序。 但是&#xff0c;设置它并不是一件容易的事。 该文档概述了两个选项 &#xff1a; 在连接到admin应用程序的启动应用程序中包括一个客户端库–这要求将admin应用程序部署在公共位置或至少可…

NOIP模拟测试19「count·dinner·chess」

反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍然认为不可实现 0分 所以T1是什么样的难题呢 即使暴力也有60分,但我楞没想出来暴力怎么打…

react组件卸载调用的方法_好程序员web前端培训分享React学习笔记(三)

好程序员web前端培训分享React学习笔记(三)&#xff0c;组件的生命周期React中组件也有生命周期&#xff0c;也就是说也有很多钩子函数供我们使用, 组件的生命周期&#xff0c;我们会分为四个阶段&#xff0c;初始化、运行中、销毁、错误处理(16.3之后)初始化在组件初始化阶段会…

静态工厂方法代替构造器实例_静态工厂方法与传统构造方法

静态工厂方法代替构造器实例之前&#xff0c;我已经讨论过一些关于Builder模式的信息 &#xff0c; Builder Pattern是一种有用的模式&#xff0c;用于实例化具有几个&#xff08;可能是可选的&#xff09;属性的类&#xff0c;这些属性可以使读取&#xff0c;编写和维护客户端…

NOIP模拟测试21「折纸·不等式」

折纸 题解 考试时无限接近正解&#xff0c;然而最终也只是接近而已了 考虑模拟会爆炸&#xff0c;拿手折纸条试一试&#xff0c;很简单 考你动手能力 代码 #include<bits/stdc.h> using namespace std; #define ll long long #define A 3100000 ll cj[A],questions[A]; l…

小孔成像总结_科学实践小孔成像

科学实践小孔成像-徐征浩、周永锋耳闻之不如目见之&#xff0c;目见之不如足践之。行是知之始&#xff0c;知是行之成。聪明不仅仅是理论上&#xff0c;它还体现在实践等方面。国庆期间&#xff0c;同学们运用物理课堂上所学的知识制作了小孔成像和土电话这些常见的物理仪器&am…

休眠架构概述

下图提供了Hibernate体系结构的高级视图&#xff1a; 最小的架构 “最小”架构使应用程序可以管理自己的JDBC连接&#xff0c;并提供与Hibernate的连接。 另外&#xff0c;应用程序自行管理交易。 这种方法使用了最少的Hibernate API子集。 综合架构 Hibernate Basic API 这里…

ASP.NET Core MVC 之过滤器(Filter)

ASP.NET MVC 中的过滤器允许在执行管道中的特定阶段之前或之后运行代码。可以对全局&#xff0c;也可以对每个控制器或每个操作配置过滤器。 1.过滤器如何工作 不同的过滤器类型在管道中的不同阶段执行&#xff0c;因此具有各自的与其场景。根据需要执行的任务以及需要执行的请…

.sh文件是什么语言_FastDFS分布式文件系统的搭建安装

FastDFS很久之前&#xff0c;对上传的文件可能是存储在数据库&#xff0c;在数据库中存储路径&#xff0c;保存文件的二进制数据&#xff0c;随着用户上传的文件增加&#xff0c;数据库数据越来越多。这时&#xff0c;可以使用分布式文件系统&#xff0c;将用户上传的文件例如图…

ASP.NET Core MVC 之依赖注入 View

ASP.NET Core 支持在试图中使用依赖注入。这将有助于提供视图专用的服务&#xff0c;比如本地化或者仅用于填充视图元素的数据。应尽量保持控制器和视图之间的关注点分离。视图所显示的大部分数据应该从控制器传入。 使用 inject 指令将服务注入到视图&#xff0c;语法 inject …

matlab全安装多大_不理会其他,我只中意T20天正V2.0软件,激活安装教程在这里...

大家好&#xff0c;我是本文的小编 软妹&#xff0c;前几篇为大家分享了Proe系列软件的安装步骤&#xff0c;在设计三维设计领域Pro/E是现今主流的CAD/CAM/CAE软件一款软件&#xff0c;特别是在国内产品设计领域占据重要位置。在数控加工编程软件领域&#xff0c;哪款软件才是王…

couchbase_Couchbase 2.0归类视图简介

couchbase大多数应用程序必须处理“主/详细”类型的数据&#xff1a; 啤酒厂和啤酒 部门和员工 发票和项目 … 例如&#xff0c;创建如下所示的应用程序视图是必需的&#xff1a; 借助Couchbase和许多面向文档的数据库&#xff0c;您可以使用不同的方式来处理此问题&…

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

liu_runda出的题再次$\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%$ 任 题解 题目中为什么反复强调简单路径,没有环 没有环的图中点数-边数联通块数 前缀和维护边的前缀和,和点的前缀和, 在维护边的前缀和不好维护转化为横着边前缀和,竖着边前缀和 注意边的边界问题 看边如何维护 就拿…