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

洛谷P4907题解

题目传送门

题意:


扑克牌的部分牌被移除,需从剩牌中选 4 个区间,每个区间的牌都是同一花色且点数连续。如果不可选,输出最少需添加几张牌才能满足要求。

思路:


暴力和剪枝。

暴力:按照题意模拟,这样你可以拿到 60 分。

剪枝:


有两种剪枝方法,一种是最优性剪枝,顾名思义,如果当前答案比目前大最优答案大了就剪掉;另一种是可行性剪枝,也就是说当前的不合法了就剪。

#include<bits/stdc++.h>
using namespace std;
const int N = 99;
int a[N],b[N],l[N],r[N],cnt[N],n,now1,ans=N,ans1=N;
char s[N];
void dfs(int h,int lef) { //lef为n-当前已选中总次数if(h==5) {int now=0;for(int i=1; i<=13; ++i) {if(cnt[i]>0) return;//不合法now|=cnt[i]<0;}if(now) {ans1=now1;return;}for(int i=1; i<=n; ++i) if((l[a[i]]>b[i]||r[a[i]]<b[i])&&++now==ans) return;ans=now,ans1=1;return;}for(int i=max(lef-(4-h)*13,0),j,rr; i<=13; ++i) { //枚举区间长度,可行性剪枝if(i==0) {l[h]=r[h]=0;dfs(h+1,lef);continue;}for(rr=i; rr<=13; ++rr) { //右端点for(j=rr-i+1; j<=rr; ++j) now1+=--cnt[j]<0; //动态维护if(now1<ans1) l[h]=(r[h]=rr)-i+1,dfs(h+1,lef-i);//最优性剪枝for(j=rr-i+1; j<=rr; ++j) now1-=++cnt[j]<=0;}}
}
int main() {cin>>n;for(int i=1; i<=n; ++i) {cin>>a[i]>>s;if(s[0]=='A') b[i]=1;else if(s[0]=='1') b[i]=10;else if(s[0]=='J') b[i]=11;else if(s[0]=='Q') b[i]=12;else if(s[0]=='K') b[i]=13;else b[i]=s[0]-'0';++cnt[b[i]];}dfs(1,n);if(ans!=N) printf("Yes\n%d",ans);else printf("No\n%d",ans1);return 0;
}

http://www.xdnf.cn/news/464689.html

相关文章:

  • Milvus(23):过滤
  • 《Python星球日记》 第81天:回看图像生成与风格迁移
  • Python机器学习笔记(二十三 模型评估与改进-网格搜索)
  • AcroForm 文档(打开时)级脚本对比 Excel VBA 参考
  • 关于多线程的Redis模型
  • 数据科学和机器学习的“看家兵器”——pandas模块 之二
  • c++从入门到精通(四)--动态内存,模板与泛型编程
  • python克洛伊婚纱摄影预约管理系统
  • P2679 [NOIP 2015 提高组] 子串
  • Linux之Yum源与Nginx服务篇
  • Node.js 安装 + React Flow 快速入门:环境安装与项目搭建
  • Spring Boot 和 Jedis版本搭配的建议
  • 【言语】刷题5
  • win11平台下的docker-desktop中的volume位置问题
  • Newtonsoft.Json.JsonSerializationException
  • 安卓A15系统实现修改锁屏界面默认壁纸功能
  • 多个docker-compose-xx 停止并完全卸载 删除
  • C++:字符数组与字符串指针变量的大小
  • 鸿蒙OSUniApp制作多选框与单选框组件#三方框架 #Uniapp
  • 协作赋能-1-制造业生产流程重构
  • Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】
  • 一些问题杂记
  • NY244NY249美光闪存颗粒NY252NY256
  • unity terrain 在生成草,树,石头等地形障碍的时候,无法触发碰撞导致人物穿过模型
  • 全链路压测实战指南:从理论到高可用架构的终极验证
  • Transformer的理解
  • Elasticsearch 分片机制高频面试题(含参考答案)
  • 【备忘踩坑】Android单元测试中读取测试assets的方法
  • 一套基于 Bootstrap 和 .NET Blazor 的开源企业级组件库
  • C#中Action的用法