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

P10052 [CCO 2022] Double Attendance

洛谷

根据常规的动态规划思路,我们可以在状态中记录 \(dp_{i,j,k}\) 表示目前时间为 \(i\),在教室 \(j\)\(k\) 表示到达另一个教室时放的是否之前已经看过了时看到的最大数量。

但是时间这一维很大,不可能记在状态里,并且由于换教室需要时间,所以很难除去没有用的时间。

那么就考虑不把时间记在状态里,而是把时间记在动态规划值里面,由于在其它条件相同时,时间越小明显越好,并且看过的数量范围比较小,可以直接记在状态里。

那么就可以有一值等到这个教室的下一个和到另一个教室两个选择。

但是这样就会有个新的问题,我到另一个教室后可能并没有使答案增加。

考虑一下如果没有增加,我们就直接回原来这个教室了,那么相当于白跑了一趟。

那么我们就要求到另外一个教室后直接把状态记在下一次放幻灯片的时间即可。

这样就不需要考虑转移时环的情况了。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int inf=1e16;
int read(){char c=getchar();int x=0;bool f=0;while(c>'9'||c<'0'){if(c=='-')f=1;c=getchar();}while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=getchar();if(f)return -x;return x;
}
int n[2],K,dp[600005][2][2],ans;
struct P{int l,r;
}a[2][300005];
bool cmp(P a,P b){return a.l<b.l;
}
int bina(int p,int x){int l=1,r=n[p];while(l<=r){int mid=l+r>>1;if(a[p][mid].r<x)l=mid+1;else r=mid-1;}return l;
}
int find(int p,int x){int v=bina(p,x);if(a[p][v].l<=x)return v;return 0;
}
int find2(int p,int x){int v=bina(p,x);return v+(a[p][v].l<=x);
}
void update(int &x,int y){x=min(x,y);
}
signed main(){cin>>n[0]>>n[1]>>K;n[0]++,n[1]++;a[0][n[0]]={inf,inf},a[1][n[1]]={inf,inf};for(int i=1;i<n[0];i++)a[0][i].l=read(),a[0][i].r=read()-1;for(int i=1;i<n[1];i++)a[1][i].l=read(),a[1][i].r=read()-1;sort(a[0]+1,a[0]+n[0]+1,cmp),sort(a[1]+1,a[1]+n[1]+1,cmp);int st=a[0][1].l?0:1;memset(dp,0x3f,sizeof(dp));dp[st][0][0]=0;for(int i=st;i<=n[0]+n[1];i++){for(int j=0;j<2;j++){for(int k=0;k<2;k++){int x=dp[i][j][k];if(x>=inf)continue;int p=find(j,x),nxt1=find(j^1,x+K),nxt2=find2(j,x);if(nxt1&&!k)update(dp[i+1][j^1][p&&find(j,x+2*K)==p],x+K);else {int y=a[j^1][find2(j^1,x+K)].l;update(dp[i+1][j^1][p&&find(j,y+K)==p],y);}update(dp[i+1][j][nxt1&&k&&find(j^1,a[j][nxt2].l+K)==nxt1],a[j][nxt2].l);ans=i;}}}cout<<ans;return 0;
}
http://www.jsqmd.com/news/344668/

相关文章:

  • SGMICRO圣邦微 SGM5347-8XTS16G/TR TSSOP-16 模数转换芯片ADC
  • AI写论文哪个软件最好?书匠策AI:学术写作的“智能外挂”全解析
  • 学习笔记20260105
  • 查重高?AI检测红了?别慌!百考通「降重+降AI」来给你论文“一键真人认证”啦~
  • 软件工程:职业全景与前景深度解析
  • 查重爆红?AI检测报警?别崩溃!百考通「降重+降AI」来给你论文“一键真人化”啦~
  • 告别模糊与宕机!Veo 3.1 4K API落地一步API,三类企业直接受益
  • 软件工程编程语言学习:从入门到工程化的路线与建议
  • 百考通AI文献综述:让学术研究,从“精准梳理“开始
  • 2026年优秀的饭店厨房设备,不锈钢厨房设备厂家推荐榜 - 品牌鉴赏师
  • 深入TensorFlow Data API:构建高效数据管道的艺术与科学
  • 环境领域Hexbin_chart的图解,横纵坐标的表示,数据源格式,配色风格,绘制工具_blog
  • 百考通AIGC检测:让原创内容,真实可鉴
  • Excel:筛选两列中不匹配项
  • SGMICRO圣邦微 SGM42622YTQ16G/TR TQFN-3×3-16L 步进电机驱动芯片
  • 查重太高?AI检测报警?别慌,百考通「降重+降AI」帮你轻松“洗稿”不翻车!
  • 复杂业务逻辑的数据筛选:多维表格条件嵌套能力的技术解析 - 蜘蛛小助理
  • 制造业五大模式解析:OEM、ODM、OBM、JDM、CMT
  • 数字人测试工具:破解表情迁移稳定性的技术密码
  • Veo 3.1 4K功能重磅上线!一步API零门槛接入,三大核心场景直接封神
  • 2026年BI 选型看这一篇就够了!深度测评十大BI报表工具
  • 携程任我行礼品卡变现攻略:一步到位兑换现金 - 团团收购物卡回收
  • PANASONIC松下 EZJZ0V800AA SMD 压敏电阻
  • 查重高?AI检测红了?别emo了!百考通「降重+降AI」来给你论文“一键美颜+去AI滤镜”!
  • 强烈安利10个降AIGC平台,千笔·降AIGC助手解决自考论文AI率难题
  • 别再瞎找了!MBA专属AI论文网站 —— 千笔AI
  • 实测Veo 3.1 4K API:一步接入即享影院级画质,三类场景直接降本增效
  • 2026年西藏电力钢杆实力厂家排名,盘点电力钢杆选购要点 - 工业品网
  • 一次搞懂ERP五大生产模式:MTS、MTO、ATO、ETO、CTO
  • IAB致力于实现可互操作的媒体测量标准化