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

字符串

题解

没看出catalan怎么办

dp打表啊!

考虑大力dp拿到30分好成绩!顺便收获一张表

打表发现$C_{n+m}^{m}-C_{n+m}^{m-1}$

仔细观察然后发现其实就是之前的网格那个题

那么我们回顾一下网格那个题

先看最简单的n==m情况

求左下角走到右上角方案数,不能经过中间那条线

 

考虑大力容斥,首先总方案数$C_{2*n}^{n}$很好求,那么我们现在任务就是求不合法的

 我们考虑到如果经过中间那条线我们至少要经过红色那条线,考虑求从左下角超过那条蓝线(不合法)方案数,

如果有红线限制我们好像仍然难以求出,我们怎么消除红线影响

方法非常简单:考虑将正方形翻折,那么我们经过绿线走到右上角就转变为了沿绿线走再沿蓝线走方案,这样我们就摆脱了红线的控制

那么我们就转化为了从左下角走到翻折后多边形所在角在位置

得到$C_{(n+1)+(n-1)}^{n-1}$即$C_{2*n}^{n-1}$

相减即可

那么如果$n!=m$类似$C_{n+m}^{m}-C_{n+m}^{m-1}$,自己画画即可

 

代码

我不想放了

乌鸦喝水

题解

$55分算法$

先预处理出来能喝多少次

$n*m$ 复杂度,

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 1010101
ll cishu,maxn,n,m,all=0;
ll a[A],he[A],xiajiang[A];
int main(){scanf("%lld%lld%lld",&n,&m,&maxn);for(ll i=1;i<=n;i++){scanf("%lld",&a[i]);}for(ll i=1;i<=n;i++){scanf("%lld",&xiajiang[i]);he[i]=(maxn-a[i])/xiajiang[i];}for(ll i=1;i<=m;i++){all=1;for(ll j=1;j<=n;j++){if(he[j]>=cishu){cishu++;all=0;}}if(all) break;}printf("%lld\n",cishu);
}
View Code

$95分算法$

我们重复枚举了很多无用的状态,当前已经喝不到我们不用再考虑,于是拿链表优化一下

$100分算法$

这种题肯定有性质,这么大的范围一定有性质.

性质: 水少的喝了$k$次那么水多的一定至少也喝了$k$次

我们考虑排序,然而排序后打乱了顺序怎么办,拿一个树状数组维护一下排序前的

我们可以快速算出在当前水壶喝了多少水

思考已知之前喝了$ans$次当前还剩$w$个水壶没喝完,这个水壶能喝$cnt$次

那么它能喝$\frac{cnt-ans}{w}$轮

考虑喝完这么多轮会有剩余,这时用树状数组找sum就完了

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 1111111
ll c[A],xiajiang[A],he[A],a[A];
ll n,m,maxn,ans=0;
struct toot{ll pos,cnt;friend bool operator < (const toot &a,const toot &b){return ((a.cnt==b.cnt)?(a.pos<b.pos):(a.cnt<b.cnt));}
}que[A];
void add(ll l,ll a){for(ll i=l;i<=n;i+=(i&-i))c[i]+=a;
}
ll sum(ll l){ll sum=0;for(ll i=l;i>=1;i-=(i&-i))sum+=c[i];return sum;
}
int main(){scanf("%lld%lld%lld",&n,&m,&maxn);for(ll i=1;i<=n;i++){scanf("%lld",&a[i]);}for(ll i=1;i<=n;i++){scanf("%lld",&xiajiang[i]);he[i]=(maxn-a[i])/xiajiang[i]+1;que[i].cnt=he[i],que[i].pos=i;add(i,1);}sort(que+1,que+n+1);
//    printf("que[1]=%lld\n",que[1].cnt);for(ll i=1;i<=n;i++){add(que[i].pos,-1);if(que[i].cnt<=0) continue;if(que[i].cnt-ans<=0) continue;ll cnt=(que[i].cnt-ans)/(n-i+1);if(cnt>=m){ans+=m;continue;}if(sum(que[i].pos)<((que[i].cnt-ans)%(n-i+1)))cnt++;ans+=cnt;}printf("%lld\n",ans);
}
View Code

所驼门王的宝藏(骆驼王)

题解

缩点跑一个类似最长链的东西

数组大小比较谜

代码

