贪心+等价转化 HDU 1489】的更多相关文章

等价转换,题意简单来讲如下:在一条直线均匀分布N个村庄,每个村庄要么买酒,要么卖酒,且村庄的买酒和卖酒供需平衡,总和为0,把k个单位的酒从一个村庄运到相邻的村庄需要k个单位的劳动力,输出最小的劳动力. 贪心,从最左边的村庄考虑,如果需要买酒,则一定有劳动力从村庄2及以后的村庄运到村庄1,这样问题就可以等价于只有村庄2—N,且第二个村庄的需求为a1+a2.另外如果是卖酒,同样是要运到村庄2号或后面的村庄,所以这里的话,还要注意贪心方式,每次进行交易的话,一定是和其最近的村庄进行交易是最优的,试想如…
#include <iostream>#include<stdio.h>#include<cmath>#include<algorithm>using namespace std;struct product{    int w;    int l;     bool operator<(product &p2)    {        if(w==p2.w)return l<=p2.l;        else return w<…
Brief Description 给你N个互不相同的字符串,记\(S_i\)为第i个字符串,现在要求你指定N个串的出现顺序,我们用\(V_i\)表示第i个字符串是第几个出现的,则V为1到N的一个排列.我们希望你指定的出现顺序可以使总代价最小 一个出现顺序的代价的计算方法如下依次考虑第i个串\(S_i\)对代价的贡献: 假如存在一个串\(S_j\), \(S_j\)为\(S_i\)的后缀: 假如存在一个串\(S_j\), \(S_j\)为\(S_i\)的后缀,且\(V_j>V_i\)则第i个串对…
题目大意 vjudge链接 给你一个n,m,求解满足等式x0+2x1+4x2+...+2mxm=n的x0~xm的最小和(xi为非负整数) 数据范围 0≤n,m≤109 思路 n和m都在int范围内,所以当i≥30时,xi必为0 求最小和用贪心解决 代码 1 #include <cstdio> 2 #include <algorithm> 3 using namespace std; 4 int n,m; 5 6 int main(){ 7 int T; 8 scanf("…
题目:https://loj.ac/problem/3057 想令 b[ i ][ j ] 表示两点是否可行,从可行的点对扩展.但不知道顺序,所以写了卡时间做数次 m2 迭代的算法,就是每次遍历所有不合法点对,枚举其出边看是否有合法的,把自己更新成合法. 可得10分. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int rdn() { ;;char ch=getc…
A.GPA(HDU4802): 给你一些字符串对应的权重,求加权平均,如果是N,P不计入统计 GPA Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1193    Accepted Submission(s): 743 Problem Description In college, a student may take several…
Gas Station There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journ…
Description The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 <= N <= 10,000) weeks, the price of milk and labor will fluctuate weekly such that it will cost the company C_i (1 <= C_i <= 5,000) c…
题意 给出n个pair (a,b) 把它放在线性序列上 1--n 上 使得  sum(a*(j-1)+b*(n-j))  最小 思路 :对式子进行合并 同类项 有:    j*(a-b)+  (-a+b*n) 可以发现   只和第一项有关  所以把a-b小的和大的j 结合即可 比赛的时候被B搞得心态爆炸就开始乱搞了 实际上已经试过a-b 了但是不知道为啥没有过样例 也怪自己不冷静 冷静一推也就是半分钟的事情 #include<bits/stdc++.h> #define FOR(i,f_sta…
题目内容 Vjudge链接 给出一个闭区间,找该区间内两个数,使这两个数的按位或最大. 输入格式 包含至多\(10001\)组测试数据. 第一行有一个正整数,表示数据的组数. 接下来每一行表示一组数据,包含两个整数\(l,r\). 保证$ 0\le l\le r\le 10^{18}$. 输出格式 对于每组数据输出一行,表示最大的位或. 样例输入 5 1 10 0 1 1023 1024 233 322 1000000000000000000 1000000000000000000 样例输出 1…