NOIP模拟测试38「金·斯诺·赤」

辗转相减见祖宗

高精

#include<bits/stdc++.h>
using namespace std;
#define A 2000
#define P 1
#define N 10
#define ll long long
ll n,T;
char sjdfj[A];
struct bignum
{ll n[A],l;bignum(){l=1,memset(n,0,sizeof(n));}void clear(){while(l>1&&!n[l-1]) l--;}void print(){printf("%lld",n[l-1]);for(ll i=l-2;i>=0;i--){printf("%0*lld",P,n[i]);}printf("\n");}void read(){l=0;scanf("%s",sjdfj+1);l=strlen(sjdfj+1);reverse(sjdfj+1,sjdfj+l+1);for(ll i=0;i<l;i++){n[i]=sjdfj[i+1]-'0';}}ll ok(){//若为0 return1 //若%2==0 return2//若%2!=0 return3if(n[0]==0&&l==1) return 1;
//        if(n[0]==1&&l==1) return 1;if(n[0]%2==0) return 2;if(n[0]%2!=0) return 3;}bool operator <(bignum x) const{bignum t=*this,tep;if(t.l!=x.l)    return t.l<x.l;for(ll i=t.l-1;i>=0;i--){if(t.n[i]!=x.n[i]) return t.n[i]<x.n[i];}return 0;}bool operator >(bignum x) const{bignum t=*this;if(t.l!=x.l) return t.l>x.l;for(ll i=t.l-1;i>=0;i--){if(t.n[i]!=x.n[i]) return t.n[i]>x.n[i];}return 0;}bignum operator -(bignum x) const{bignum t=*this;if(t<x) swap(t,x);ll jie=0;//    t.print();x.print();for(ll i=0;i<t.l;i++){t.n[i]-=x.n[i];while(t.n[i]<0){t.n[i]+=N;jie++;}t.n[i+1]-=jie;jie=0;}while(!t.n[t.l-1]&&t.l>1) t.l--;return t;}bignum operator *(bignum x) const{bignum t=*this,tep;tep.l=t.l+x.l+1;for(ll i=0;i<t.l;i++)for(ll j=0;j<x.l;i++){tep.n[i+j]+=t.n[i]*x.n[j];}for(ll i=0;i<tep.l;i++){if(tep.n[i]>=N) {tep.n[i+1]+=tep.n[i]/N;tep.n[i]%=N;}}tep.clear();return tep;}bignum operator +(bignum x)const{bignum t=*this;if(t.l<x.l) t.l=x.l;t.l++;for(ll i=0;i<t.l;i++){t.n[i]+=x.n[i];if(t.n[i]>=N){t.n[i+1]+=t.n[i]/N;t.n[i]%=N;}}t.clear();return t;}bignum operator =(ll x){l=0;while(x){n[l++]=x%N;x/=N;}return *this;}bignum operator *(const ll &b){bignum t=*this,r;r.l=0;ll g=0;for(ll i=0;i<t.l||g;i++){ll x;if(i<t.l)x=t.n[i]*b+g;else x=g;r.n[r.l++]=x%N;g=x/N;}return r;}bignum operator /(const ll &x){bignum t=*this,r;ll tmp=0;r.l=t.l;for(ll i=t.l-1;i>=0;i--){tmp+=t.n[i];if(tmp>=x){r.n[i]=tmp/x;tmp%=x;}tmp*=N;}r.clear();return r;}
}a,b,c;
ll gcd(){//若为0 return1 //若%2==0 return2//若%2!=0 return3while((a.ok()!=1&&b.ok()!=1)){
//        printf("a=%lld ",a.ok());
//        a.print();
//        printf("b=%lld ",b.ok());
//        b.print();ll ok1=a.ok(),ok2=b.ok();if(ok1==2&&ok2==2){return 0;a=a/2,b=b/2;}else if(ok1==3&&ok2==3){if(a<b) swap(a,b);a=a-b;}else if(ok1==2&&ok2==3){a=a/2;}else if(ok1==3&&ok2==2){b=b/2;}}
}
int main()
{/*1 1023 3072*/
//    freopen("bf.txt","w",stdout);scanf("%lld",&T);for(ll i=1;i<=T;i++){a.read(),b.read();//    a=a-b;
        gcd();
//        a.print(),b.print();if(a.n[0]==0&&b.n[0]==1&&b.l==1&&a.l==1){printf("Yes\n");}else if(a.n[0]==1&&b.n[0]==0&&b.l==1&&a.l==1){printf("Yes\n");}else printf("No\n");}
}
View Code

斯诺

考试代码改了改,数组开小见祖宗

考试时候$re$了

 

 

 

 

