描述
輸入格式
第一行乙個數n。
第二行n個數,第i個數代表預選名單中第i號小精靈的書寫質量(均為非負整數)。
接下來有若干行,每行兩個不同的非負整數x和y,表示預選名單中第x號和第y號的小精靈曾經在賀卡書寫合作任務中發生過衝突。
輸出格式
第一行乙個數s。
樣例1樣例輸入1
3 4 2 5
1 2
copy
樣例輸出1
9 copy
限制各個測試點1s
提示1<=n<=50,1<=x,y<=n
思路:dfs+剪枝
題解:
#include
#include
#include
using
namespace
std;
bool vis[500];
int sum[500];
bool pd[500][500];
int ans=0;
int n;
struct cces[200000];//用鄰接表存一定要開大,有衝突的對數不確定。
int first[200000],nxt[200000];
int tot=0;
void build(int ff,int tt)
; nxt[tot]=first[ff];
first[ff]=tot;
}int val[500];
void dfs(int x,int now)
ans=max(ans,now);
if(x>n)
for(int i=0;i<=1;i++)
}vis[x]=1;
dfs(x+1,now+val[x]);
vis[x]=0;
}else
}}struct ffhhh[500];
int cmp(ff aa,ff bb)
int a[500];
int main()
sort(hhh+1,hhh+n+1,cmp);//按價值從大到小排序,極大減少複雜度。
for(int i=1;i<=n;i++)
int x,y;
while(scanf("%d%d",&x,&y)!=eof)
for(int i=1;i<=n;i++)
for(int i=n;i>=1;i--)
dfs(1,0);
printf("%d",ans);
return
0;}
vijos1048 送給聖誕夜的賀卡
vijos1048 表示不是很懂為什麼這個是七級題。這是一道不明複雜度的玄學搜尋題 大概是sigma i,1,n c i,n n 50 然而實際上過所有資料30ms不到 這裡我們用鄰接表來存衝突關係 enm表示當前狀態該節點有多少個與其衝突的人 然後dfs下去 這就是樸素的思路 inline voi...
vijos1048 送給聖誕夜的賀卡
題目 不看資料範圍一定想貪心系列 暴搜就可以了?然而不行 tle 於是考慮減枝 題目要求價值總和最大,就按大 小排序 就從最大的選 然而僅僅這樣複雜度不會降 需要配合字尾和食用 當發現目前已選 後面待選的總和 即都選 依然比目前答案要小時,不搜 因為已經按大小排過序了,搜到較大答案的時間靠前的可能性...
vijos1049 送給聖誕夜的禮品
題目大意 順次給出m個置換,反覆使用這m個置換對初始序列進行操作,問k次置換後的序列。m 10,k 2 31。題目分析 先將m個置換所使用的矩陣合併起來,然後做t k m次。剩下的k m次模擬即可。include include include include include include inc...