【ZOJ 1221】Risk】的更多相关文章

题 题意 给你20个城市的相邻关系,求给定任意两个城市的最短距离 分析 求任意两个城市最短距离,就是用floyd算法,我脑残忘记了k是写在最外层的. 代码 #include<stdio.h> #include<algorithm> #define N 22 using namespace std; int n,x,a,b,test,d[N][N],from,to; void read() { for(int j=1; j<=x; j++) { scanf("%d&q…
1221: [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1581  Solved: 891 Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消毒毛巾,这种消毒毛巾使用一天后必须再做消毒处理后才能使用.消毒方式有两种,A种方式的消毒需要a天时间,B种方式…
[链接] 我是链接,点我呀:) [题意] [题解] 递归一会. 会发现最后肯定是0,1一直循环. 开始循环之后就直接返回结果就好. [代码] #include <bits/stdc++.h> #define ll long long #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 int N…
[链接] 我是链接,点我呀:) [题意] [题解] 按照两个区间的排列方式 我们可以分成以下几种情况 会发现这两个区间的作用 最多只能把两段连续不同的区间变为相同. 那么写个for处理出连续不相同的一段的个数cnt. 根据上面的排列方式. 算出每个cnt对应的答案即可. 别忘了有些情况可以乘2. [代码] #include <bits/stdc++.h> #define ll long long #define rep1(i,a,b) for (int i = a;i <= b;i++)…
[链接] 我是链接,点我呀:) [题意] [题解] 统计a中0的个数cnt0 然后m减去cnt0 因为这cnt0个0是一定会取到的. 如果m==0了 那么直接找到数组中的最小值mi 输出mi-1就好 否则 找到剩余的前m个非0的数字 设第m个非0数字为a[i],则在i+1..n中再取最小值mi 则输出前m个非0数字和+mi-1 m<0的话,impossible n==m的话,Richman [代码] #include <bits/stdc++.h> #define ll long lon…
[链接] 我是链接,点我呀:) [题意] [题解] 二分最后的最大抵御值mid. 然后对于每个蘑菇. 都能算出来它要浇水几次mid/ai 然后如果第i个蘑菇没浇水达到要求次数. 就在i和i+1之间来回走动(注意改变第i+1个蘑菇的状态) 直到满足每个蘑菇的浇水需求为止. 注意如果到了最后一个蘑菇所在的位置之后. 如果这个蘑菇已经不需要浇水了 那么就没有必要来到第n个位置.直接在n-1位置停下来就ok了 [代码] #include <bits/stdc++.h> #define ll long…
[链接] 我是链接,点我呀:) [题意] [题解] /* for a[1] from 1~9 1*1=1 2*1=2 3*1=3 1*2=2 2*2=4 3*2=6 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 1*5=5 2*5=10 3*5=15 1*6=6 2*6=12 3*6=18 1*7=7 2*7=14 3*7=21 1*8=8 2*8=16 3*8=24 1*9=9 2*9=18 3*9=27 use "c[i]" or "c[i]c…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] /* 设一个超级源点S和超级汇点T S和2*i-1各连一条容量为ni的边. 花费为0 表示每天都会产生ni条要洗的毛巾 S和2*i各连一条容量为INF的边 花费为f 表示新买毛巾用 2*i-1和2*(i+a)连容量为INF的边 花费为fa 2*i-1和2*(i+b)连容量为INF的边 花费为fb 表示用完的毛巾消毒. 当然.用完的毛巾还能不马上消毒. 所以 2*i-1和2*(i+1)-1连容量为INF的边.花费为0 然后对于2*…
ZOJ 3200 首先我写了个高斯消元,但是消出来了一些奇怪的东西,我就放弃了... 然后只好考虑dp:\(dp[i][j][k]\)表示走到了第i步,到了\((j,k)\)这个节点的概率. 那么答案就是边上节点在所有的步数走到的概率加起来第一次超过\(p%\)的地方. 然后转移的时候枚举现在要走到哪一个方向,走到\((j',k')\),就可以转移到\(dp[i+1][j'][k']\). 然后一共需要走的步数是看对于当前这一步所有的节点所能到达的概率是不是都是0(为了浮点误差,我们需要把=0改…
ZOJ 3463 题意:有一个钢琴,一个人把左手放在L位置上,右手放在R位置上,要弹某\(n\)个键,每个手最多能够得着9个位置,并且两只手不能交叉.把手移动的代价是大拇指移动的距离的平方根.问弹完这么多键之后最少花的代价. 思路:肯定是dp啊.考虑\(dp(i,j,k)\)表示当前要弹第i个键,左手大拇指在j位置,右手大拇指在k位置,最少代价. 然后转移的时候肯定只会移动一只手.那么从J移动到j',从i移动到i'都要被算到. 并且还要判断两只手是否会重叠,我数数都能数错...连wa两次...真…