首页 > 其他分享 >C. Tea Tasting

C. Tea Tasting

时间:2024-05-31 16:54:32浏览次数:19  
标签:Tasting int Tea ll cin divx include mod

题目

链接:https://codeforces.com/problemset/problem/1795/C or https://www.luogu.com.cn/problem/CF1795C
总思路:
利用数组记录a[N], b[N]分别记录每杯茶的量,每个人喝的量,然后每个人喝的量进行前缀和,再二分查找,利用divx和mod来确定每个人喝的量:divx是喝了几整杯;mod是额外的小量。
代码:
其中divx采用差分数组的方式(因为有区间修改)

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
typedef long long ll;
using namespace std;
const ll N = 2e5 + 10;
ll a[N], b[N];
ll mod[N], divx[N];
int main()
{
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	ll t; cin >> t;
	while (t--)
	{
		ll n; cin >> n;
		for (int i = 1; i <= n; i++)cin >> a[i];
		for (int i = 1; i <= n; i++) { cin >> b[i]; b[i] += b[i - 1]; }
		memset(mod, 0, sizeof(mod)); memset(divx, 0, sizeof(divx));
		//divx:差分,mod:多余的
		for (int i = 1; i <= n; i++)
		{
			//第i杯茶最多供应到k号人
			ll l = i, r = n;
			while (l < r)
			{
				ll mid = l + (r - l + 1) / 2;
				if (b[mid] - b[i - 1] <= a[i])l = mid;
				else r = mid-1;
			}
			if (b[l] - b[i - 1] < a[i])
			{
				mod[l + 1] += a[i] - (b[l] - b[i - 1]);
			}
			if (a[i] >= b[i] - b[i - 1])
				divx[i]++, divx[l + 1]--;
			else mod[i] += a[i];//如果第i杯水连第i号人都不能满足
			
		}
		ll suma = 0;
		for (int i = 1; i <= n; i++)
		{
			suma += divx[i];//差分
			cout << suma * (b[i] - b[i - 1]) + mod[i] << ' ';//总数
		}
		cout << '\n';
	}

	return 0;
}

标签:Tasting,int,Tea,ll,cin,divx,include,mod
From: https://www.cnblogs.com/zzzsacmblog/p/18224862

相关文章

  • JEPaaS 低代码平台 accessToTeanantInfo SQL注入漏洞复现
    0x01产品简介JEPaaS低代码开发平台开源版 旨在帮助企业快速实现信息化和数字化转型。该平台基于可视化开发环境,让软件开发人员和业务用户通过直观的可视化界面来构建应用程序,而不是传统的编写代码方式。用户可以在开发平台灵活各个图形化控件,以构建业务流程、逻辑和数据模......
  • Steam游戏搬砖:靠谱吗,详细版说下搬砖中的核心内容!
    可能大家也比较关注国外Steam游戏搬砖这个项目,最近单独找我了解的也比较多,其实也正常,因为现在市面上的项目很多都很鸡肋,而且很多都是一片红海,内卷太过严重,所以对于Steam的关注度也高很多,更何况Steam搬砖无需引流,时间也自由,综合来看,确实是不错的项目。但是,也有点不足,那就是利......
  • 【题解】 [USACO 2009 Mar] Cow Frisbee Team S
    题目描述题意分析从\(N\)个整数中取若干个(不能不选),且取的数之和为\(F\)的倍数的总方案数对\(10^8\)取余的值。思路这道题是一道二维线性DP。那么根据线性DP的解题方法。首先,找出题目的阶段性。这道题显而易见方案数随着选择的个数而变化,那么这道题就以选择的个数作为阶段......
  • 源代码管理工具简明宣介——Team Foundation Server(TFS)
    TeamFoundationServer(TFS)是一款由Microsoft提供的强大的源代码管理工具,它为软件开发团队提供了一个全面的应用生命周期管理平台。一、核心功能源代码管理:TFS支持集中式和分布式版本控制系统,包括TFVC(TeamFoundationVersionControl)和Git。这使得团队能够灵活选择最适合其项......
  • elasticsearch使用Sort排序时Please use a keyword field instead.
    具体报错信息ElasticsearchStatusException[Elasticsearchexception[type=search_phase_execution_exception,reason=allshardsfailed]];nested:ElasticsearchException[Elasticsearchexception[type=illegal_argument_exception,reason=Textfieldsarenotoptimised......
  • 主流源代码管理工具:Team Foundation Server(TFS)
    在软件开发领域,源代码管理工具的重要性不言而喻。它们不仅帮助开发者有效地管理代码,还促进团队协作,确保项目的顺利进行。在众多源代码管理工具中,TeamFoundationServer(TFS)凭借其独特的功能和优势,赢得了众多团队的青睐。TFS概述TFS是Microsoft开发的一款源代码管理和项目管理工......
  • AITeacher
    AI笙店师/AITeacher D微信分享竞争力分析收翡申请职位职位信息Summary登录享受更多优质服务?Leadinteractiveandengagingclassesforgroupsof10to20students,demonstratingtheuseofgenerativeAltoolstofostercreativity.?Developandimplementacomprehen......
  • 【C#】【WriteableBitmap】保存图像到本地
    ///<summary>///保存图像到本地///</summary>///<paramname="wtbBmp"></param>///<paramname="name"></param>///<paramname="strDir"></param>///<returns></returns>......
  • 【C#】WriteableBitmap转Bitmap图像
    ///<summary>///WriteableBitmap转Bitmap图像///</summary>///<paramname="wBitmap"></param>///<returns></returns>publicstaticBitmapWriteableBitmapToBitmap(WriteableBitmapwBitmap){Bitmapbmp=newB......
  • Doug Lea大师的佳作CopyOnWriteArrayList,用不好能坑死你!
    一、写在开头我们在学习集合或者说容器的时候了解到,很多集合并非线程安全的,在并发场景下,为了保障数据的安全性,诞生了并发容器,广为人知的有ConcurrentHashMap、ConcurrentLinkedQueue、BlockingQueue等,那你们知道ArrayList也有自己对应的并发容器嘛?作为使用频率最高的集合类之一,A......