1月13日題解

2021-10-02 04:02:41 字數 1899 閱讀 4376

**題意:**輸入n,a,b。再輸入n個數p1,p2,…pn。有兩個集合a和b,這n個數中如果x屬於集合a,a-x也必須屬於集合a;如果x屬於集合b,b-x也必須屬於集合b。如果能分為兩個集合的話,輸出「yes」並輸出每個元素屬於集合a還是b,0表示屬於集合a,1表示屬於集合b。

**思路:**先假設存在一種合理的方案,即任意乙個x,一定屬於集合a和b中的乙個。如果最後結果合理集合a、b應該沒有交集。設n+1和n+2分別為集合a和b的根節點。用乙個map儲存元素對應的下標。

對於任意乙個x,如果a-x不存在,則x一定屬於集合b,把x下標和集合b(即n+2)並起來;如果b-x也不存在,則x又一定屬於集合a,把x下標和集合a(即n+1)並起來,此時集合a,b並了起來,不合理。

對於任意乙個x,如果a-x存在,則把x和a-x下標並起來,此時x不一定屬於集合a,因為可能存在n=2,a=8,b=20 4,16的資料。只有當b-x不存在時,才能把x的下標和a並起來。

如果b-x也存在,就把x和b-x的下標也並起來,此時如果x!=a-x!=b-x時,說明集合a和b公用x,顯然不合理。此時如果x==a-x!=b-x,顯然應屬於集合b。特例就是a和b相等,此時任何分組都可以。

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

int fa[

100010

],p[

100010];

int n, a, b, x, fx, fy;

map<

int,

int>mp;

intfind

(int x)

void

baba

(int x,

int y)

intmain()

for(

int i =

1; i <= n; i++

)int fx =

find

(n +1)

;int fy =

find

(n +2)

;if(fx == fy)

printf

("yes\n");

for(

int i =

1; i <= n; i++

)}

**題意:**第一行輸入m,n。接下來m行每行的第一位輸入si,後跟si個數為下標值。這si個數字的lcm(輸入的si個數字) > lcm(ai序列中剩餘的n-si個數字)。判斷是否存在這個ai序列。

**思路:**假設a是b 的子集,那麼一定存在 lcm(b)≥lcm(a)lcm(b) 。反證法,某行輸入集合di,補集為si,再取另一行集合為dj,補集為sj。假設di和dj的交集為空,那麼dj一定為si的真子集,同理,di也是sj的真子集,那麼:lcm(di)>lcm(si)>=lcm(dj)>lcm(sj)>=lcm(di)。顯然產生矛盾。結論:任意兩行的集合d都必須有交集

#include

#include

#include

#include

#include

#include

using

namespace std;

int m, n, s, x, flag;

bool vis[

10010][

10010];

intmain()

}for

(int i =

1; i <= m; i++)if

(flag ==0)

}}printf

("possible");

}

1月13日OTS公升級公告

尊敬的使用者 您好,阿里雲ots將於2014年1月13日20 00 24 00進行服務端系統熱公升級。公升級期間影響如下 1 使用者訪問 ots服務延遲有可能公升高,會有萬分之一的錯誤率,可重試。2 分鐘內錶級別不可寫操作,可重試。主要變更包括 系統優化 預留讀寫吞吐量在單錶多分片情況下的分配優化,...

2023年1月13日實習日誌

其中學到的最有用的一點應該就是多條件查詢的處理方法了。從圖中可以看出來,我們需要根據 時間,狀態,模組,站點 來查詢符合條件的資料。按我們之前的思路來考慮,查詢應該通過get方式傳遞資料。而get會顯示在url上,這樣如果單條件或是少數條件的話,是可以接受的,但是如果查詢條件太多的話,會導致url特...

日誌11月13日

12月11日就要靠2級了,做了幾套真題,代嗎如下 class student def index self name none age none gender none english none mathematics none chinese none deftotal points self p...