B.好伙计猜拳
1.校门外的树(一维差分)2.铺地毯(二维差分/枚举区间)3.晾衣服(二分)4.丢手绢(尺取法/快慢指针)5.二分(离散化/哈希)6.C-猪猪养成计划1(set)7.E-双生双宿之错8.D-字符串里串9.H-一起画很大的圆10.C-字符串外串11.E—一起走很长的路12.M—数值膨胀之美13.J—硝基甲苯之袭14.H—井然有序之窗15.C—智乃的NotePad(esay version)16.I. 小鸡的排列构造的checker17.J. 铁刀磨成针18.华华开始学信息学
19.B.好伙计猜拳
20.E.小L的井字棋21.C.小L的位运算22.D.Tokitsukaze and Concatenate Palindrome23.C.Tokitsukaze and Balance String (hard)24.E.智乃的小球25.G.智乃与模数26.D.小L的字符串翻转27.L.小L的构造28.C.兢兢业业之移29.F.双生双宿之探30.E.全都要31.D.大预言家题目链接:https://ac.nowcoder.com/acm/contest/95338/B
题意:
给定a,b两个数组,有操作1:花费c1的代价删除ai,bi这一条记录 操作2:花费c2的代价交换ai,bi的值
求令a,b都成为最长不递减子序列的最低代价
思路:
类似与LIS,通过n方dp实现
开一个二维dp,初始化为inf,dp[0][0]=0,dp[0][1]=0.表示第0条记录作结尾时花费的代价
dp[i][0]代表以第i条记录为结尾,且第i条记录不交换。dp[i][1]代表以第i条记录为结尾,且第i条记录交换
观察 枚举j<i时, 当 aj<=ai,bj<=bi 或 aj<=bi,bj<=ai 或 bj<=ai,aj<=bi 时 发生条件转移(删除i~j之间的记录即可满足条件)
答案不一定是dp[n][0],dp[n][1]的最小值,因此取答案时要加上删除后缀的记录的代价 c1*(n-i)
#include<bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define pb push_back
#define int long long
#define endl "\n"
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f;
const ll llmax=LLONG_MAX;
const int maxn=1e5+5;
int n,c1,c2;
int dp[1005][2];
int a[1005];
int b[1005];
signed main()
{
ios::sync_with_stdio(false),cin.tie(0);
int t;cin>>t;
while(t--){
int ans=llmax;
cin>>n>>c1>>c2;
rep(i,1,n){
cin>>a[i]>>b[i];
}
memset(dp,inf,sizeof(dp));
dp[0][0]=0;
dp[0][1]=0;
rep(i,1,n){
for(int j=0;j<i;j++){
if(a[i]>=a[j]&&b[i]>=b[j]){
dp[i][0]=min(dp[i][0],dp[j][0]+(i-j-1)*c1);
}
if(a[i]>=b[j]&&b[i]>=a[j]){
dp[i][0]=min(dp[i][0],dp[j][1]+(i-j-1)*c1);
}
}
for(int j=0;j<i;j++){
if(a[i]>=b[j]&&b[i]>=a[j]){
dp[i][1]=min(dp[i][1],c2+dp[j][0]+(i-j-1)*c1);
}
if(a[i]>=a[j]&&b[i]>=b[j]){
dp[i][1]=min(dp[i][1],c2+dp[j][1]+(i-j-1)*c1);
}
}
ans=min(ans,min(dp[i][0],dp[i][1])+(n-i)*c1);
}
cout<<ans<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人