首页 > 其他分享 >E.Power of Points

E.Power of Points

时间:2024-05-29 15:44:13浏览次数:23  
标签:timesx Power val ll ealst Points include id

题目:


链接:https://www.luogu.com.cn/problem/CF1857E or https://codeforces.com/problemset/problem/1857/E

思路

我的思路可能比较复杂:
首先由于覆盖的是整点,那么可以想到排序后用前缀和,比如1 4 3 --> 1 3 4然后由于区间[a,b]的整点数是b-a+1,那么该点的数量就是
注意:这里的a指的是没有加入前缀和但是排好序的原始数组,然后进行前缀和,就是
注意:这里的a是已经进行前缀和处理的结果,times是指每个元素出现的次数。
然后两个map指示的是每个位置对应的值,id_to_val和idk_to_val的作用不一样。
代码:

#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 int N = 2e5 + 10;
ll x[N];
struct ea
{
	ll val, id; ll ans; ll timesx;
	ea(){}
	ea(ll v, ll i) { id = i; val = v; }
};
vector<ea>ealst;

bool cmp1(ea x,ea y)
{
	return x.val < y.val;
}
bool cmp_by_id(ea x, ea y)
{
	return x.id < y.id;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	ll t; cin >> t;
	while (t--)
	{
		ealst.clear();
		map<ll, ll>times;
		ll n; cin >> n;
		map<ll, ll >idk_to_val;
		map<ll, ll>id_to_val;
		map<ll, ll>val_to_ans;
		for (int i = 1; i <= n; i++)
		{
			ll x; cin >> x;
			id_to_val[ealst.size() + 1] = x;
			idk_to_val[i] = x;
			if (!times[x])
			{
				ealst.push_back(ea(x, ealst.size() + 1));
			}
			times[x]++;
		}
		sort(ealst.begin(), ealst.end(), cmp1);
		vector<ea>::iterator ita;
		for (vector<ea>::iterator it = ealst.begin(); it != ealst.end(); ++it)
		{
			if (it == ealst.begin())
			{
				ita = it;
				it->timesx = times[id_to_val[it->id]];
				it->val = it->timesx * it->val;
				continue;
			}
			it->timesx = times[id_to_val[it->id]];
			it->val = it->timesx * it->val;
			it->val += ita->val;
			it->timesx += ita->timesx;
			ita = it;
		}
		for (int i = 0; i < ealst.size(); i++)
		{
			if (!i)
			{
				val_to_ans[id_to_val[ealst[i].id]] = n + (ealst[ealst.size() - 1].val - ealst[0].val - id_to_val[ealst[0].id] * (n - ealst[0].timesx)) ;
			}
			else
			{
				val_to_ans[id_to_val[ealst[i].id]]= n + (ealst[ealst.size() - 1].val - ealst[i].val - ealst[i - 1].val + id_to_val[ealst[i].id] * (ealst[i - 1].timesx - ealst[ealst.size() - 1].timesx + ealst[i].timesx));
			}

		}
		for (int it=1;it<=n;it++)
			cout << val_to_ans[idk_to_val[it]]<<' ';
		cout << '\n';
	}

	return 0;
}

感觉码量有点大,可能是当时思路不太清晰

标签:timesx,Power,val,ll,ealst,Points,include,id
From: https://www.cnblogs.com/zzzsacmblog/p/18220422

相关文章

  • PowerMock入门:Java单元测试的终极武器
    在软件开发过程中,单元测试是确保代码质量的重要环节。它帮助开发者验证代码的各个部分是否按照预期工作,从而提高软件的稳定性和可维护性。然而,传统的单元测试工具,如JUnit和Mockito,虽然功能强大,但在某些场景下却显得力不从心。例如,它们在模拟静态方法、私有方法、构造函数以......
  • powerbuildr中如何使用dblink连接的表
    powerbuilder中如何使用dblink跨库中的表在powerbuilder中使用查询语句并返回值1、定义变量intll_rtn//返回值stringls_sql,ls_where //sql变量和where条件2、写dblink关联表ls_sql="selectcount(1)fromtable1@dblinka"+'~r~n'+& "innerjointable2@dblink......
  • PowerShell 命令 Get-NetConnectionProfile 来查看当前网络连接的类型。命令会列出当
    PowerShell命令Get-NetConnectionProfile来查看当前网络连接的类型。在PowerShell中执行以下命令:powershellCopyCodeGet-NetConnectionProfile这个命令会列出当前计算机上所有网络连接的详细信息,包括连接名称、接入类型(例如“域网络”、“专用网络”、“公用网络”)等。在......
  • PowerShell 中重置SQL SERVER数据库的 SA(System Administrator)密码可以通过 SQL Serve
    PowerShell中重置数据库的SA(SystemAdministrator)密码可以通过SQLServerManagementObjects(SMO)来完成。以下是一个基本的PowerShell脚本,可以用来重置SA用户的密码:powershellCopyCode#导入SQLServer模块Import-ModuleSQLPS-DisableNameChecking#设置SQL......
  • Python 将PowerPoint (PPT/PPTX) 转为HTML
    1.Python 将PowerPoint文档转为HTML格式要实现该转换,仅需加一个.ppt或.pptx文档,然后使用 Presentation.SaveToFile() 方法将其另存为HTML格式。fromspire.presentation.commonimport*fromspire.presentationimport*#加载PPT文档ppt=Presentation()ppt.L......
  • powershell脚本批量拉取 git仓库文件
    #定义基础URL和数据库列表$BASE_URL="http://8.8.11.99:8999/yaya/"$DATABASES="common-service","bi-system","erp","gateway","pdm","plm","public-service","scm",&quo......
  • power 740 连接远程管理模块
     https://111.111.111.111/ Theconnectionforthissiteisnotsecure111.111.111.111 usesanunsupportedprotocol.Try:Searchthewebfor111.111.111.111ERR_SSL_VERSION_OR_CIPHER_MISMATCH Edge浏览器:   https://blog.csdn.net/weix......
  • PowerCli监控Esxi硬件状态
     #在CentOS上安装powershell-lts-7.0.1-1.rhel.7.x86_64.rpm#然后将VMware-PowerCLI-12.4.1-18769701.zip解压后拷贝到/opt/microsoft/powershell/7-lts/Modules/目录下Connect-VIServer-Server$VMHost-username$UserName-Password$PassWord$VMHostObj=Get-VMHost......
  • powershell7升级笔记
    https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3#msi安装powershell7法一:推荐MSI安装方式,全打钩,可以自动配置环境变量和右键菜单https://learn.microsoft.com/zh-cn/powershell/scripting/install/i......
  • 在 Windows 上运行,如何以管理员身份运行你的命令提示符或 PowerShell
    在Windows上以管理员身份运行命令提示符或PowerShell是非常简单的过程。以下是具体步骤:以管理员身份运行命令提示符:在开始菜单搜索框中输入cmd,然后从搜索结果中找到并点击命令提示符。右键点击命令提示符图标,然后在弹出的菜单中选择以管理员身份运行。以管理员身份......