随笔分类 -  贪心

摘要:官方题解:若没有边权,则对点权从大到小排序即可。。考虑边,将边权拆成两半加到它所关联的两个点的点权中即可。。。因为当两个人分别选择不同的点时,这一权值将互相抵消。#include #include #include #include using namespace std;const int MAXN = 100010;int N, M;double node[MAXN];int main(){ while ( ~scanf( "%d%d", &N, &M ) ) { for ( int i = 1; i <= N; ++i ) scanf( &quo 阅读全文
posted @ 2013-08-06 21:07 冰鸮 阅读(200) 评论(0) 推荐(0) 编辑
摘要:O(n^3)的时间复杂度,改了半天交了二三十遍,TLE到死,实在没办法了……跪求指点!!! 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int MAXN = 1010; 9 const int INF = 1 tempS[m] - K ) continue; 51 while ( tempS[st] = K ) //特殊情况,只覆盖一个点 82 { 83 flag = ... 阅读全文
posted @ 2013-07-29 19:44 冰鸮 阅读(429) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1611简单的贪心 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 const int MAXN = 110; 6 7 struct worker 8 { 9 char name[20];10 int A, B;11 in 阅读全文
posted @ 2012-09-03 23:15 冰鸮 阅读(287) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1659题意:给出数N, L, U, 求一个数M, L ≤ M ≤ U,使得 N 与 M 按位或运算的结果最大,求最小的 M。分析:贪心。从最高位开始枚举,如果 N 的二进制表示形式的第 i 位是0,那么就尽可能让 M 的第 i 位在给定范围内是1。如果 N 的二进制表示形式的第 i 位是1,因为要求最小的M,则 M 的第 i 位要在给定范围 阅读全文
posted @ 2012-09-03 22:28 冰鸮 阅读(216) 评论(0) 推荐(0) 编辑
摘要:最大值最小化问题,二分+贪心,参考刘汝佳白皮书151页。之前我的代码在UVa上交过了,但是在ZOJ上却是WA。后来才发现是错在这两组数据:24 3100000 1 1 14 31 1 1 100000 1 #include <cstdio> 2 #include <cstring> 3 4 const int MAXN = 1000 + 10; 5 6 int m,k; 7 long long int num[MAXN]; 8 long long int sum; 9 bool w[MAXN]; 10 11 bool Judge( long long int x ) 1 阅读全文
posted @ 2012-07-29 13:44 冰鸮 阅读(182) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示