#include<bits/stdc++.h>
using namespace std;
#define ll int
#define A 2000010
ll n,m,k,tot=0,cnt=0;
ll id(ll x,ll y){return (x-1)*m+y;
}
inline ll read(){ll f=1,x=0;char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c-'0');c=getchar();}return f*x;
}
ll head[A],nxt[A<<1],ver[A<<1],a[521000],b[521000],c[521000],sz[A],dfn[A],low[A],sta[A],belong[A],f[A];
ll head_[A],nxt_[A<<1],ver_[A<<1];
map< pair<ll,ll>,ll > mp;
ll top=0,toot=0,scc=0,tot_=0;
bool flag[A],vis[A],ins[A];
vector<ll> hang[A],lie[A];
void add(ll x,ll y){
//    printf("x=%d y=%d\n",x,y);ver[++tot]=y,nxt[tot]=head[x],head[x]=tot;
}
void add2(ll x,ll y){
//    printf("x=%d y=%d\n",x,y);ver_[++tot_]=y;nxt_[tot_]=head_[x];head_[x]=tot_;
}
void tarjan(ll x){dfn[x]=low[x]=++toot;sta[++top]=x;ins[x]=1;for(ll i=head[x];i;i=nxt[i]){ll y=ver[i];if(!dfn[y]){tarjan(y);low[x]=min(low[x],low[y]);}else if(ins[y]) low[x]=min(low[x],dfn[y]);}if(low[x]==dfn[x]){ll y=0;scc++;while(1){y=sta[top--];belong[y]=scc;ins[y]=0;sz[scc]++;if(y==x) break;}}
}
ll dp(ll x,ll pre){if(f[x]) return f[x];f[x]=0;for(ll i=head_[x];i;i=nxt_[i]){ll y=ver_[i];ll nx=dp(y,x);
//        printf("x=%d y=%d nx=%d\n",x,y,nx);f[x]=max(f[x],nx);}f[x]+=sz[x];return f[x];
}
void rebuilt(){for(ll i=1;i<=k;i++){for(ll j=head[i];j;j=nxt[j]){ll y=ver[j];if(belong[i]!=belong[y]){add2(belong[i],belong[y]);}}}
}
int main(){k=read(),n=read(),m=read();for(ll i=1;i<=k;i++){a[i]=read(),b[i]=read(),c[i]=read();mp[make_pair(a[i],b[i])]=i;hang[a[i]].push_back(i);lie[b[i]].push_back(i);}for(ll i=1;i<=k;i++){if(c[i]==1){for(ll j=0;j<hang[a[i]].size();j++){if(i!=hang[a[i]][j])add(i,hang[a[i]][j]);}}if(c[i]==2){for(ll j=0;j<lie[b[i]].size();j++){if(i!=lie[b[i]][j])add(i,lie[b[i]][j]);}}if(c[i]==3){ll _1_=mp[make_pair(a[i]-1,b[i])],_2_=mp[make_pair(a[i]+1,b[i])],_3_=mp[make_pair(a[i],b[i]+1)],_4_=mp[make_pair(a[i],b[i]-1)],_5_=mp[make_pair(a[i]+1,b[i]+1)],_6_=mp[make_pair(a[i]+1,b[i]-1)],_7_=mp[make_pair(a[i]-1,b[i]-1)],_8_=mp[make_pair(a[i]-1,b[i]+1)];if(_1_)    add(i,_1_);if(_2_)    add(i,_2_);if(_3_)    add(i,_3_);if(_4_)    add(i,_4_);if(_5_)    add(i,_5_);if(_6_)    add(i,_6_);if(_7_)    add(i,_7_);if(_8_)    add(i,_8_);}}for(ll i=1;i<=k;i++){if(!dfn[i])    tarjan(i);}
//    for(ll i=1;i<=k;i++){
//        printf("belong=%d\n",belong[id(a[i],b[i])]);
//    }
    rebuilt();for(ll i=1;i<=scc;i++){if(!f[i])dp(i,0);}    for(ll i=1;i<=scc;i++){f[0]=max(f[0],f[i]);}printf("%d\n",f[0]);
}
View Code

 

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

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

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

相关文章

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;我通常会将数…

【chromium】 渲染显示相关概念

DRM(Direct Rendering Manager) DRM 由两个部分组成&#xff1a;一是 Kernel 的子系统&#xff0c;这个子系统对硬件 GPU 操作进行了一层框架封装。二是提供了一个 libdrm 库&#xff0c;里面封装了一系列 API&#xff0c;用来进行图像显示。 说到这里&#xff0c;其实这么理解…

ASP.NET Core MVC 之区域(Area)

区域&#xff08;Area&#xff09;是一个 ASP.NET MVC 功能&#xff0c;用于将相关功能组织为一个单独的命名空间&#xff08;用于路由&#xff09;和文件结构&#xff08;用于视图&#xff09;。使用区域通过向控制器和操作添加 一个路由参数&#xff08;area&#xff09;来创…

esp32 arduino adc_英雄联盟手游射手出装怎么出 adc英雄出装推荐

2020-11-02 18:06:31 角色扮演 人气值&#xff1a;加载中...英雄联盟手游adc怎么出装备&#xff1f;英雄联盟手游虽然没有上线国服和台湾服&#xff0c;但是我们已经有很多热心的玩家在外服中研究出了各种射手的玩法&#xff0c;那么adc要怎么出装呢&#xff1f;小编已经准备…

camel.js_Camel 2.11 –没有Spring的Camel Web应用程序

camel.js在撰写本文时&#xff0c;我们刚刚向即将到来的Apache Camel 2.11添加了一个新组件&#xff0c;该组件允许使用Camel运行Web应用程序&#xff0c;而不必依赖Spring Framework来加速Camel。 或与此相关的任何其他第三方框架。 有点as愧地说&#xff0c;在2013年&#x…

宅男计划

题解 $dp$不行考虑三分 发现单峰 1.理性打表,得到单峰 2.感性思考,你会发现你买食物次数越多,你钱数越少,你买的好食品更多,你买食物次数越少,你钱数越多,然而你必须买一些价格贵保质期长弥补次数少. 单峰,我们三分就完了(其实也可以模拟退火,然而我参数爆炸了一直60分) 那么$c…

.net 后台 下载 图片_特殊的 “图片软件” !

01 引语简单的图片处理软件我说过不少&#xff0c;像windows自带的图片编辑、在线处理图片的稿定设计、或者ps的一些插件。虽然我知道这类工具型软件的文章&#xff0c;大多数小伙伴都只是随便看一眼&#xff0c;心里默念 “咦&#xff0c;好像有用&#xff01;”&#xff0c;…

流操作中的noException

本文介绍了一些简单的编码实践。 没什么好看的。 在StackOverflow上也进行了讨论。 您只是将一个庞大而复杂的循环重构为一个更具可读性的流表达式&#xff0c;而忘记了某些方法调用引发了异常。 包含此代码的方法将引发此异常&#xff0c;该异常在方法头中声明。 您不想在此级…

optimize table 需要多久_吉林市政工程资质新办需要多久

七。 暖通空调专业&#xff1a;水暖工程&#xff0c;建筑环境与设备&#xff0c;环境工程&#xff0c;暖通空调&#xff0c;供暖和通风与空调&#xff0c;制冷和空调&#xff0c;水暖&#xff0c;供暖和通风&#xff0c;HVAC&#xff0c;公共设备安装。如何申请第三级土木工程资…

Java EE 6 开发环境

软件安装&#xff1a; 选择 Glassfish 支持 Java EE 6 的最新版本 3.1.2.2根据 Glassfish 3.1.2 的 certification matrix&#xff0c;要求 JDK 1.6 update 29&#xff0c;因此&#xff0c;选择 JDK 6 最新版本 JDK 6u45选择 Eclipse Indigo&#xff0c;其之后的版本要求 JDK 7…

mysql连接不断线_某些小时后MySql连接自动掉线

mysql连接不断线MySql配置为删除任何闲置超过8小时的连接。 这意味着什么&#xff1f; 在8个小时的间隔后返回到已部署的应用程序之后&#xff08;如果未更改默认SQL参数&#xff09;&#xff0c;将会遇到异常情况。 如何解决这个问题&#xff1f; 增加wait_time参数-不是一个…

pb65 xp 安装无反应_长春优质AFB型耐腐蚀泵安装

长春优质AFB型耐腐蚀泵安装 k5b5b5s长春优质AFB型耐腐蚀泵安装 并及时更换轴套。而随着科技的不断发展&#xff0c;新式设备的问世&#xff0c;设备一般都开始被筛选。无密封自吸泵无密封自吸泵就是一种新式泵&#xff0c;该泵密封可靠&#xff0c;选用无泄漏密封设备&#xff…

虚函数探秘

C的多态分为动态多态和静态多态&#xff0c;其中静态多态主要靠重载和模板来实现&#xff0c;而动态多态则主要靠继承来实现了。 那么静态和动态&#xff0c;怎么算静&#xff0c;怎么算动呢&#xff1f;静态多指编译期能决定的事情&#xff0c;而动态多指运行时才决定的事情。…

Errai框架简介

Errai是Red Hat开发和维护的框架&#xff0c;旨在结合GWT和JEE世界的优点。 根据Red Hat的说法&#xff0c;Errai是基于GWT的框架&#xff0c;用于使用下一代Web技术构建富Web应用程序。 在此简单声明的背后&#xff0c;存在一种与GWT完全不同的开发方式&#xff0c;在下面的文…

动态壁纸安卓_高清无水印!这4款壁纸软件,让你的手机好看又独特

手机与我们每日相伴&#xff0c;我们总会精心挑选各种图片设置为手机壁纸&#xff0c;有时换个壁纸就像换了一种心情一样。但网上搜索的壁纸大同小异&#xff0c;有没有风格独特又有趣的&#xff1f;今天就给大家推荐4款各具特色的壁纸App&#xff0c;保证给你耳目一新的感觉。…