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!的更多相关文章
随机推荐
- arcgis js 几种拓扑关系详解
arcgis js的拓扑关系,在处理复杂逻辑和分析时,可以通过拓扑关系,减小客户端的工作量 拓扑关系: 1.overlaps 重叠 这里的重叠跟平时我们理解的不太一样,这里的重叠,必须是A与B有交集, ...
- Java并发(六):并发策略
通过多次优化实例来了解选择并发策略的正确姿势 通过模拟浏览器程序的渲染页面(Page-Rendering)功能,为了方便,假设HTML页面只会包含标签文本和图片以及URL; 第一个版本:串行加载页面元 ...
- java中的递归思想及应用
递归就是自己调自己,最需要注意的就是结束条件,否则可能就是死循环,导致内存溢出 public T a(Object x,Object y) { if(条件true) { a(x1,y1); } els ...
- python2和3的区别丶网络编程以及socketserver多线程
一丶python2和python3的区别 1.编码&字符串 字符串: python2: Unicode v = u"root" 本质上用unicode存储(万国码) (s ...
- php 出现空格,换行原因
1.空格:转换成utf-8无bom格式 2.空格:<?php ?>标签结尾有中文,英文空格 3.换行,一个文件中有多个<?php ?>标签,标签间隔中有换行符合
- EasyUI Combobox 的 onChange,onSelect,onClick 事件
EasyUI 中 Combobox 选项发生改变时会触发 onChange,onSelect,onClick,3 个事件.最近要做一个级联的 Combo 菜单,类似于选择地址时让用户填写省,市,区的菜 ...
- FRM-92050错误
使用IE8在打开EBS Form界面时,窗口提示信息“Internet Explorer 已对此页面进行了修改,以帮助阻止跨站脚本.单击此处,获取详细信息...”或者R12 IE8中出"FR ...
- ionic文本颜色
需添加"ion-text"使"color='light'"生效 <div text-center ion-text color="light&q ...
- MAC MAMP install yaf
Yaf doesn't support PHP 5.6! You may see this: Warning: PHP Startup: yaf: Unable to initialize modul ...
- 签证-L1/L2
http://blog.sina.com.cn/s/blog_7664b7f70102uweb.html 14年4月我接到公司通知,要从MICROSTRATEGY中国研发中心内部transfer到美国 ...