bzoj2336: [hnoi2011]任務排程
題解here!
這個題一眼看去貪心對吧。。。
我們列舉第3種任務先跑$a$還是$b$。
這樣是$2^$的。
但是有時候貪心可能並不是對的。。。
所以我們可以在貪心基礎上加上隨機化。
大力隨機交換$a,b$機器任務執行的先後順序,貪心計算時間。
如果更優就儲存,大概每次隨機$2000$次夠了。
模擬退火好像被卡常了,不清楚。。。
附**:
#include#include#include#define maxn 25using 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...