首页 > 其他分享 >P2 UVA1073 Glenbow Museum

P2 UVA1073 Glenbow Museum

时间:2023-08-20 09:44:32浏览次数:47  
标签:P2 UVA1073 int Museum dp Glenbow

Glenbow Museum

首先要发现一些性质:

  1. 不能出现双O
  2. 有且仅有四次双R出现(首尾相连也算)
  3. R数刚好多O数四个
  4. R数和O数相加等于总长

关于发现方法,可以考虑先放一个只有4*R的矩形进去,然后添加拐角(OR),这样不难发现如上性质。

那么这道题就好许多的。

R的数目为 \((n+4)/2\) , O的数目为 \((n-4)/2\) 。

现在还需要发现一个性质:只要R比O多4个,随意组合都为可行解。

可以这么理解:双R表示一次转角,那么对于原矩形,本来就要转4次角。所以只要R多了四个,必定就有4次双R。


设计DP

令 \(dp(i,j,k)\) 表示有 \(i\) 个R,\(j\) 个双R,初始字符为 \(k(1为O,0为R)\) ,末字符为R的方案数。

边界为:\(dp(1,0,0)=1(R),dp(1,0,1)=1(OR)\)

那么有如下转移方程:\(dp(i,j,k)=dp(i-1,j,k)+dp(i-1,j-1,k)*(j!=0)\)

最终结果呢?

\(ans(i)=dp((i+4)/2,4,1)+dp((i+4)/2,4,0)+dp((i+4)/2,3,0)\)

其中第二项表示R开头O结尾的串数,尽管设计的时候默认最后一个元素是R,但是添不添O对方程本身并不影响,所以可以用此计算这种情况。

const int N=510,L=1010;

int n;
ll f[N][N][2],ans[L];
//i个R,j个相邻R,第一位为k,结尾为R,且无相邻O的方案数
inline void Pre(){
  f[1][0][1]=f[1][0][0]=1;//OR,R
  for(int i=2;i<=505;++i)
    for(int j=0;j<=4;++j){
      for(int k=0;k<=1;++k){
        f[i][j][k]=f[i-1][j][k];
        if(j) f[i][j][k]+=f[i-1][j-1][k];
      }
    }
  
  for(int i=4;i<=1000;++i) if(i%2==0){
    ans[i]=f[(i+4)/2][4][1]+f[(i+4)/2][3][0]+f[(i+4)/2][4][0]/*R开头O结尾*/;
  }
}

signed main(){
  Pre();

  int kase=0;
  while(scanf("%d",&n)&&n){
    printf("Case %d: %lld\n",++kase,ans[n]);
    //初始为矩形-->4*R,添加拐角(1*O+1*R)
    //所以最后一定有n(O)+4=n(R),n(O)+n(R)=l
    //且理应出现四次RR,不允许O连续出现,即其余都为RORO...
  }
  
  return 0;
}

· EOF

标签:P2,UVA1073,int,Museum,dp,Glenbow
From: https://www.cnblogs.com/mfc007/p/17643619.html

相关文章

  • SolidWorks2023(三维3D设计软件) SP2.1 中文永久使用
    SolidWorks2023是一款领先的三维计算机辅助设计(CAD)软件,由美国公司DassaultSystèmes开发。它提供了丰富的工具和功能,旨在帮助工程师和设计师创建高质量的产品设计,并简化设计流程和提高生产效率。点击获取SolidWorks2023 以下是对SolidWorks2023的详细介绍:设计工具:So......
  • nginx根据ip的地理位置进行转发代理(GeoIP2)
    nginx要获取到ip地理位置,需要在nginx引用第三方ngx_http_geoip2_module模块,而ngx_http_geoip2_module模块依赖libmaxminddb;另外ip对应的地理位置离线的需要从GeoIP2站点上下载下来;最后在nginx.conf文件中引用ngx_http_geoip2_module模块,配置离线数据库才可以获取地理位置nginx......
  • DP2515完全兼容MCP2515支持SPI通信的can V2.0B控制器新能源汽车通信应用
    DP2515完全兼容MCP2515支持SPI通信的canV2.0B控制器新能源汽车通信应用说明DP2515是一款独立控制器局域网络(ControllerAreaNetwork,CAN)协议控制器,完全支持CANV2.0B技术规范。该器件能发送和接收标准和扩展数据顿以及远程帧。MCP2515自带的两个验收屏蔽寄存器和六个验收......
  • 模拟记-P2186 小 Z 的栈函数
    哈哈哈哈哈哈哈#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintMAXN=2005;inta[MAXN],tot,n,t;strings[MAXN];stack<int>q;inlineboolne(intx){ returnabs(x)>1000000000;}inlinevoiderror(){cout<<"ERRO......
  • 带你读论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击
    本文分享自华为云社区《[论文阅读](21)S&P21Survivalism:Living-Off-The-Land 经典离地攻击》,作者:eastmount。摘要随着恶意软件检测算法和方法变得越来越复杂(sophisticated),恶意软件作者也采用(adopt)同样复杂的逃避机制(evasionmechansims)来对抗(defeat)它们。民间证据表明离......
  • 国产麒麟系统KylinOS Server V10 SP2安装MySQL 8.0.26—源码编译安装
    一:操作系统环境检查1.1首先确认操作系统版本是KylinOSServerV10SP2麒麟操作系统KylinosServerV10SP2使用的安装介质是Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso,执行以下命令查看版本:cat/etc/kylin-releasecat/proc/version 1.2检查系统是否......
  • P2484 [SDOI2011] 打地鼠
    题目描述2020.4.29数据更新。打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高。游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞......
  • OCPP2.0.1充电桩测试工具
    当前市场对OCPP2.0.1的需求越来越多。但我找遍互联网也没有找到一个可用的测试工具,于是决定自己开发一个。测试工具是BS架构的,直接上界面服务器触发指令有预设参数,且会以json的方式展示,可以直接编辑,并展示了schema,方便查询参数更多功能持续开发中...博主本人有丰富......
  • 【题解】#68. 「NOIP2004」津津的储蓄计划 题解(2023-07-19更新)
    #68.「NOIP2004」津津的储蓄计划题解本文章的访问次数为次。Part1提示题目传送门欢迎大家指出错误并私信这个蒟蒻欢迎大家在下方评论区写出自己的疑问(记得@这个蒟蒻)Part2背景这是这个蒟蒻的第一篇题解,也是这个蒟蒻对自己的\(50\)AC的纪念。Part3更新日志......
  • C++黑马程序员——P231-235. map容器
    P231.map容器-构造和赋值P232....-大小和交换P233....-插入和删除P234....-查找和统计P235....-排序P231.构造和赋值  ——————————————————————————————————————————————————————————构造:map<T1,T2>......