BZOJ2336 HNOI2011 任務排程

2022-03-29 20:05:07 字數 1271 閱讀 3767

bzoj2336: [hnoi2011]任務排程

題解here!

這個題一眼看去貪心對吧。。。

我們列舉第3種任務先跑$a$還是$b$。

這樣是$2^$的。

但是有時候貪心可能並不是對的。。。

所以我們可以在貪心基礎上加上隨機化。

大力隨機交換$a,b$機器任務執行的先後順序,貪心計算時間。

如果更優就儲存,大概每次隨機$2000$次夠了。

模擬退火好像被卡常了,不清楚。。。

附**:

#include#include#include#define maxn 25

using namespace std;

int n,ans=2147483646;

int top_a,top_b,que_a[maxn],que_b[maxn];

bool flag[maxn];

struct taska[maxn];

inline int read()

while(c>='0'&&c<='9')

return date*w;

}inline bool cmp1(const int &p,const int &q)

inline bool cmp2(const int &p,const int &q)

int calculate()

s=max(sum_a,sum_b);

sum_a=sum_b=0;

for(int i=1;i<=top_b;i++)sum_b+=a[que_b[i]].b;

for(int i=1;i<=top_a;i++)

s=max(s,max(sum_a,sum_b));

return s;

}void solve()

sort(que_a+1,que_a+top_a+1,cmp1);

sort(que_b+1,que_b+top_b+1,cmp2);

int s=calculate();

for(int cases=1;cases<=2000;cases++)

if(top_b)

int now=calculate();

if(nown)

if(a[x].t==1)

else if(a[x].t==2)

else

}int main()

dfs(1);

printf("%d\n",ans);

return 0;

}

bzoj 2326 HNOI2011 數學作業

題目大意 給你n,m,求concatenate 1.n mod m的值 concatenate 1.n 代表把1到n連起來 比如n 13時 concatenate 1.n 就是12345678910111213 n 10 1 m 10 9 這題很水,對於n,將其分開,比如145,就分成1 9,10 ...

BZOJ1010 HNOI2008 玩具裝箱toy

先把程式放著,週末來更新 華麗的分割線 不想寫題解了。照著網上的題解推一邊即可 注意有的題解最後推倒出來明明是求上 下 凸包的形式,但配的圖卻是下 上 凸包的。不過斜率優化還不是搞的很懂。time limit 1 sec memory limit 162 mb submit 6661 solved ...

BZOJ4010 HNOI2005 菜餚製作

分析 這應該比較明顯是個拓撲排序。序號小的要放前面,但是會受到後面很多菜的限制。其實序號小的優先考慮和序號大的最後考慮應該是差不多的。不知道科不科學,求大神指正 把圖中的邊全部反向,拓撲 堆維護剩下的節點中度為0且序號最大的。把得到的序列反向輸出。include include using name...