首页 > 其他分享 >CF1148F Foo Fighters

CF1148F Foo Fighters

时间:2024-07-01 09:01:08浏览次数:19  
标签:return val int 二进制 Fighters MAXN CF1148F Foo define

牛逼贪心题

假设都是将总和正的变成负的,所以如果总和是负的,val取相反数

对于二进制操作,我们一位一位考虑,想让其二进制下1的个数最好变成奇数,只能选一个数保留哪些1,所以我们保留一个1就能乘上-1,改变了奇偶性。贪心满足无后效性,最优子结构,局部最优解为全局最优解,我们尝试将一个数二进制下最高位的位数的作为不同种类的划分依据,想让总和变负的,我们尽量让每个种类的和为负的,假设我们考虑到第\(i\)位,这一位作为哪些数的最高位,我把他们加起来,如果小于0了,我要是更改还可能为正数,不优,不更改。如果大于0,考虑把这一位上数是1的都取反了,显然当前就小于0了。现在来看一下为什么没有后效性:对于每一个种类,我从低到高考虑,假设有位数\(i\)>位数\(j\),我\(i\)取什么值对\(j\)没有影响,因为我最高位为\(i\)的数不可能第\(j\)位是1

如果从大到小去一位一位考虑的话,想满足没有后效性,就去按照最低位的1分类,一样的

#include<bits/stdc++.h>
#define vd void 
#define int long long 
#define MAXN 300005
int gi(){
	char c;int x=0,f=0;
	while(!isdigit(c=getchar()))f|=(c=='-');
	while(isdigit(c))x=(x*10)+(c^48),c=getchar();
	return f?-x:x;
}
int n,val[MAXN],mask[MAXN],l1[MAXN];
int help(int x){for(int i=61;i>=0;i--)if((x>>i)&1)return i;return -1;}
signed main(){
	n=gi();int s=0,ans=0;
	for(int i=1;i<=n;i++)val[i]=gi(),mask[i]=gi(),s+=val[i],l1[i]=help(mask[i]);
	if(s<0)for(int i=1;i<=n;i++)val[i]=-val[i];
	for(int i=0;i<62;i++){
		int res=0;
		for(int j=1;j<=n;j++)if(l1[j]==i)res+=val[j];
		if(res>0){
			ans|=(1ll<<i);
			for(int j=1;j<=n;j++)if((mask[j]>>i)&1)val[j]=-val[j];
		}
	}
	printf("%lld\n",ans);
	return 0;
}

感觉比较神奇这道题,按位考虑是二进制常用的操作,想让贪心满足无后效性不妨钦定某个划分原则/依据

标签:return,val,int,二进制,Fighters,MAXN,CF1148F,Foo,define
From: https://www.cnblogs.com/xiaboxin/p/18277343

相关文章

  • 高效AI出图工具Fooocus
    市面上有几大王牌,sd,comfyui,mj以及Fooocus安装https://github.com/lllyasviel/Fooocus下载后会有3个启动bat,根据自己选择,默认启动会联网下载模型模型下载模型路径为Fooocus\models\checkpoints,也可以用之前其他软件下载好的模型如果使用inpaint,会下载到Fooocus\models\inpai......
  • 题解:SP1442 CHAIN - Strange Food Chain
    双倍经验:P2024[NOI2001]食物链思路:一眼鉴定为并查集。观察题目发现有三种状态,考虑使用种类并查集(又称扩展域并查集)。既然有三种状态那么种类并查集自然也要开三倍。CODE:#include<bits/stdc++.h>usingnamespacestd;intfa[150010];intGet_Find(intx){//寻找父节点......
  • 题解/算法 {J - Iris‘ Food}
    题解/算法{J-Iris’Food}@LINK:https://codeforces.com/gym/105184;比如最终答案是:10...01...12...23...3,则其值为1*10^?+(1...1)*10^?+(2...2)*10^?...;因此,如何求2....2这个值(长度为1e9),使用矩阵优化DP,DP定义为:DP[i]:长度为i的2...2的大......
  • spiderfoot一键扫描IP信息(KALI工具系列九)
    目录1、KALILINUX简介2、spiderfoot工具简介  3、在KALI中使用spiderfoot3.1目标主机IP(win)3.2KALI的IP   4、命令示例 4.1web访问4.2扫描并进行DNS解析4.3全面扫描 5、总结1、KALILINUX简介KaliLinux是一个功能强大、多才多艺的Linux发行版,......
  • foobar2000 v2.1.5 汉化版
    foobar2000v2.1.5汉化版-----------------------【软件截图】----------------------     -----------------------【软件介绍】----------------------foobar2000是一个Windows平台下的高级音频播放器.包含完全支持unicode及支持播放增益的高级标签功能.特......
  • microsoft全球GlobalMLBuildingFootprints下载方法
    website:https://github.com/microsoft/GlobalMLBuildingFootprints?tab=readme-ov-filePython代码Start"""Thissnippetdemonstrateshowtoaccessandconvertthebuildingsdatafrom.csv.gztogeojsonforuseincommonGIStools.Youwillneedtoi......
  • foobar2000 v2.1.3 汉化版(x64 暂缺)
    foobar2000v2.1.3汉化版-----------------------【软件截图】----------------------     -----------------------【软件介绍】----------------------foobar2000是一个Windows平台下的高级音频播放器.包含完全支持unicode及支持播放增益的高级标签功能.特......
  • 结构化语句header nav aside main article section footer
    点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>语义化结构结构化元素</ti......
  • foobar2000 v2.1.2 汉化版
    新春佳节,送上一份新年礼物,祝您在新的一年里,万事如意,心想事成,身体健康,事业有成,财源广进,家庭和睦,笑容常开,好运连连。   foobar2000v2.1.2汉化版-----------------------【软件截图】----------------------     -----------------------【软件介绍】--------......
  • Fooocus 的安装和API的使用
    https://github.com/lllyasviel/Fooocus是一款基于Gradio的图像生成软件。它集成了StableDiffusion和Midjourney的特点:向StableDiffusion学习,该软件是离线的,开源的,免费的。从Midjourney中学到,不需要手动调整,用户只需要专注于提示和图像。同时它支持api接口调用,而且给了......