HOJ_14001 Just Terraffic!
题意相对来说比较扭曲。。所以来说下模型,具体做法有兴趣的孩纸去问度娘或者波塞冬吧~~
给出一个序列长度,并且输入该序列,该序列的含义是横坐标:
任何两个相邻坐标绝对值小于等于1000的必然为一个整体,
任何两个相邻坐标绝对值大于等于2000的必然是不同的两个整体,
其余有可能是,也有可能不是一个整体。
问,横跨三个坐标的整体有多少个,横跨两个坐标的整体有多少个?
如果唯一确定,则直接输出数量,否则输出“Ambiguous”
如果无解输出“Impossible”
直觉上认为这是有向无环图的DP问题,分别扫最大2坐标整体出现次数和最小2坐标整体出现次数。
如果二者中没有可行解,输出“Impossible”
如果二值不相等输出“Ambiguous”
否则直接按照要求输出即可。
时间复杂度是O(N)——状态总数n*每个状态决策数2*转移时间1
AC代码:
#include<iostream>
#include<stdio.h>
#include<string>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
const long long INF=1e8+233;
const long long MAXN=3000233;
long long n;
long long arr[MAXN];
long long dp1[MAXN];
long long dp2[MAXN];
void init()
{
// memset(dp2,0,sizeof(dp2));
// memset(arr,0,sizeof(arr));
// memset(dp1,0,sizeof(dp1));
for(long long i=0;i<n;++i)
{
dp1[i+1]=INF;
// dp2[i+1]=0;
cin>>arr[i];
}
}
int main()
{
cin.sync_with_stdio(false);
while(cin>>n&&n)
{
init();
dp1[0]=1;
dp2[0]=1;
for(long long i=0;i<n-1;++i)
{
if(dp1[i]!=INF&&dp2[i])
{
long long d1=10000;
if(i+2<n)
d1=arr[i+2]-arr[i+1];
long long d2=arr[i+1]-arr[i];
if(d1>1000&&d2<2000) dp1[i+2]=min(dp1[i+2],dp1[i]+1),dp2[i+2]=max(dp2[i+2],dp2[i]+1); long long d3=15000;
if(i+3<n)d3=arr[i+3]-arr[i+2];
if(i+3>n)continue;
// else continue;
if(d1<2000&&d2<2000&&d3>1000)dp1[i+3]=min(dp1[i+3],dp1[i]),dp2[i+3]=max(dp2[i+3],dp2[i]);
}
}
if(dp2[n]==dp1[n])
{ long long car2=dp2[n];
car2--;
n-=car2*2;
long long car3=n/3;
cout<<"Cars without trailers: "<<car2<<"\n";
cout<<"Cars with trailers: "<<car3<<"\n";
}else
{
if(dp1[n]==INF&&dp2[n]==0){cout<<"Impossible\n";break;}
cout<<"Ambiguous\n";
} } return 0;
}
HOJ_14001 Just Terraffic!的更多相关文章
随机推荐
- java简单使用netty
一 整合 由于本人的学过的技术太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的github项目地址 https://github.com/247292980/spri ...
- BaiduPCS-Go 使用CMD命令行全速下载百度云
BaiduPCS-Go 使用CMD命令行全速下载百度云 链接: https://laod.cn/black-technology/baidupcs-go-baiduyun.html 下面为自己测试过程 ...
- Java开发工具IntelliJ IDEA本地历史记录的使用方法
IntelliJ IDEA的本地历史记录可以帮助用户记录并跟踪本地项目的更改,防止项目的意外丢失或来源于IDE之外的项目更改.本教程将展示如何使用本地历史记录查看和恢复某些项目更改. 1 .从头开始创 ...
- Eucalyptus-利用镜像启动一个Windows Server 2008r2实例
1.前言 使用kvm制作Eucalyptus镜像(Windows Server 2008r2为例)——http://www.cnblogs.com/gis-luq/p/3990792.html 上一篇 ...
- HDU 1305 Immediate Decodability 可直接解码吗?
题意:一个码如果是另一个码的前缀,则 is not immediately decodable,不可直接解码,也就是给一串二进制数字给你,你不能对其解码,因解码出来可能有多种情况. 思路:将每个码按长 ...
- 使用Window Media Player网页播放器
近段时间在做一个IETM的项目,项目需要使用WebBrower对包含avi的xml进行显示,可avi的显示总是有问题,网上找到这段在html中播放avi的代码,在Win10上表现不错,明天上班用Win ...
- java Vamei快速教程14 异常处理
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 程序很难做到完美,不免有各种各样的异常.比如程序本身有bug,比如程序打印时打印机 ...
- java Vamei快速教程05 实施接口
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部 ...
- Python参数基础
Python参数基础 位置参数 通过位置进行匹配,把参数值传递给函数头部的参数名称,顺序从左到右 关键字参数 调用的时候使用参数的变量名,采用name=value的形式 默认参数 为没有传 ...
- 【ML】聊天机器人
继做过了泰语分词,自动对对对联后对聊天机器人产生了浓厚的兴趣.ChatBot集合了NLP,DL等多领域的应用. https://deeppavlov.ai/ https://www.rasa.com/ ...