 大概就是这样

考试时也维护的前缀和

$60\%$算法

只含$0,1$

我们可以将$0$看作减$1$,$1$看作加一

那么合法方案数就是$sum[r]-sum[l-1]==0$的个数

我们开一个桶存$sum[l]$,那么当前符合就是桶里$sum[i]$个数

查完个数再把$sum[r]$压进桶就行了

注意初始化,当你$sum==0$时也是合法方案,方案数为桶里$sum==0$个数$+1$,你可以先在桶里$0$压一个再进行操作

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 5000000
ll tong[mod+mod+mod+mod],sum[mod+mod][3],sumtp[21111111],sum2[111111111];
ll n,ans=0,all;
char a[mod+mod];
void solve(ll ql,ll qr){if(ql==qr) return ;ll mid=(ql+qr)>>1;solve(ql,mid);solve(mid+1,qr);ans=rand();
}
ll check(ll l,ll r){ll len=(r-l+1)/2;
//    printf("l=%lld r=%lld len=%lld\n",l,r,len);
//    printf("sum0=%lld 1=%lld 2=%lld\n",sum[r][0]-sum[l-1][0],sum[r][1]-sum[l-1][1],sum[r][2]-sum[l-1][2]);if(sum[r][0]-sum[l-1][0]>len) return 0;if(sum[r][1]-sum[l-1][1]>len) return 0;if(sum[r][2]-sum[l-1][2]>len) return 0;return 1;
}
int main(){scanf("%lld",&n);scanf("%s",a+1);all=1;for(ll i=1;i<=n;i++){sum[i][0]=sum[i-1][0];sum[i][1]=sum[i-1][1];sum[i][2]=sum[i-1][2];if(a[i]=='0') sum[i][0]++;if(a[i]=='1') sum[i][1]++;if(a[i]=='2') sum[i][2]++,all=0;}if(all&&n>1000){tong[mod]=1;for(ll i=1;i<=n;i++){sumtp[i]=sumtp[i-1];if(a[i]=='0') {
//                if(a[i-1]=='1') sumtp[i]=0;
//                if(sumtp[i]<0) ans++;sumtp[i]++;}else {
//                if(a[i-1]=='0') sumtp[i]=0;
//                if(sumtp[i]>0) ans++;sumtp[i]--;}}for(ll i=1;i<=n;i++){ans+=tong[mod+sumtp[i]];tong[mod+sumtp[i]]++;
//            printf("sumtp=%lld\n",sumtp[i]);
            }printf("%lld\n",ans);return 0;}if(n<=1000)for(ll i=1;i<=n;i++){for(ll j=i+1;j<=n;j++){if(check(i,j)){ans++;}}}else solve(1,n);printf("%lld\n",ans);
}
View Code

从$40\%$算法寻找思路

$60\%$算法$2$

维护三个$sum$,当为$0$,$sum[0]-- sum[1]++ sum[2]++$这样就又和上面类似了

然而合法方案数不止$sum[r]-sum[l-1]==0$

合法很难维护找非法的,最后答案就是合法减非法

发现非法$sum$相减肯定$<0$

那么就转化为逆序对问题

树状数组求逆序对

(其实你常数优秀可以$AC$

$100\%$算法

发现前后差异不大,假设你当前答案$1$为QAQ,若这一位仍为$1$,答案就要对应$-$,另外$2$,$0$答案就要$+$

 

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

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

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

相关文章

什么是JSON处理(JSON-P API)?

Java EE中的JSON-P简介 JSON处理1.0&#xff08; JSR 353 &#xff09;的Java API是一个低级&#xff0c;轻量级的JSON解析器和生成器&#xff0c;它提供了在属性和值级别上操作JSON数据的能力。 JSR 353提供了两种JSON处理模型&#xff1a; 对象模型和流模型。 两种模型都可以…

电视机原理图_电工电气,如何看电气原理图和接线图,如何设计图纸?

电气图纸一般可分为两大类&#xff0c;一类为电力电气图&#xff0c;它主要是表述电能的传输、分配和转换&#xff0c;如电网电气图、电厂电气控制图等。另一类为电子电气图&#xff0c;它主要表述电子信息的传递、处理&#xff1b;如电视机电气原理图。本文主要谈电力电气图的…

NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」

工业题 题解 抱歉,题解没时间写了 代码 #include<bits/stdc.h> using namespace std; #define ll long long #define A 6666666 #define mod 998244353 ll jie[A],ni[A],acnt[A],bcnt[A]; ll fheng[A],fshu[A]; ll n,m,a,b; ll meng(ll x,ll k){ll ans1;for(;k;k>>…

ubuntu 如何登录远程服务器_VSCode远程登录云服务器、树莓派实现在线调试代码...

在PyCon2019大会上&#xff0c;微软发布了VSCode Remote&#xff0c;开启了远程开发的新时代&#xff01;Remote可以帮助开发者在容器、物理机器或虚拟机&#xff0c;以及WSL上实现无缝的远程开发。通过安装Remote Development Extension Pack&#xff0c;开发者可以快速上手远…

macosx jdk_MacOSX环境上的多个Java JDK

macosx jdk同样&#xff0c;这是在Mac&#xff08;OSX 10.8.x &#xff09;上配置Java开发环境的一个小技巧。 如果您现在真的开始&#xff0c;我建议您阅读我以前的文章之一 &#xff0c;这是一种快速干净的方法&#xff08;我想&#xff09;来设置环境变量并开始Java编码。 今…

屏幕方向读取与锁定:Screen Orientation API(转)

什么是 Screen Orientation API Screen Orientation API 为 Web 应用提供了读取设备当前屏幕方向、旋转角度、锁定旋转方向、获取方向改变事件的能力。使得特定应用在屏幕方向方面增强用户体验&#xff0c;如视频和游戏。该标准目前处于工作组草案状态&#xff0c;最近一个修改…

scenebuilder各控件属性介绍_Flutter 全栈式——基础控件

在Flutter中&#xff0c;UI小控件有两种设计风格&#xff0c;一种是Material设计&#xff0c;这是安卓的官方设计风格&#xff0c;另一种则是Cupertino风格&#xff0c;是iOS的官方设计风格。因此&#xff0c;当遇到带有这两个单词开头的控件时&#xff0c;我们应该明确他们表达…

正义联盟的Spring靴

正义联盟的黑暗时代已经来临&#xff0c;强大的Darkseid即将征服人类。 蝙蝠侠在《神力女超人》的帮助下&#xff0c;努力使联盟与一个关键方面失联。 适当的正义联盟成员管理系统。 由于时间不在他们身边&#xff0c;他们不想经历繁琐的过程&#xff0c;从头开始用他们需要的所…

Fetch

fetch是一种HTTP数据请求的方式&#xff0c;是XMLHttpRequest的一种替代方案。fetch不是ajax的进一步封装&#xff0c;而是原生js。Fetch函数就是原生js&#xff0c;没有使用XMLHttpRequest对象。 ajax 使用步骤1.创建XmlHttpRequest对象2.调用open方法设置基本请求信息3.设置发…

boost安装_Centos安装MySQL

安装MySQLMySQL 各版本介绍视频观看:https://www.bilibili.com/video/BV1ap4y1i75jMySQL 官网:https://www.mysql.com/cn/MySQL Community Server社区版本&#xff0c;开源免费&#xff0c;但不提供官方技术支持。MySQL Enterprise Edition 企业版本&#xff0c;需付费&#xf…

选择Java加密算法第3部分–公钥/私钥非对称加密

抽象 这是涵盖Java加密算法的三部分博客系列的第3部分。 本系列介绍如何实现以下目标&#xff1a; 使用SHA–512散列 使用AES–256的单密钥对称加密 RSA–4096 这第三篇文章详细介绍了如何实现非对称的RSA-4096公/私钥加密。 让我们开始吧。 免责声明 这篇文章仅供参考。 …

Error: Cannot find module '@babel/core'

官方默认babel-loader需要搭配最新版本babel 更新到最高版本: npm install -D babel-loader babel/core babel/preset-env webpack 转载于:https://www.cnblogs.com/nocry/p/11493363.html

javabeans_膨胀的JavaBeans –不要在您的API中添加“ Getters”

javabeans我已经最近在博客的想法的JavaBeans™如何可以扩展以减少在Java世界中&#xff0c;这被广泛接受的公约设立的膨胀。 该文章在DZone上重新发布&#xff0c;并在这里获得了颇具争议的反馈&#xff08;例如&#xff0c;大多数试图将一些新想法带入Java世界的想法&#xf…

uniapp 子组件 props拿不到数据_来吧!一文彻底搞定Vue组件!

点击蓝色 “达达前端小酒馆” 关注我哦!加个 “星标” &#xff0c;每天一篇文章&#xff0c;一起学编程作者 | Jeskson来源 | 达达前端小酒馆Vue组件的概述组件是什么呢&#xff0c;了解组件对象的分析&#xff0c;Vue组件中的data属性&#xff0c;props传递数据的原理到底是…

csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」

夜莺与玫瑰 题解 联赛$T1$莫比乌斯$\%\%\%$ $dead$ $line$是直线 首先横竖就是$nm$这比较显然 枚举方向向量 首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所有斜着的直线 $i,j$表示当自己向右$i$个单位长度,向下$j$单位长度 我们相同斜率下只算最短的线贡献,(因为其…

春天重试,因为冬天来了

好的&#xff0c;这实际上与冬天无关&#xff0c;众所周知&#xff0c;冬天已经到了 。 它是关于Spring Retry的&#xff0c;Spring是一个小的Spring框架库&#xff0c;它使我们可以将重试功能添加到应可重试的任何任务中。 这里有一个很好的教程 &#xff0c;解释了如何设置简…

python做些什么项目_Python 的练手项目有哪些值得推荐

1 Web方向的练手项目 这个其实是肯定不用多少的了。Python的练手项目就是可以做一个网站了。我们可以做一个属于自己的博客。在做博客的时候&#xff0c;我们可以巩固的知识点是 HtmlCSSJS的基础知识&#xff0c;以及熟练的运用Python的Web开发框架&#xff08;例如Django或者F…

删除某个时间段之前的文件

/* * 删除文件夹下$n分钟前创建的文件 * param $dir 要处理的目录&#xff0c;物理路径&#xff0c;结尾不加\ * param $n 过期时间&#xff0c;单位为分钟 * return void */function z_del_file_by_ctime($dir,$n){ if(is_dir($dir)){ if($dhopendir($dir)){ …

技术管理规划-路径跟资源

背景 评估团队的投入和产出或者给上级做汇报&#xff0c;都需要弄清楚需要投入多少资源&#xff0c;而资源主要跟两个因素息息相关&#xff0c;即团队目标&#xff0c;此外还有路径和手段&#xff1b; 增加人力前的三个问题&#xff1f; 1.资源的丰富性&#xff1f; 人&#xf…

python保存代码_python入门(5)使用文件编辑器编写代码并保存执行

原博文 2017-04-21 17:21 − python入门&#xff08;5&#xff09;使用文件编辑器编写代码并保存执行 两款文本编辑器&#xff1a; 一个是Sublime Text&#xff0c;免费使用&#xff0c;但是不付费会弹出提示框&#xff1a; 一个是Notepad&#xff0c;免费使用&#xff0c;有中…