当前位置: 首页 > news >正文

CF2169E Points Selection 做题记录

前置芝士:状压 dp。

题目大意

给定平面上 \(n\) 个点及其代价。Alice 可删除部分点(可为空但不能全部删除),Bob 绘制包含剩余点的最小轴平行矩形(可退化为线段或点)。得分等于 Alice 删除点的代价之和加上矩形的周长。Alice 旨在最大化得分,Bob 旨在最小化得分。求两人均最优时的最终得分。

思路

我们来观察一些结论:

  1. 首先 Bob 的选择策略是唯一的,就是全部压着边框选,那么就是选最高最矮的两条长和最两边的两条宽,我们只需要知道四边的坐标就可以知道 Bob 的答案。
  2. Alice 选择时,没有对边框产生影响的点完全可以删去,显然最后只会有边框上的最多四个点,因为一个点可以同时划定多个边框,所以最后可能不满四个点。

观察到这些之后,因为 Bob 策略已知,我们不妨直接带入 Alice 的视角,在计算的时候直接算掉 Bob 的贡献。设 \(f_{i,S}\) 为选到第 \(i\) 个点,上/下/坐/右的点选/没选的最大值,\(w_{i,S}\) 为第 \(i\) 个点,上/下/坐/右的点是/不是边框的权值,那么我们有:

\[f_{i,S}=\left\{\begin{matrix} f_{i-1,S}+c_i \\ \max_{S'\in S} f_{i-1,S'}+2\times w_{i,S1\setminus S2} \end{matrix}\right. \]

点击查看代码

https://codeforces.com/contest/2169/submission/349375322

#include<bits/stdc++.h>#define int ll
#define pii pair<int,int> 
#define pll pair<long long,long long> 
#define ll long long
#define i128 __int128#define mem(a,b) memset((a),(b),sizeof(a))
#define m0(a) memset((a),0,sizeof(a))
#define m1(a) memset(a,-1,sizeof(a))
#define lb(x) ((x)&-(x))
#define lc(x) ((x)<<1)
#define rc(x) (((x)<<1)|1)
#define pb(G,x) (G).push_back((x))
#define For(a,b,c) for(int a=(b);a<=(c);a++)
#define Rep(a,b,c) for(int a=(b);a>=(c);a--)
#define in1(a) a=read()
#define in2(a,b) a=read(), b=read()
#define in3(a,b,c) a=read(), b=read(), c=read()
#define in4(a,b,c,d) a=read(), b=read(), c=read(), d=read()
#define fst first 
#define scd second 
#define dbg puts("IAKIOI")using namespace std;int read() {int x=0,f=1; char c=getchar();for(;c<'0'||c>'9';c=getchar()) f=(c=='-'?-1:1); for(;c<='9'&&c>='0';c=getchar()) x=(x<<1)+(x<<3)+(c^48);return x*f;
}
void write(int x) { if(x>=10) write(x/10); putchar('0'+x%10); }const int mod = 998244353;
int qpo(int a,int b) {int res=1; for(;b;b>>=1,a=(a*a)%mod) if(b&1) res=res*a%mod; return res; }
int inv(int a) {return qpo(a,mod-2); }const int maxn = 300050;
const int maxS = (1<<4)-1;int n,a[3][maxn];
int w[maxn][maxS+1];
int f[maxn][maxS+1];void work() {in1(n);For(qwq,0,2) For(i,1,n) in1(a[qwq][i]);For(i,1,n) For(S,0,maxS) {w[i][S]=0;For(j,0,3) if((S>>j)&1) {w[i][S]+=a[j&1][i]*(j<2?-1:1);}
//		cout<<i<<' '<<S<<' '<<w[i][S]<<'\n';}For(i,0,n) For(S,0,maxS) f[i][S]=-4e18;f[0][0]=0;For(i,1,n) For(S1,0,maxS) {f[i][S1]=f[i-1][S1]+a[2][i];for(int S2=S1;;S2=(S2-1)&S1) {f[i][S1]=max(f[i][S1],f[i-1][S2]+2*w[i][S1^S2]);if(S2==0) break;}}cout<<f[n][maxS]<<'\n';
}signed main() {
//	freopen("data.in","r",stdin);
//	freopen("myans.out","w",stdout);
//	ios::sync_with_stdio(false); 
//	cin.tie(0); cout.tie(0);double stt=clock();int _=1;_=read();
//	cin>>_;For(i,1,_) {work();}cerr<<"\nTotal Time is:"<<(clock()-stt)*1.0/1000<<" second(s)."<<'\n';return 0;
}
http://www.jsqmd.com/news/42586/

相关文章:

  • 启点教育 —— 2015年11月17日 中午会议
  • 科技特长生加分攻略:2025年编程/AI科创辅导机构推荐,附真实成果数据
  • 算法数据结构之 Trie 前缀树 All In One
  • ABC432 解题报告
  • 开发了一个电脑端剪切板管理器
  • 2025出国留学机构哪家口碑好一点
  • 2025 年 11 月镍钛合金厂家推荐排行榜,医用镍钛合金,镍钛合金材料,镍钛合金导丝源头公司精选,专业品质与创新应用深度解析
  • 2025成都最好的出国留学中介有哪些
  • 2025 年 11 月不锈钢球厂家推荐排行榜,316/304/420/440C/316L医用/304食品级/2Cr13/9Cr18Mo/实心/耐磨/抗酸碱/磁性/醒酒用不锈钢球公司推荐
  • 2025 年 11 月不锈钢珠厂家推荐排行榜,316/304/420/440不锈钢珠,轴承铬钢珠,高精度碳钢珠,Q235碳钢珠,GCr15铬钢珠公司推荐
  • 酵母展示抗体库:真核系统赋能的高效抗体发现与优化平台
  • 2025 年 11 月熔铜炉厂家推荐排行榜,上引熔铜炉,无氧铜上引炉,水平连铸熔铜炉,工频感应熔铜炉,半连铸熔铜炉机组,罩式退火炉公司推荐
  • misc记录
  • 美国线世界(WireWorld)的音响线缆产品主要有哪些?
  • MasterTheorem
  • Kairoa v1.1.0 发布,跨平台桌面开发者工具
  • 【LVGL】LED部件
  • 数据采集与融合技术实践3
  • 题目:LeetCode 1437.是否相邻 1 都至少隔 k 个 0
  • 仓库智能AI 视觉监控系统:识别偷盗 + 操作违规
  • 2025哪个留学中介做英国好
  • 2025留学机构十强西安
  • 2025杭州好的留学中介机构排名
  • 2025出国留学机构哪些
  • 2025成都市留学中介哪里好
  • 03.命题逻辑推理理论
  • 2025哪个澳洲留学机构好
  • 2025留学机构十强排名
  • 2025杭州好的留学中介有哪些地方
  • 2025出国留学机构哪个比较好一点