首页 > 其他分享 >ABC319题解

ABC319题解

时间:2023-09-20 21:25:20浏览次数:36  
标签:ABC319 int 题解 cin long ++ maxn res

直接从 D 开始了。

D

可可爱爱的二分捏。

check 就按照题目里写的就行了。

然后 \(l\) 的初值要注意一下,就是 \(\max^{i \le n}_{i=1}a_i\)。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 2e5 + 10;
int n,m;
int a[maxn];
int l,r = 1e18;
bool check(int x)
{
	int now = a[1],cnt = 1;
	for(int i = 2;i <= n;i++)
	{
		if(now + a[i] + 1 > x)
		{
			cnt++;
			now = a[i];
		}
		else
		{
			now += a[i] + 1;
		}
	}
	return cnt <= m;
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin >> n >> m;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
		l = max(l,a[i]);
	}
	int ans = 0;
	while(l <= r)
	{
		int mid = l + r >> 1;
		if(check(mid))
		{
			r = mid - 1;
			ans = mid;
		}
		else
		{
			l = mid + 1;
		}
	}
	cout << ans;
	return 0;
}

E

看到 \(q_i \le 10^9\),不可以暴力直接做。

由于 \(1 \le P_i \le 8\),于是我们想到每 \(LCM(1,2 \cdots ,8) = 840\),所以只用记录 \(q_i\) 模 \(840\) 的结果就行了。

预处理前 \(840\) 秒数,然后计算答案即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 2e5 + 10;
int n,m,k,q,a[maxn],b[maxn],res[maxn];
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin >> n >> m >> k;
	for(int i = 1;i < n;i++)
	{
		cin >> a[i] >> b[i];
	}
	for(int i = 0;i < 840;i++)
	{
		int T = i + m;
		res[i] = m;
		for(int j = 1;j < n;j++)
		{
			while(T % a[j] != 0)
			{
				T++;
				res[i]++;
			}
			T += b[j];
			res[i] += b[j];
		}
		res[i] += k;
	}
	cin >> q;
	while(q--)
	{
		int x;
		cin >> x;
		cout << x + res[x % 840] << '\n';
	}
	return 0;
}

标签:ABC319,int,题解,cin,long,++,maxn,res
From: https://www.cnblogs.com/Carousel/p/17718424.html

相关文章

  • Friendly Arrays题解
    2023-09-18题目FriendlyArrays难度&重要性(1~10):5题目来源luogu题目算法贪心解题思路一道大水题。这道题解法非常的套路,我们需要对于处理按位或和按位异或时,首先就要把数拆成二进制的形式去考虑。首先我们需要简单了解一下按位或和按位异或的运算规则:按位或,对于两......
  • 使用dom4j解析xml文件及selectNodes取不到值问题解决
    参考文档:https://blog.csdn.net/PARADDD/article/details/131307189https://blog.csdn.net/weixin_37703598/article/details/81273199......
  • asp.net 跨域问题解决
    前言:近期在对接前后端分离的项目中遇到了跨域问题,查了一些资料都比较新,没有比较老的解决方式所以记录一下背景如下:后端最老的aspx前端vue3部署在iis上1.跨域的处理点击查看代码<httpProtocol> <customHeaders> <addname="Access-Control-Allow-Origin"value=......
  • 【POJ 3278】Catch That Cow 题解(广度优先搜索)
    农夫约翰已被告知一头逃亡奶牛的位置,并想立即抓住她。他从一条数字线上的N点(0≤N≤100000)开始,奶牛在同一条数字线上的K点(0≥K≤100000)。农夫约翰有两种交通方式:步行和坐车。*步行:FJ可以在一分钟内从任何点X移动到点X-1或X+1*坐车:FJ可以在一分钟内从任何X点移动到2×X点。如果奶......
  • 题解 [ARC165C] Social Distance on Graph
    赛时:看不懂题,啊这!赛后:就这?题目描述有一个简单相连的无向图,其顶点数为\(n\),编号为\(1\)至\(n\)。图中有\(m\)条加权边,第\(i\)条边连接顶点\(a_i\)和\(b_i\),权重为\(w_i\)。此外,连接两个顶点的简单路径的权重是简单路径中包含的边的权重之和。我们给每个顶点涂上红......
  • QOJ61 Cut Cut Cut! 题解
    题面。题解假设\(1\)号点有\(d\)条出边,给\(d\)条出边赋\(d\)个独立的单位向量,接下来,每个出边记作入边的随机线性组合,那么对于第\(i\)个点,答案就是入边生成的线性空间的秩。正确性证明:对于每个点考虑,假设现在考虑\(i\)号点,将其入边集合记作\(E1_{i}\),出边集合记......
  • 9.20周三(动手动脑问题解决)
    无法编译原因:没有默认构造推出结论:当你给类提供了一个自定义的构造方法,导致系统不在提供默认构造方法了,需要自己提供初始化测试packageorg.example;publicclassInitializeBlockClass{publicintfield=100;{field=200;}publicInitiali......
  • Acwing393. 雇佣收银员 题解 差分约束
    题目链接:https://www.acwing.com/problem/content/description/395/解题思路:差分约束。为了方便起见,定义第\(i\)个时间段为\(i-1:00\)到\(i:00\)这个时间段。首先,为了方便开一个额外的点,令\(R_i\)对应为题目中的\(R(i+1)\),即\(R_i\)表示\(i-1:00\)到\(i:00\)这......
  • 微软自带拼音输入法不显示选字框的问题解决
    运行框、聊天框都不显示右击右下角的图标-设置-常规-兼容性拉到最下面有个“兼容性”,勾选即可现在OK了......
  • CF1767C Count Binary Strings 题解
    CF1767CCountBinaryStrings题解Foreword感谢@樱雪喵、@swiftc两位大佬的耐心指导。Links洛谷CodeforcesDescription有一个长度为\(n\)的01串\(s\)(下标从\(1\)开始)和一些限制\(a_{i,j}(1\lei\lej\len)\)。\(a_{i,j}\)的含义如下:\(a_{i,j}=\)含义......