Problem J. Journey with Pigs

Problem J. Journey with Pigs
http://codeforces.com/gym/241680/problem/J
考察排序不等式
算出来单位重量在每个村庄的收益,然后生序排列
猪的重量也生序排列
此时价值最大

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<ctime>
 7 #include<set>
 8 #include<map>
 9 #include<stack>
10 #include<cstring>
11 #define inf 2147483647
12 #define ls rt<<1
13 #define rs rt<<1|1
14 #define lson ls,nl,mid,l,r
15 #define rson rs,mid+1,nr,l,r
16 #define N 100010
17 #define For(i,a,b) for(long long i=a;i<=b;i++)
18 #define p(a) putchar(a)
19 #define g() getchar()
20
21 using namespace std;
22 long long n,t;
23 long long dis[1010];
24 struct value{
25     long long poi;
26     long long v;
27 }a[1010];
28
29 struct pig{
30     long long poi;
31     long long w;
32 }b[1010];
33 long long ans[1010];
34
35 void in(long long &x){
36     long long y=1;
37     char c=g();x=0;
38     while(c<‘0‘||c>‘9‘){
39         if(c==‘-‘)y=-1;
40         c=g();
41     }
42     while(c<=‘9‘&&c>=‘0‘){
43         x=(x<<1)+(x<<3)+c-‘0‘;c=g();
44     }
45     x*=y;
46 }
47 void o(long long x){
48     if(x<0){
49         p(‘-‘);
50         x=-x;
51     }
52     if(x>9)o(x/10);
53     p(x%10+‘0‘);
54 }
55
56 bool cmp1(pig a,pig b){
57     return a.w<b.w;
58 }
59
60 bool cmp2(value a,value b){
61     return a.v<b.v;
62 }
63
64 int main(){
65     freopen("journey.in","r",stdin);
66     freopen("journey.out","w",stdout);
67     in(n);in(t);
68     For(i,1,n){
69         in(b[i].w);
70         b[i].poi=i;
71     }
72     sort(b+1,b+n+1,cmp1);
73     For(i,1,n)
74         in(dis[i]);
75     For(i,1,n){
76         in(a[i].v);
77         a[i].poi=i;
78     }
79     For(i,1,n)
80         a[i].v=a[i].v-dis[i]*t;
81     sort(a+1,a+n+1,cmp2);
82     For(i,1,n)
83         ans[a[i].poi]=b[i].poi;
84     For(i,1,n-1){
85         o(ans[i]);p(‘ ‘);
86     }
87     o(ans[n]);
88
89     return 0;
90 }

原文地址:https://www.cnblogs.com/war1111/p/10658159.html

时间: 2024-10-03 10:18:43

Problem J. Journey with Pigs的相关文章

XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal

题目:Problem J. TerminalInput file: standard inputOutput file: standard inputTime limit: 2 secondsMemory limit: 256 mebibytesN programmers from M teams are waiting at the terminal of airport. There are two shuttles at the exitof terminal, each shuttle

Problem J: 求个最大值

Problem J: 求个最大值 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 871  Solved: 663[Submit][Status][Web Board] Description 定义MaxValue类,用于求一系列非零整数的最大值.其中: 1. 数据成员elements用于存储所有输入的非零整数. 2. void append(int)用于向elements中添加一个新数据. 3. int getMax()用于求出elements中的

山科SDUST OJ Problem J :连分数

Problem J: 连分数 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2723  Solved: 801[Submit][Status][Web Board] Description 一个高为n的连分数定义为 . 给出2个数,一个用p/q的方式表达,另一个用高度为n的连分数来表示,请你判断他们是否相等. Input 输入有多组,每组包含两部分用来表示两种形式的分数:第一部分是p和q(1 ≤ q ≤ p ≤ 10^18),表示分数p/q:然后是一

POJ3544 Journey with Pigs 动规基础贪心思想

非常经典的贪心题目,没有严格证明的话,肯定是YY着做的,题意: 约翰要从A到B,途中会经过N个村庄,他会带N只猪,然后卖掉,每个村庄卖一只,第i个村庄的人出价pi 每斤,从A到第i个存在的距离为disi,而且运一只猪需要话花费t * disi每斤,t一开始会给定 输入第一行n,t 接下来第一行 n个数,代表各个猪的重量 在接下来第二行n个数,代表每个村庄距离A的距离dis 在接下来第三行n个数,代表每个村庄出价p 输出n个数,表示每个村庄买的哪只猪 这题目一开始看到就往dp方向去想,但是发现不行

实验12:Problem J: 动物爱好者

#define null ""是用来将字符串清空的 #define none -1是用来当不存在这种动物时,返回-1. 其实这种做法有点多余,不过好理解一些. Home Web Board ProblemSet Standing Status Statistics Problem J: 动物爱好者 Problem J: 动物爱好者 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 509  Solved: 376[Submit][Status

Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/attachments Description The travel agency “Four Russians” is offering the new service for their clients. Unlike other agencies that only suggest one-way

华农oj Problem J: 幻化【贪心/抽屉原理】

Problem J: 幻化 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 18 Solved: 3 [Submit][Status][Web Board] Description 遇见你是我一世的春暖花开, 从此清风明月浩瀚星海. 不论结局,很高兴认识你. 她给了他一个长度为n的整数序列a[],他还给了她另外一个长度为n的整数序列b[],现在他想通过每次交换a[i],a[j]使序列a变成b,但是每次交换的代价是|j-i|. 请问最少的代价是多少呢?

2018 Multi-University Training Contest 4 Problem J. Let Sudoku Rotate 【DFS+剪枝+矩阵旋转】

任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6341 Problem J. Let Sudoku Rotate Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1363    Accepted Submission(s): 717 Problem Description Sudoku i

【动态规划】【滚动数组】【bitset】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal

有两辆车,容量都为K,有n(10w)个人被划分成m(2k)组,依次上车,每个人上车花一秒.每一组的人都要上同一辆车,一辆车的等待时间是其停留时间*其载的人数,问最小的两辆车的总等待时间. 是f(i,j)表示前i组,j个人是否可行.w(i)表示第i组的人数. if f(i,j)==1 then f(i+1,j+w(i+1))=1. 这是个bitset可以做的事情,每次左移以后或上f(i-1)的bitset即可.其实可以滚动数组. 然后每更新一次bitset,求一下其最左侧的1的位置,就是对于第一辆