随笔分类 -  Rand

Jersey Politics
摘要:poj2454:http://poj.org/problem?id=2454题意:给你3*k个数,然后让你分成三堆,使得至少其中的两堆中的数字之和大于500*k。题解:这道题一开始我并不知道怎么做,准备采用随机算法,初始化的时候使其分成3堆,然后每次从每一堆中rand一个数,依次的进行交换,但是交了几版,发现都是wa。最后才知道要用贪心。把数字进行降序排序,然后把前2*k个给两堆,只要前两堆都满足大于500*k,如果不满足,那么对于更小的数的组合就不可能满足了。然后最前两堆进行随机算法每次rand一个,然后相互交换,找到满足条件的即可! 1 #include 2 #include 3 #inc 阅读全文

posted @ 2014-01-29 19:02 天依蓝 阅读(287) 评论(0) 推荐(0)

Network Saboteur(Rand版)
摘要:poj2531:http://poj.org/problem?id=2531题意:给你一个图,图中点之间会有边权,现在问题是把图分成两部分,使得两部分之间边权之和最大。题解:随机算法#include#include#include#includeusing namespace std;int n;int g[30][30];int vis[30];const int Timelimit=2000;//时间限制是2000int main(){ scanf("%d",&n); for(int i=1;i>g[i][j]; memset(vis,0,sizeof(v 阅读全文

posted @ 2014-01-25 11:00 天依蓝 阅读(330) 评论(0) 推荐(0)

导航