当前位置: 首页 > news >正文

广州南沙区建设和交通局网站asp网站后台不能编辑

广州南沙区建设和交通局网站,asp网站后台不能编辑,智慧团建网站注册登录入口,用照片做模板下载网站好目录 x进制减法 数组切分 gcd 青蛙过河 x进制减法 其实就是一道观察规律的题。你发现如果a这个位置上的数x&#xff0c;b这个位置上的数是y&#xff0c;那么此位置至少是max(x,y)1进制。一定要把位置找对啊 #include <bits/stdc.h> using namespace std; typedef l…

目录

x进制减法

数组切分

gcd

青蛙过河


        

        

x进制减法

其实就是一道观察规律的题。你发现如果a这个位置上的数x,b这个位置上的数是y,那么此位置至少是max(x,y)+1进制。一定要把位置找对啊 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10,mod=1000000007;
int len1,len2;
ll tmp,ans,a[N],b[N],c[N],n;
int main(){cin>>n;cin>>len1;for(int i=len1;i>=1;i--)cin>>a[i];cin>>len2;for(int i=len2;i>=1;i--)cin>>b[i];for(int i=len1;i>=1;i--){c[i]=max(max(a[i]+1,b[i]+1),2*1ll);a[i]=a[i]-b[i];}tmp=1;for(int i=1;i<=len1;i++){ans=(tmp*a[i]+ans)%mod;tmp=(tmp*c[i])%mod;}cout<<ans;return 0;
}
/*错解
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10,mod=1000000007;
int len1,len2;
ll tmp,ans,a[N],b[N],c[N],n;
int main(){cin>>n;cin>>len1;for(int i=1;i<=len1;i++)cin>>a[i];cin>>len2;for(int i=1;i<=len2;i++)cin>>b[i];for(int i=1;i<=len1;i++){c[i]=max(max(a[i]+1,b[i]+1),2*1ll);a[i]=a[i]-b[i];//这个bug我找了两个小时,不能从高位开始减,}tmp=1;for(int i=len1;i>=1;i--){ans=(tmp*a[i]+ans)%mod;tmp=(tmp*c[i])%mod;}
cout<<ans;return 0;
}*/

        

        

数组切分

一道动态规划题,

我们设置f[i]表示从1到i区间的切法。那么可以从任意区间[j,i]转移,只要这个区间[j,i]也是满足题意的就行。那么如果判断[j,i]是否满足题意呢?

首先要注意到题上给出的是连续的的1~n的某个排列,然后我们只需要判断区间的极值和区间长度是否一样就行,如果相等,就说明此区间一定是连续的自然数。 

#include <bits/stdc++.h>
using namespace std;
long long f[10010],mod =1000000007;
int a[10010],n;
int main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];f[0]=1;for(int i=1;i<=n;i++){int ma=a[i],mi=a[i];for(int j=i;j>=1;j--){ma=max(ma,a[j]);mi=min(mi,a[j]);if(i-j==ma-mi){f[i]=(f[i]+f[j-1])%mod;}}}cout<<f[n];return 0;
}

        

        

gcd

这道题本以为很麻烦,但是做着做着就发现了个不可思议的规律。

观察5和7,它们的最大gcd一定是2,为什么呢?因为你5+k和7+k始终保持差2,所以它们不可能有比2更大的gcd(因为它们两个一定是不等的)

对于一组a和b(假设b大于a),不妨另c=b-a。最终的a+k和b+k一定是差c,而且c必是它们的公因数。所以如果b+k是m*c的话,那么此时a+k必然也是c的倍数(因为它们两个差c啊),所以只需要枚举到b的下一个c的倍数即可,也就是(b/c+1)*c 

验证5和9,它们差值为4,我们枚举到8和12时候发现gcd已经是4了,那么k就确定了

验证2和9,它们差值为7,我们一直枚举到7和14时发现gcd为7,那么此时k也确定了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,s,c;
int main(){cin>>a>>b;c=abs(a-b);if(a>b)swap(a,b);s=b/c;cout<<(s+1)*c-b;return 0;
}

        

        

青蛙过河

二分做法:

我们对跳跃距离二分,然后去判断这个距离能不能跑2x次即可,既然我们都已经确定了区间长度了。

那么不妨我们把这整个长度分成等长的mid区间,只需要保证所有的mid长度区间和都是大于2x的就行。

证明:(我只会反证法)

假设存在一组mid长度的区间和小于2x,那么经过x次来回,必然要经过此区间2x次,所以不成立。故原假设成立。

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int s[N];
ll n,x;
bool check(int m){for(int i=1;i+m<=n;i++){if(s[i+m-1]-s[i-1]<2*x) return false;}return true;
}
int main(){cin>>n>>x;int a;for(int i=1;i<n;i++)cin>>a,s[i]=s[i-1]+a;int l=1,r=n;while(l<=r){int mid=(l+r)>>1;if(check(mid)) r=mid-1;else l=mid+1;}cout<<l;return 0;
}

http://www.yayakq.cn/news/699907/

相关文章:

  • 如何在局域网建立网站wordpress安装完无法登录
  • 电商网站建设 数商云郴州吧百度贴吧
  • 全国好的深圳网站设计北京有什么网上推广的网站吗
  • 淄博周村学校网站建设定制正规网站建设团队是什么
  • 河北建设厅查询网站wordpress批量生成文章
  • 自己做网站排名好吗浙江高端网站建设
  • 佛山网站建设找方维网络北京seo技术交流
  • h5页面和小程序的页面有什么区别微软优化大师
  • hostgator wordpress主机安徽网络推广和优化
  • 网站建设那里网站换主机
  • 帝国网站管理系统安装教程微信公众平台申请小程序
  • 网站搜索系统店面设计费计入什么科目
  • 企业网站建立平台在线制作电子公章免费
  • 丰台网站制作公司网站开发相关书籍
  • 蓝色网站配色方案帝国网站采集管理怎么做
  • 品牌网站建设k小蝌蚪hulu网站在中国做内容吗
  • 莲湖免费做网站wordpress怎么自己写代码
  • 现在门户网站建设还有人弄吗成都网站制作公司电话
  • 国家建设材料检测网站wordpress 帝国 seo
  • 商务网站的推广东莞有哪些大公司
  • 网站程序源码一个网站有多少网页
  • 郑州妇科医院正规有哪些网站建设布局利于优化
  • 顺德网站建设要多少钱网络维护实践报告3000
  • 镇海淘宝网站建设大连公司注销流程及费用
  • 哪些网站做任务好赚钱线上培训课程
  • 常见的网站空间有哪些网站有几种
  • 大型网站开发流程和步骤国内网站开发语言
  • 公司网站宣传设计方案成都营销推广公司
  • 新乡网站推广公司多少钱 英文
  • 漳州做网站多少钱佛山市公司网站制作