timus   1741. Communication Fiend  URAL 解题报告  DP+读题

题目大意:把一个软件从版本1升级到版本n(求最小的花费),现在网上有很多升级软件,分别能从xi升级到yi; 而且这些软件有的能升级正版,有的能升级到盗版……
具体规则是:
Pirated能将原来的正版或者盗版升级到现在的盗版Pirated;  
Licensed 能将原来的正版升级到现在的正版Licensed ;  
Cracked 能将原来的正版或者盗版升级;  (Cracked 是正版)  但是需要注意的是一旦软件被升级到盗版,以后就只能视作盗版,也就说Cracked 虽然是正版的,但是如果从盗版升级过来就视为盗版,从正版升级过来就是为正版!   这是个小坑!
还有就是初始化的时候注意,最开始的版本是正版的
先根据xi排序,xi相同yi升序排列……   然后转化就好了   dp[i][0/1]表示当前版本是i,0盗版,  1正版……  最小的花费
注意int超了,需要longlong或者__int64……
总结:dp小水题,注意理解题意……
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=40010;
const int M=40010;
long long dp[N][2];
struct Update
{int x,y,s;char ch[10];
}pro[M];
int n,m;
bool cmp(Update u1,Update u2)
{if(u1.x!=u2.x)return u1.x<u2.x;return u1.y<u2.y;
}
int main()
{cin>>n>>m;for(int i=1;i<=m;++i){scanf("%d %d %d %s",&pro[i].x,&pro[i].y,&pro[i].s,&pro[i].ch);}sort(pro+1,pro+m+1,cmp);memset(dp,-1,sizeof(dp));// dp[1][0]=0;dp[1][1]=0;for(int i=1;i<=m;++i){if(pro[i].ch[0]=='L'){if ( dp[pro[i].x][1]!=-1&&  (dp[pro[i].y][1]==-1 ||  dp[pro[i].y][1]>dp[pro[i].x][1]+pro[i].s )  ){dp[pro[i].y][1]=dp[pro[i].x][1]+pro[i].s ;}}else if(pro[i].ch[0]=='C'){if (dp[pro[i].x][1]!=-1&&  (dp[pro[i].y][1]==-1||  dp[pro[i].y][1]>dp[pro[i].x][1]+pro[i].s )  ){///从合法的转化过来dp[pro[i].y][1]=dp[pro[i].x][1]+pro[i].s ;}if (dp[pro[i].x][0]!=-1&&  (dp[pro[i].y][0]==-1||  dp[pro[i].y][0]>dp[pro[i].x][0]+pro[i].s )  ){///从盗版的转化过来dp[pro[i].y][0]=dp[pro[i].x][0]+pro[i].s ;}}else if(pro[i].ch[0]=='P'){///当前是不合法的if (dp[pro[i].x][0]!=-1&&  (dp[pro[i].y][0]==-1||  dp[pro[i].y][0]>dp[pro[i].x][0]+pro[i].s )  ){///从盗版的转化过来dp[pro[i].y][0]=dp[pro[i].x][0]+pro[i].s ;}if (dp[pro[i].x][1]!=-1&&  (dp[pro[i].y][0]==-1||  dp[pro[i].y][0]>dp[pro[i].x][1]+pro[i].s )  ){///从合法的转化过来dp[pro[i].y][0]=dp[pro[i].x][1]+pro[i].s ;}}}if(dp[n][0]==-1&&dp[n][1]==-1){cout<<"Offline"<<endl;}else{cout<<"Online"<<endl;if(dp[n][0]==-1)cout<<dp[n][1]<<endl;else if(dp[n][1]==-1)cout<<dp[n][0]<<endl;else cout<<min(dp[n][0],dp[n][1])<<endl;}return 0;
}

