【Codeforces Round #299 (Div. 2) C】 Tavas and Karafs
【链接】 我是链接,点我呀:)
【题意】
给你一个规则,让你知道第i根萝卜的高度为si = A+(i-1)*B
现在给你n个询问;
每次询问给你一个固定的起点l;
让你找一个最大的右端点r;
使得l..r这一段能够在t次"m吃操作"内被吃完.
【题解】
如果l..r里面的最大值大于t了;则无解
最大值小于等于t的话.
每次可以取m个。
然后可以取t次。
也就是说
这一段里面的和<=m*t;
只要A+(i-1)*B大于1e6了就停下来
最坏情况就是A和B都为1
写个rmq+二分就好
【代码】
#include <bits/stdc++.h>
using namespace std;
#define ll long longconst int N = 1e6+10;ll a[N+100],pre[N+100];
ll A,B,Q;
int n;const int MAXL = 20;//log2�������?�
const int INF = 0x3f3f3f3f;//��ֵ����ֵ�����ֵstruct abc{ll pre2[MAXL+5],need[N+10];ll fmax[N+10][MAXL+5];void init(int n){pre2[0] = 1;for (int i = 1;i <= MAXL;i++){pre2[i] = pre2[i-1]<<1;}need[1] = 0; need[2] = 1;int temp = 2;for (int i = 3; i <= n; i++)//need[i]��ʾ����Ϊi��2�Ķ��ٴη�,�������Ϊ[log2i]if (pre2[temp] == i)need[i] = need[i - 1] + 1, temp++;elseneed[i] = need[i - 1];}void getst(ll *a,int n){for (int i = 1;i <= n;i++)//�±��0��ʼ�ijɶ�Ӧ�ľͺ�fmax[i][0] = a[i];for (int l = 1;pre2[l]<=n;l++)for (int i = 1;i <= n;i++){if (i+pre2[l]-1<=n)fmax[i][l] = max(fmax[i][l-1],fmax[i+pre2[l-1]][l-1]);}}int getmax(int l,int r){int len = need[r-l+1];return max(fmax[l][len],fmax[r-pre2[len]+1][len]);}}ST;bool ok(int l,int r,ll t,ll m){if (r > n) return false;int ma = ST.getmax(l,r);if (ma>t) return false;ll ju = t*m;ll sum = pre[r]-pre[l-1];if (sum <= ju){return true;}return false;}int main(){#ifdef LOCAL_DEFINEfreopen("rush_in.txt", "rt", stdin);#endifscanf("%lld%lld%lld",&A,&B,&Q);for (int i = 1; ;i++){a[i] = A + (i-1)*B;if (a[i]>(int)1e6){n = i-1;break;}}ST.init(n);ST.getst(a,n);for (int i = 1;i <= n;i++){pre[i] = pre[i-1] + a[i];}while (Q--){int l;ll t,m;scanf("%d%lld%lld",&l,&t,&m);if (l > n){puts("-1");continue;}int L = l,R = N+10,temp = -1;while (L<=R){int mid = (L+R)>>1;if (ok(l,mid,t,m)){temp = mid;L = mid+1; } else{R = mid-1;}}printf("%d\n",temp);}return 0;
}
转载于:https://www.cnblogs.com/AWCXV/p/7800737.html
【Codeforces Round #299 (Div. 2) C】 Tavas and Karafs相关推荐
- 【Codeforces Round #299 (Div. 2) B】Tavas and SaDDas
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每次取出最小的数字,在后面加上一个4或一个7就好; 会发现最后的数字很少的. [代码] #include <bits/stdc ...
- 【Codeforces Round #424 (Div. 2) C】Jury Marks
[Link]:http://codeforces.com/contest/831/problem/C [Description] 有一个人参加一个比赛; 他一开始有一个初始分数x; 有k个评委要依次对 ...
- 【Codeforces Round #422 (Div. 2) C】Hacker, pack your bags!(二分写法)
[题目链接]:http://codeforces.com/contest/822/problem/C [题意] 有n个旅行计划, 每个旅行计划以开始日期li,结束日期ri,以及花费金钱costi描述; ...
- 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees
[题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...
- 【Codeforces Round #430 (Div. 2) D】Vitya and Strange Lesson
[链接]点击打开链接 [题意] 给出一个数组,每次操作将整个数组亦或一个数x,问得到的数组的结果中的mex.mex表示为自然数中第一个没有出现过的数. [题解] 异或的效果是可以累加的,所以不用每次都 ...
- 【Codeforces Round #446 (Div. 2) C】Pride
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 想一下,感觉最后的结果肯定是从某一段开始,这一段的gcd为1,然后向左和向右扩散的. 则枚举那一段在哪个地方. 我们设这一段中所有的 ...
- 【Codeforces Round #430 (Div. 2) B】Gleb And Pizza
[链接]点击打开链接 [题意] 在这里写题意 [题解] 根据圆心到原点的距离这个东西判断一下圆在不在那个环里面就好 [错的次数] 0 [反思] 在这了写反思 [代码] #include <cst ...
- 【Codeforces Round #452 (Div. 2) C】 Dividing the numbers
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] n为偶数. l = 1, r = n (l,r)放在一组 l++,r-- 新的l,r放在另外一组 直到l+1==r 这个时候,判断两 ...
- 【Codeforces Round #442 (Div. 2) A】Alex and broken contest
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 注意是所有的名字里面,只出现了其中某一个名字一次. [代码] #include <bits/stdc++.h> usin ...
- 【Codeforces Round #450 (Div. 2) B】Position in Fraction
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找循环节就好. ->其实可以不用找出来整个循环节. 有找到c就直接输出. 找到了循环节还没找到的话,直接输出无解. [代码] ...
最新文章
- 设计模式(中介者模式)
- python表达式3 2 3的值为_Python3中的表达式运算符
- 改变select组件的option选中状态的快捷方法
- mysql 修改前缀_批量修改mysql的表前缀
- VS2013过期激活,VS2013激活,vs2013序列号,VS2013密钥,VS013产品密匙
- oracle基础|什么是数据字典|数据字典的作用
- npm init 自动创建 package.json 文件
- macos可以升级到指定版本吗_从Mac os High Sierra 升级到 Mac os Majove指定系统版本
- 小程序入口传参:关于带参数的小程序扫码进入的方法
- Flask框架的学习——04—(模版继承、静态文件的配置、豆瓣APP界面案例实现)
- 【阶段一】菜学21.11
- Rainbow portal 研究
- Java JCEF集成Chromium
- Gitlab与Jaeger集成,实现Tracing链路追踪
- 小程序报错:Failed to load local image resource /pages/goods/NaN加载资源失败问题解决
- 内江人物--(张大千、骆成骧)秀才、美女、黏鱼
- [cesium] | 视频融合 | 自定义视频投放
- 蹲175年的号子?维基解密阿桑奇动了谁的奶酪?
- 用Tkinter打造自己的Python IDE开发工具(7)变量数据共享机制及小白量化策略编写
- Linux命令行太长或删除整行