【Toll!Revisited(uva 10537)】】的更多相关文章

题目来源:蓝皮书P331 ·这道题使得我们更加深刻的去理解Dijkstra!       在做惯了if(dis[u]+w<dis[v])的普通最短路后,这道选择路径方案不是简单的比大小的题横在了我们的面前. ·英文题,述大意:      一个无向图,读入起点终点以及各条边的两个端点.读入load,要求从起点开始运输,能够向终点运送load个物品.节点分为两种:城镇节点会每20个单位的货物收取一个单位的货物作为过路费(注意23个货物会收2个单位的物品作为过路费),乡村节点无论你带多少都只收取1个单…
给定图G=(V,E)G=(V,E),VV中有两类点,一类点(AA类)在进入时要缴纳1的费用,另一类点(BB类)在进入时要缴纳当前携带金额的1/20(不足20的部分按20算) 已知起点为SS,终点为TT,希望在到达TT时能够拥有PP的金额,问一开始在SS最少要携带多少金额,并求出路径(若有多条,输出字典序最小的) 从SS离开时不需要缴费,进入TT时需要缴费 倒序找最短路  d[i] 表示从i到终点需要的最少的金额 在更新d的时候 分两种情况 #include <map> #include <…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 题目很迷啊. 不会出现盆地? 可以理解为一条线. 从左往右高度上升的一座座山. 然后V升的水从最左边的山倒进去. 然后问你最后海拔多高.. (为什么是这样啊??? 鬼知道... 所以每次只要看看前i个山同时升高a[i+1]-a[i]是不是小于等于rest就好. 小于等于的话.就能持续升高. [代码] #include <bits/stdc++.h> #define rep1(i,a,b) for (int i = a;i &l…
[链接] 我是链接,点我呀:) [题意] [题解] 一个单位时间.一个单位时间地模拟就好. 然后对于每个人. 记录它所处的周期下标idx 每个单位时间都会让每个人的idx++ 注意从醒着到睡着的分界线的处理就好. 可以多循环几次..超过上限认为无解 (其他题解也提供了一种方法,就是如果状态和初始的情况相同的话.就无解了即形成了一个环. (可能如果无解一定会形成环? [代码] #include <bits/stdc++.h> #define rep1(i,a,b) for (int i = a;…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果一行里面某位有>1个x 那么是invalid的. 没有x的话. 可以分析以下(设输入的标准Even为0,然后Odd为1) (列出所有情况分析后会发现.) 那么必须满足标准^这一列该位的亦或和==0 x只有1个的情况的话.也应该满足这个,所以就能根据上面这个求出x是啥啦. 末尾添加0 是添加(4-len%4)个...不是len%4个.. (如果len%4!=0的话) [代码] #include <bits/stdc++.h&…
[链接] 我是链接,点我呀:) [题意] 给你每个字母对应的摩斯密码. 然后每个单词的莫斯密码由其组成字母的莫斯密码连接而成. 现在给你若干个莫斯密码. 请问你每个莫斯密码对应哪个单词. 如果有多个单词和他对应.那么输出字典序最小的那个. 如果没有单词和他对应. 那么,你可以删除或者添加若干字母(只能一直删或一直增加) 问你在这种情况下能匹配到的单词(要求添加或者删的单词的数量最小) 如果有多种可能.输出字典序最小的. 如果一直删除.一直增加也找不到. 那么输出所有单词里面字典序最小的哪个. […
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 绕(x,y,z)三个轴旋转. 枚举x,y,z各4次的结果. (4次之后能还原.可以方便上一层枚举下一个情况.) [代码] #include <bits/stdc++.h> #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--) using namespace std; const in…
[链接] 我是链接,点我呀:) [题意] [题解] legal被我打成leagal... 然后注意输出坐标的时候,格式是%2d.. 然后就没啥难的了.. [代码] #include <bits/stdc++.h> using namespace std; const int dx[8]={0,-1,-1,-1,0,1,1,1}; const int dy[8]={-1,-1,0,1,1,1,0,-1}; const int N = 10; char s[N+10][N+10]; char op…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每个操作对与一个点来说变化是固定的. 因此可以不用对整个数组进行操作. 对于每个询问,遍历所有的操作.对输入的(x,y)进行相应的变换就好了. 数据之间有空行. [代码] /* ope=0 EX操作 交换a[x1][y1],a[x2][y2] ope=1 DR操作 删除v中的行(无序) ope=2 IR操作 在v中的位置插入空行(无顺序) ope=3 DC操作 删除v中的列(无序) ope=4 IC操作 插入v中的列(无序) *…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 输入的二进制长度最长为7 所以得开个sta[7][2^7]的样子才存的下所有的字符的.. 定义这么一个数组当字典. 然后一个字符一个字符地读..组合成题目中的参数. 然后根据读入的每个长度为len的二进制,在字典中找到相应的字符就ok啦. [代码] #include <bits/stdc++.h> using namespace std; string s; char dic[100][100]; int readbinary…