timus 1741. Communication Fiend URAL 解题报告 DP+读题相关推荐

  1. timus 1513. Lemon Tale URAL 解题报告

    timus   1513. Lemon Tale    URAL 解题报告 题目大意:就是一行字符,LB组成,一个检测员呢和L有仇啊,只要是多余K个连续的L出现,那么这条语句就不合法,为此,三名程序猿 ...

  2. timus 1192. Ball in a Dream URAL 解题报告 平生第一个计算几何+高中物理

    timus   1192. Ball in a Dream    URAL  解题报告   平生第一个计算几何+高中物理 看来高中物理没白学,这个题用我仅剩下的高中物理学知识分析下竟然找到了方法,再加 ...

  3. Ural 1001 Reverse Root 解题报告

    题意: 求出每个数的平方根,然后倒序输出.保留四位小数. 思路: 我在Ural的第二道题,我的第一篇ural解题报告,为什么第一道题没有写呢....你们懂的.之所以选择Ural,是因为那上面的题都是原 ...

  4. SHU 第十届程序设计联赛(夏季赛) 解题报告

    Problem A: 一日三餐开销 水题,基本上都过了,直接贴代码: 1 #include <iostream> 2 #include <cstdio> 3 using nam ...

  5. 2014百度之星初赛第一轮解题报告:information

    Information 时间限制: 1s 内存限制: 65536K 问题描述 军情紧急,我们需要立刻开发出一个程序去处理前线侦察兵发回的情报,并做出相应的分析.现在由你负责其中的一个子模块,你需要根据 ...

  6. 攻防世界XCTF-WEB入门12题解题报告

    WEB入门题比较适合信息安全专业大一学生,难度低上手快,套路基本都一样 需要掌握: 基本的PHP.Python.JS语法 基本的代理BurpSuite使用 基本的HTTP请求交互过程 基本的安全知识( ...

  7. 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc

    糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) xzc 2019/4/5 试题 I: 糖果 时间限制: 1.0s 内存限制: 256.0MB 本题总分:25分 [问题描述]    ...

  8. 解题报告 (十四) 数位DP

    文章目录 数位DP 解题报告 HDU 4722 Good Numbers HDU 2089 不要62 HDU 3555 Bomb HDU 3652 B-number PKU 3252 Round Nu ...

  9. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  10. 解题报告(一)D、(CROC 2016 - Final Round C)Binary Table(矩阵 + 状态压缩 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. 数据结构与算法——AVL树类的C++实现
  2. 【错误记录】Flutter / Android 报错 ( AAPT: error: attribute android:requestLegacyExternalStorage not found )
  3. 你真的了解 Cookie 和 Session 吗?
  4. [Erlang 0004] Centos 源代码编译 安装 Erlang
  5. C++---内联函数与宏
  6. matlab定义和调用函数m,Matlab学习-自定义函数与调用
  7. 3dContactPointAnnotationTool开发日志(八)
  8. const 使用方法具体解释
  9. top 100 liked Q (26-)
  10. [模板]匈牙利算法(二分图匹配)
  11. 直流无刷电机的一些介绍
  12. day02-08 python基础语法
  13. 浅析APP应用内及新媒体类推广渠道
  14. 蓝牙设备删除失败_这软件能让你的蓝牙耳机,用上AirPods的功能
  15. 二维数组中根据一维数组筛选出对应数据,无数据默认为空
  16. 使用RTT代替UART,把你的JLink变成串口调试助手~
  17. b站up主是怎么赚钱,b站UP主有哪些赚钱方式,通过什么赚钱?
  18. R语言STAMP-丰度差异比较图
  19. DOCKER部署gitlab-ce中文版或最新英文版
  20. 25个Python常用库

热门文章

  1. 北京大学肖臻老师《区块链技术与应用》公开课笔记-BTC
  2. How to do video broadcast using multicast group?
  3. excel公式编辑器_动态提取符合多个条件的记录,公式躲远点
  4. 计算机31进制表,74ls290构成31进制计数器电路图文详解
  5. IT狂人职场路:揭秘华为百度高管如何炼成?
  6. 计算机usb无法使用,Win7系统电脑USB接口无法使用解决方案
  7. matlab2015的marker,matlab中markersize什么意思
  8. 【Android】'Unfortunately, Package Installer has Stopped'的解决办法
  9. 高盛最新调查:Python超过汉语成为未来最重要技能,你准备学哪种编程语言?...
  10. java gdal tiff_GDAL读写Tiff、DEM文件