牛客NOIP暑期七天營 提高組3

2022-04-30 12:39:09 字數 2872 閱讀 1307

-----------今天是被打爆的一天,t3就是用正解做的,但是好像zz了,只得了30分。-----------------

----------------   t1由於沒判不合法的情況,也只有15分---------------------

---------------------果然是乙個拿不到noip一等獎的人----------------------------

----------------------------畢竟noip都準備改名了?-------------------------

a:破碎的矩陣。

題意:給出n,m,表示有n*m的矩陣,然後給定每一行的異或和,每一列的異或和,求方案數。

思路:如果合法,方案數是pow(2,(n-1)*(m-1)),這個很好想,因為你確定了乙個n*m的左上方(n-1)*(m-1)的矩陣後,最後一行一列可以反推,是唯一的。 不合法的情況是,異或和不為0;

#include#define ll long long

#define rep(i,a,b) for(int i=a;i<=b;i++)

using

namespace

std;

const

int maxn=2000010

;int

ans,n,m,mod; ll x,a[maxn],b[maxn];

int qpow(int

base,int

num)

return

res;

}void solve(int

t)int

main()

}return0;

}

view code

b:點與面。

題意:求w的個數。

思路:裸題,三次bit即可。

#include#define ll long long

#define rep(i,a,b) for(int i=a;i<=b;i++)

using

namespace

std;

const

int maxn=500010

;const

int mod=998244353

;int

a[maxn],b[maxn],tot;

ll l[maxn],r[maxn],ans,sum[maxn],res[maxn];

ll query(

int x) return

res;}

void add(int x,ll y) }

intmain()

view code

c:資訊傳遞

li個人,和右邊的ri個人

注意:由於他們是乙個環形,第1個人的左邊乙個人是第n個人,第n個人的右邊乙個人是第1個人。

venn為了防止自己掉分的**被大家知道,他想知道對於每乙個人,如果訊息從他這裡傳播,需要多久整個班級就會知道。

思路:一眼就可以想到做法,由於ans會比較大,所以倍增。 dp[i][j]表示從i出發,經過1但是我只得了30分。 是因為有個wa點。 就是可能訊息不是單方向傳遞的,所以左右轉移要同時進行。 比如1先向右傳遞到2號學生,2號學生的li非常的小,那麼訊息就傳到很左邊了。

#include#define pii pair#define f first

#define s second

#define rep(i,a,b) for(int i=a;i<=b;i++)

using

namespace

std;

const

int maxn=300010

;const

int inf=1e9;

int l[maxn],r[maxn],a[maxn][18],b[maxn][18],mn[maxn<<2][18],mx[maxn<<2][18

];void build(int now,int l,int r,int

p)

int mid=(l+r)>>1

; build(now

<<1

,l,mid,p);

build(now

<<1|1,mid+1

,r,p);

mx[now][p]=max(mx[now<<1][p],mx[now<<1|1

][p]);

mn[now][p]=min(mn[now<<1][p],mn[now<<1|1

][p]);

}pii query(

int now,int l,int r,int l,int r,intp);

int mid=(l+r)>>1

; pii res,tmp;

res.f=-inf,res.s=inf;

if(l<=mid)

if(r>mid)

return

res;

}int

main()

rep(i,

1,m) a[i][0]=max(1,i-l[i]);

rep(i,

1,m) b[i][0]=min(m,i+r[i]);

build(

1,1,m,0

); rep(j,

1,17

) build(

1,1,m,j);

}rep(i,

1,n)

printf(

"%d

",res+1

); }

return0;

}

牛客NOIP暑期七天營 提高組2

trie樹上的節點多記乙個rest值表示還有多少個串沒被用。列舉所有串,每次先在trie上跑匹配串,看一看那個點的rest。如果沒法匹配的話就往trie裡插入原串,把結束節點的rest 1 思路和trie類似。其實就是把trie換成hash。把在樹上跑換成去hash值 將每個序列的個數存下,每次讀入...

暑期七天魔鬼訓練營

第一天 1 luogu 2871 poj3624 charm bracelet 手鍊 01揹包 狀態壓縮 2 poj 1384 piggy bank 完全揹包 3 poj 2387 the cows come home 最短路徑模板 4 poj 3255 次短路 5 poj 3723 conscri...

牛客網NOIP賽前集訓營 提高組(第七場) 小結

終於 牛客的noip賽前集訓營有我會做的題目啦!之前考的 題天天爆零 真的不是省選集訓營?真 純模擬,毫無坑點 以至於我一開始以為題目看錯了,看了好幾遍 include using namespace std int n,m,k,km,a 205 205 x,y,t,egy 0 205 205 si...