【ZOJ 3897】Candy canes//Fiddlesticks】的更多相关文章

题 题意 给你一串数,a1...an,从左到右每次让一个数减小c,如果这个数小于c,那就减为0.第n个数减小后,又从第一个开始从左到右.如果这次某个数减小到0,那就改变方向,如果遇到已经是0的,就跳过.且总共最多减少n+5次,求最后变为0的数是第几个. 分析 Input 1 8 80200 100 100 100 100 80 160 200 Output 3 样例分析: 最多可以减少8+5=13次,于是最后减为0的就是第三个数了: 200 100 100 100 100 80 160 200…
[链接] 我是链接,点我呀:) [题意] [题解] 递归一会. 会发现最后肯定是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…
Problem link: http://oj.leetcode.com/problems/candy/ Suppose we are given an array R[1..N] that are ratings of N children. Let C[1..N] be a new array where C[i] is the number of candies for i-th child. From the description, C[i] should meet following…
分糖果 There are N children standing in a line. Each child is assigned a rating value. You are giving candies to these children subjected to the following requirements: Each child must have at least one candy. Children with a higher rating get more cand…
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两次...真…