題意:有n門要複習的功課,使得複習難度越來越低,並且兩門課之間難度差的平方和盡可能的大,求要怎麼對要複習的功課進行排序。
思路:dp,對難度排序,轉移方程dp[i][j] = max ( dp[i][j], dp[i-1][j-k] + abs ( num[j] - num[j-k] ) * abs ( num[j] - num[j-k] ) ); dp[i][j]表示前j課中選最大的i節課使平方和最大
注意點:無
以下為ac**:
run id
submit time
judge status
pro.id
exe.time
exe.memory
code len.
language
author
13229111
2015-03-24 18:13:43
accepted
2078
15ms
1848k
3288 b
g++luminous11
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include #define ll long long
#define ull unsigned long long
#define all(x) (x).begin(), (x).end()
#define clr(a, v) memset( a , v , sizeof(a) )
#define pb push_back
#define rdi(a) scanf ( "%d", &a )
#define rdii(a, b) scanf ( "%d%d", &a, &b )
#define rdiii(a, b, c) scanf ( "%d%d%d", &a, &b, &c )
#define rs(s) scanf ( "%s", s )
#define pi(a) printf ( "%d", a )
#define pil(a) printf ( "%d\n", a )
#define pii(a,b) printf ( "%d %d", a, b )
#define piil(a,b) printf ( "%d %d\n", a, b )
#define piii(a,b,c) printf ( "%d %d %d", a, b, c )
#define piiil(a,b,c) printf ( "%d %d %d\n", a, b, c )
#define pl() printf ( "\n" )
#define psl(s) printf ( "%s\n", s )
#define rep(i,m,n) for ( int i = m; i < n; i ++ )
#define rep(i,m,n) for ( int i = m; i <= n; i ++ )
#define dep(i,m,n) for ( int i = m; i > n; i -- )
#define dep(i,m,n) for ( int i = m; i >= n; i -- )
#define repi(i,m,n,k) for ( int i = m; i < n; i += k )
#define repi(i,m,n,k) for ( int i = m; i <= n; i += k )
#define depi(i,m,n,k) for ( int i = m; i > n; i += k )
#define depi(i,m,n,k) for ( int i = m; i >= n; i -= k )
#define read(f) freopen(f, "r", stdin)
#define write(f) freopen(f, "w", stdout)
using namespace std;
const double pi = acos(-1);
template inline bool rd ( t &ret )
inline void pd ( int x )
const double eps = 1e-10;
const int dir[4][2] = ;
struct node
node( int _x, int _y ) : x(_x), y(_y) {}
node( int _x, int _y, int _cnt ) : x(_x), y(_y), cnt(_cnt) {}
};struct edge
edge( int _to, int _wei ) : to(_to), wei(_wei) {}
};int dp[60][50];
int main()
sort ( all ( num ) );
clr ( dp, 0 );
int ans = 0;
rep ( i, 1, m )
ans = max ( ans, dp[i][j] );}}
pil ( ans );
}return 0;
}
hdu 2078 複習時間
problem description 為了能過個好年,xhd開始複習了,於是每天晚上揹著書往教室跑。xhd複習有個習慣,在複習完一門課後,他總是挑一門更簡單的課進行複習,而他複習這門課的效率為兩門 課的難度差的平方,而複習第一門課的效率為100和這門課的難度差的平方。xhd這學期選了n 門課,但是...
hdu 2078 複習時間
problem description 為了能過個好年,xhd開始複習了,於是每天晚上揹著書往教室跑。xhd複習有個習慣,在複習完一門課後,他總是挑一門更簡單的課進行複習,而他複習這門課的效率為兩門課的難度差的平方,而複習第一門課的效率為100和這門課的難度差的平方。xhd這學期選了n門課,但是一晚...
HDU 2078 複習時間 貪心 水
problem description 為了能過個好年,xhd開始複習了,於是每天晚上揹著書往教室跑。xhd複習有個習慣,在複習完一門課後,他總是挑一門更簡單的課進行複習,而他複習這門課的效率為兩門課的難度差的平方,而複習第一門課的效率為100和這門課的難度差的平方。xhd這學期選了n門課,但是一晚...