摘要: 因为交换相邻两头牛对其他牛没有影响,所以可以通过交换相邻两头来使答案变小。按照a.t b.f排降序,模拟着计算答案 cpp include include include using namespace std; const int N=100005; int n; long long ans,su 阅读全文
posted @ 2018-05-02 22:00 lokiii 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 压一维状态,转移时把符合条件的上一行加上 cpp include include using namespace std; const int N=5005,mod=1e9; int m,n,x,a[20],st[N],k,f[20][N],ans; int main() { scanf("%d%d 阅读全文
posted @ 2018-05-02 21:31 lokiii 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 这个题方法还挺多的,不过洛谷上要输出方案所以用堆最方便 先按起始时间从小到大排序。 我用的是greater重定义优先队列(小根堆)。用pair存牛棚用完时间(first)和牛棚编号(second),每次查看队首的first是否比当前牛的起始时间早,是则弹出队首记录当前牛的答案,再把新的pair放进去 阅读全文
posted @ 2018-05-02 21:19 lokiii 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 直接枚举两两牛之间的距离即可 cpp include include include using namespace std; const int N=10005; int n,a[N]; int read() { int r=0,f=1; char p=getchar(); while(p '9' 阅读全文
posted @ 2018-05-02 20:00 lokiii 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 把add传参里的double写成int我也是石乐志…… 首先这个东西长得就很01分数规划 然后我不会证为什么没有8字环,我们假装他没有 那么设len为环长 $$ ans \leq \frac{\sum_{i=1}^{len}f_i}{\sum_{i=1}^{len}t_i} $$ $$ ans \s 阅读全文
posted @ 2018-05-02 19:52 lokiii 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 设f[i]为i不选的最小损失,转移是f[i]=f[j]+e[i[(i j 1 include using namespace std; const int N=100005; int n,m,e[N],q[N],l,r; long long f[N],ans,mn=1e18; int read() 阅读全文
posted @ 2018-05-02 18:28 lokiii 阅读(145) 评论(0) 推荐(0) 编辑