UOJ513 娓呮壂閾舵渤
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UOJ513 娓呮壂閾舵渤相关的知识,希望对你有一定的参考价值。
鏍囩锛?a href='http://www.mamicode.com/so/1/%e4%bd%bf%e7%94%a8' title='浣跨敤'>浣跨敤
棰滆壊涓嶅悓 杩欎竴 reset tps log ret turn n+1娓呮壂閾舵渤
閾舵渤绯诲叡鏈?(n) 棰楄鏄燂紝缂栧彿涓?(1, dots, n)銆傜幆閾舵渤绯昏埅琛屽彲鑳戒細缁忚繃鐨勬棤鍚戣埅閬撳叡鏈?(m) 鏉★紝绗?(i) 鏉¤埅閬撹繛鎺?(x_i) 鍙疯鏄熷拰 (y_i) 鍙疯鏄?((x_i eq y_i))锛岀敤 ((x_i, y_i)) 琛ㄧず銆備繚璇佸悓涓€鏉¤埅閬撲笉浼氳閲嶅鍒椾妇澶氭銆?/p>
鐢变簬閮ㄥ垎鑸亾瀛樺湪瀹规槗琚挒涓婄殑灏忚鏄熷甫锛屽垵濮嬫椂涓€閮ㄥ垎鑸亾鏄彲閫氳鐨勶紝涓€閮ㄥ垎鐨勮埅閬撴槸涓嶅彲閫氳鐨勩€傜珷鍖楄殼璇寸殑娓呮壂閾舵渤璁″垝锛屽氨鏄笇鏈涗綘鍏堝悜瀹囧畽鍙戝皠璺宠殼婵€鍏夛紝杩滆窛绂绘竻闄ゆ墍鏈夐樆纰嶈鍒掔殑灏忚鏄熷甫锛屽皢鎵€鏈夎埅閬撳彉寰楀彲閫氳銆?/p>
濡傛灉璺宠殼婵€鍏夌収灏勫埌浜嗕竴涓埅閬撲笂锛屽垯璇ヨ埅閬撶殑閫氳鐘舵€佷細琚炕杞細濡傛灉涓€涓埅閬撳師鏈笉鍙€氳锛岄偅涔堣鐓у皠鍚庤埅閬撲笂鐨勫皬琛屾槦甯︿細琚竻闄わ紝鑸亾涔熶細鍙樺緱鍙€氳锛涘弽涔嬭嫢璇ヨ埅閬撳師鏈彲閫氳锛岄偅涔堣烦铓ゆ縺鍏変細鍥犱负鏈嚮涓洰鏍囪€屽湪闄勮繎鐨勫畤瀹欑┖闂翠腑鑳′贡鐙傝桨涔辩偢锛岀偢鍑哄皬琛屾槦甯︼紝瀵艰嚧璇ヨ埅閬撳彉寰椾笉鍙€氳銆?/p>
璺宠殼婵€鍏夊彧鑳芥壒閲忓彂灏勶紝涓嶈兘鍗曠嫭鍙戝皠銆傚彂灏勬柟寮忓彧鏈夊涓嬩袱绉嶏細
-
閫夋嫨涓€涓敱琛屾槦缁勬垚鐨勭畝鍗曠幆锛屽彂灏勮烦铓ゆ縺鍏夊悗锛屼换鎰忎竴鏉$幆璺笂鐨勮埅閬撻兘浼氬彈鍒拌烦铓ゆ縺鍏夌収灏勩€備篃灏辨槸璇达紝閫夊嚭涓€涓敱涓嶅悓鐨勮鏄熺紪鍙风粍鎴愮殑搴忓垪 (p_1,cdots,p_k)锛?span class="math inline">(2 le k le n)
鎶婃瘡涓鏄熸爣璁颁负榛戣壊鎴栬€呯櫧鑹诧紝鍙戝皠璺宠殼婵€鍏夊悗锛屼换鎰忎竴鏉′袱绔鏄熼鑹蹭笉鍚岀殑鑸亾閮戒細鍙楀埌璺宠殼婵€鍏夌収灏勩€備篃灏辨槸璇达紝瀵逛簬鎵€鏈夌殑鑸亾 ((x_i, y_i))锛屽鏋?(x_i) 鍜?(y_i) 鍙疯鏄熺殑棰滆壊涓嶅悓锛岄偅涔?((x_i, y_i)) 鑸亾鐨勯€氳鐘舵€佷細琚炕杞€?/p>
鍙戝皠璺宠殼婵€鍏夌殑璐圭敤闈炲父鏄傝吹锛屾墍浠ョ珷鍖楄殼瑕佹眰浣犲垽鏂槸鍚﹁兘浣跨敤涓嶈秴杩?(m+1) 娆″彂灏勫氨鑳藉畬鎴愭竻鎵摱娌宠鍒掋€?/p>
瀵逛簬鎵€鏈夋祴璇曟暟鎹紝婊¤冻 (1 le T le 10,1 le n le 300,0 le m le frac{n(n-1)}{2})銆?/p>
棰樿В
https://blog.csdn.net/suncongbo/article/details/105816960
鑰冭檻绠€鍖栨搷浣滐細
瀵逛簬绗簩绉嶆搷浣滐紝鍏跺疄灏卞彲浠ョ瓑浠蜂簬鑻ュ共娆″崟鐐规搷浣滐紝姣忔鏍囪涓€涓偣锛屾妸鍜岃繖涓偣鐩搁偦鐨勮竟鍏ㄩ儴鍙嶈浆銆傚嵆鏈夌敤鐨勬搷浣滃彧鏈?span class="math inline">(n)
绉嶃€?/p>瀵逛簬绗竴绉嶆搷浣滐紝浼楁墍鍛ㄧ煡涓€涓棤鍚戝浘涓墍鏈夌殑鐜兘鍙互鐢辫嫢骞蹭釜闈炴爲杈硅鐩栫殑鐜紓鎴栧緱鍒般€傚嵆鏈夌敤鐨勬搷浣滃彧鏈?span class="math inline">((m?n+1))
绉嶃€?/p>杩欐牱鎴戜滑鍙互寰楀埌涓€涓紓鎴栨柟绋嬬粍锛屽彉閲忔暟鍜屾柟绋嬫暟閮戒负((m+1)). 杩欎篃璇佹槑浜嗕负浠€涔堝彧瑕佹湁瑙e氨鑳藉湪((m+1))娆℃搷浣滃唴鍑鸿В銆?/p>
鏃堕棿澶嶆潅搴?span class="math inline">(O(frac{m^3}{蠅}))
锛屾湡鏈涘緱鍒?0鍒嗐€?/p>鑰冭檻浼樺寲锛岄€氳繃娆ф媺鍥炶矾涓嶉毦璇佹槑涓€涓瓙鍥惧彲浠ョ敤绗竴绉嶆搷浣滄秷鍘诲綋涓斾粎褰撳瓙鍥惧唴姣忎釜鐐瑰害閮芥槸鍋舵暟銆?/p>
浜庢槸闂灏卞彉鎴愪簡鐢ㄧ浜岀鎿嶄綔浣垮緱姣忎釜鐐瑰害鍧囦负鍋舵暟銆傚彉閲忔暟閲忓拰鏂圭▼鏁伴噺閮戒负(n)涓€?/p>
鏃堕棿澶嶆潅搴?span class="math inline">(O(frac{n^3}{蠅}))
.CO int N=310;
bitset<N> a[N];
void real_main(){
int n=read<int>();
for(int i=1;i<=n;++i) a[i].reset();
for(int m=read<int>();m--;){
int x=read<int>(),y=read<int>(),w=read<int>();
a[x][x].flip(),a[y][y].flip(),a[x][y].flip(),a[y][x].flip();
if(w) a[x][n+1].flip(),a[y][n+1].flip();
}
for(int i=1;i<=n;++i){
int p=i;
for(int j=i;j<=n;++j)if(a[j][i]) {p=j; break;}
if(p!=i) swap(a[p],a[i]);
if(!a[i][i]) continue;
for(int j=1;j<=n;++j)if(j!=i and a[j][i]) a[j]^=a[i];
}
for(int i=1;i<=n;++i)if(!a[i][i] and a[i][n+1]) {puts("no"); return;}
puts("yes");
}
int main(){
for(int T=read<int>();T--;) real_main();
return 0;
}
以上是关于UOJ513 娓呮壂閾舵渤的主要内容,如果未能解决你的问题,请参考以下文章