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

个人网站备案需要什么资料网站营销方案模板

个人网站备案需要什么资料,网站营销方案模板,汕头模板开发建站,简述网站建设及维护全过程关于我为什么要写单独开一篇文章写二分,实际上那么多困难的算法,比如线段树,并查集等等都没有难倒我,我最近却被二分难倒了,而且是两次,两次在赛场上做不出来二分的应用题,于是我决定写一篇二分查找的算法总结.刚接触算法的时候本来是要写一篇的,但后面因为各种原因搁置了,现在…

关于我为什么要写单独开一篇文章写二分,实际上那么多困难的算法,比如线段树,并查集等等都没有难倒我,我最近却被二分难倒了,而且是两次,两次在赛场上做不出来二分的应用题,于是我决定写一篇二分查找的算法总结.刚接触算法的时候本来是要写一篇的,但后面因为各种原因搁置了,现在来补一篇.我学的二分查找和传统的二分查找有一定的差别.传统的是将l和r都集中在一个点,这样非常不好处理边界.我学的二分查找会把l和r处理成相邻的两个元素.看下图.

一种是中间有相等元素的情况,一种的没有的情况,两个条件对于第一种会通向各自所属情况,这也很好理解,对于第一种,如果mid>=x,你把它赋值给r,那就说明r最后所属元素肯定时>=x,而l是<x,它们最终会出现在各自的边界.这个问题解决了,我们来看while循环里该填什么条件,实际上应该填l+1<r,最终如果l+1==r了就不再进行查找了,说明已经找到边界了.

那最初的边界l和r应该怎么定义呢,我们先考虑一种特殊情况,假如<x或>x不存在,l和r该指向哪,对于第一种l是不是指向第一个元素的左边呀,r指向第一个元素,应为没有mid能赋给l,既然l会出现在第一个元素的左边,那我们定义边界的时候是不是也要让它为第一个元素的左边?同理r要定义为最右边的元素的右边一个,宽泛来讲,l定义为要查找范围最左边元素的左边一个元素,r为要查找范围的最右边的元素的右边一个.

总结一下

1.while(),括号里填l+1<r.

2.查找第一个大于等于x的,使用if(a[mid]>=x)r=mid;else l=mid.反之见上面的图(懒).

3.边界定义:l定义为要查找范围最左边元素的左边一个元素,r为要查找范围的最右边的元素的右边一个.

对于基础练习,这边建议刷一下洛谷的二分题单,还是很简单的【算法1-6】二分查找与二分答案 - 题单 - 洛谷

下面我主要想讲一下卡了我的一道div3的E题题

Problem - E - Codeforces

没做出来真羞耻啊 

using i64 = long long;
using ll = long long;
i64 calc(int u, int x) {//x个跑道,相当于u,u-1,u-2...u-x+1,总共有x个,那不就是倒序相加公式嘛return 1LL * (u + u - x + 1) * x / 2;
}
void solve() {ll n;std::cin >> n;std::vector<ll>a(n), b(n + 1);
//维护前缀和for (int i = 0; i < n; i++) {std::cin >> a[i];b[i + 1] = b[i] + a[i];}ll q, l, u;std::cin >> q;std::vector<ll>bns;while (q--) {std::cin >> l >> u;u;//前面说的边界问题,找l到n,边界定义为l-1,n+1l--;ll k = l, j = n + 1;while (l + 1 < j) {ll mid = (l + j) / 2;if (b[mid] < b[k] + u)l = mid;else j = mid;}i64 ans = -1E18;int r = -1;//右边界小于等于nif (j <= n) {if (calc(u, b[j] - b[k]) > ans) {ans = calc(u, b[j] - b[k]);r = j;}}//j左边是l,l=j-1,k是l-1,l不能等于k-1,所以j-1>kif (j-1>k) {if (calc(u, b[j - 1] - b[k]) >= ans) {ans = calc(u, b[j - 1] - b[l]);r = j - 1;}}bns.push_back(r);}//其实你可以直接打印,没必要像我一样先存数组里.for (int i = 0; i < bns.size(); i++)std::cout << bns[i] << ' ';std::cout << '\n';
}
int main() {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int t;std::cin >> t;while (t--) {solve();}return 0;
}

实际上把边界处理好这道题还是很简单的,怪我太笨了.

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

相关文章:

  • 怎样用vs做简单网站简述什么是网络营销
  • 长春老火车站图片安徽省交通运输厅领导
  • 无锡知名网站推广极速彩票网站建设
  • 衡阳网站建设专家本网站仅支持ie浏览器
  • 旅游网站排名前5位的网站icp备案查询
  • 云彩网站东营市做网站
  • 网站开发广东wordpress 知呼
  • 微信商城网站建设常州网站制作系统
  • 手机网站你了解的企业登录官网
  • 班级网站怎么做ppt模板沈阳市城乡建设网站
  • 广东响应式网站做文献综述用什么网站
  • 建设一个用教育网站建网站需要费用
  • 网站做优化每天一定要更新asp网站建设课程设计
  • 国内用python做的网站网站密码如何找回
  • 建个公司网站一年多少钱网站正在建设中的网页怎么做
  • 网站做编辑器无锡网站建设运营
  • 甘肃省建设厅官方网站张睿山东平台网站建设制作
  • 江门骏科网站建设网站被谷歌降权
  • 网站收录查询apiwordpress 打包 转移
  • 培训教育学校的网站建设方案如何制作公司官网
  • wordpress怎么做网盘站购物商城网站开发
  • 网站建设开发网站案例项目费用做网站主播要什么条件
  • 杭州五旋科技网站建设怎么样又拍 wordpress
  • 做运动特卖的网站厦门某某公司网站
  • 云南定制化网站建设wordpress只备份数据
  • 做视电影网站赚钱吗微信分销平台是什么意思
  • 江门网站制作方案定制大学做兼职英语作文网站
  • 广州建设网站公司哪个济南兴田德润有活动吗python用于网站开发
  • 网站做任务 炸金花建设通网站是筑龙网的吗
  • 江苏省住房和建设部网站首页手机网站 等比缩放