洛谷 9月月賽

2021-08-08 11:20:23 字數 2595 閱讀 6877

題目描述

眾所周知,在一些特殊的部門,如果密碼能夠讓乙個人就解開,就會非常不安全。

pic(pre-invoked code,預生成密碼)誕生了。這個密碼比較安全,是因為它必須由三個人保管。系統首先預先生成三個大整數a、b、c,計算出它們的與and/或or/和sum並儲存,然後將a、b、c分別告訴這三個人。需要使用密碼解鎖的時候,三個人必須依次輸入這三個大整數才能成功。

那麼為什麼要計算這個與/或/和呢?這是pic的「自救」功能:如果知道密碼的三個人之中有人因為一些特殊的原因無法輸入密碼了,那麼可以通過查閱該pic的與/或/和的數值(這三個數值被其他的方式保護著,可以認為相當安全),並且根據手上的密碼和這三個數值重新計算出剩下那個人的密碼。

你是一位安全經理。你毫不費力的拿到乙個pic的與/或/和資訊。你現在希望通過這個資訊復原出原始**。你當然清楚,滿足這樣限制的a、b、c是不唯一的,因此你希望最小(a盡可能小,a相同則b盡可能小,b相同則c盡可能小)的那一組開始嘗試。

輸入輸出格式

輸入格式:

輸入包含多組資料,以eof結尾。

對於每一組資料,輸入僅包含一行:and,or,sum。

輸出格式:

對於每一組資料輸出一行:a、b、c,即為最小的那一組可能密碼。

輸入輸出樣例

輸入樣例#1:

16 31 72

8 30 52

輸出樣例#1:

16 25 31

8 14 30

說明 記n為max(a,b,c),t為單點資料組數。

對於10%的資料,n≤50;

對於30%的資料,n≤1000;

對於另外10%的資料,保證a=0;

對於另外10%的資料,保證a=b=c;

對於100%的資料,n≤10^18,t≤10。

//想秒但又不敢秒的一道題

#include

#include

#include

using

namespace

std;

#define ll long long

ll a,b,c;

int main()

return

0;}

題目描述

小林是個程式媛,不可避免地康娜對這種人類的「魔法」產生了濃厚的興趣,於是小林開始教她oi。

今天康娜學習了一種叫做線段樹的神奇魔法,這種魔法可以維護一段區間的資訊,是非常厲害的東西。康娜試著寫了一棵維護區間和的線段樹。由於她不會打標記,因此所有的區間加操作她都是暴力修改的。具體的**如下:

struct segment_tree

inline void build(int o,int l,int r)

int mid=(l+r)>>1;

build(lson,l,mid);build(rson,mid+1,r);

pushup(o);

}inline void change(int o,int l,int r,int q,int v)

int mid=(l+r)>>1;

if(q<=mid)change(lson,l,mid,q,v);

else change(rson,mid+1,r,q,v);

pushup(o);

}貼上問題概不負責

首先,考慮每一次增加的x可以為期望增加多少

設一條路路徑和為sum

該葉節點的期望為sum/2^(dep-1)

但每個葉子的dep不一定相同

所以可以給sum乘以2^(maxdep-dep),然後就可以統一除以2^(maxdep-1)

先o(n)把葉節點的sum和求出來

修改的話維護每乙個數的貢獻,用字首和陣列

修改時ans+=(s[r]-s[l-1])*x,cout<

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

#define maxn 1000005

int dep[maxn],max_dep,n,m;

ll ans,qwq,y,s[maxn],tre[maxn*4];

inline

void read(ll &x)

while(c>='0'&&c<='9') x*=f;

}void build(int u,int l,int r,int deepth)

int mid=l+r>>1;

build(u<<1,l,mid,deepth+1);

build(u<<1|1,mid+1,r,deepth+1);

tre[u]=tre[u<<1]+tre[u<<1|1];

}ll query(int u,int l,int r,int deepth,ll sum)

int main()

return

0;}

本來打比賽的時候只做了第一題,見天回來看,t3是noi+/ctsc難度,啊!還是算了吧。

洛谷5月月賽

n堆石子,每次可以從第i堆中取走乙個當且僅當ni ni 1 第0堆視作0個 拿不了就輸了。問先手贏還是後手贏。奇偶性問題。不管如何分布,必定全部被拿完。include inline char gc return s inline int read while c 0 c 9 return x f i...

LGR 051 洛谷9月月賽

luogu 給出 k 和質數 m 求最小的 n 使得 111.1 n 個 1 equiv k mod m m le10 0 le k m 把 n 個 1 寫成等比數列求和的形式,不難推出這個式子 10 n equiv9k 1 mod m 所以直接上 bsgs 就行了。應該是不存在無解的情況的,畢竟無...

洛谷10月月賽II

這道題考了矩陣旋轉 其實很考驗推公式的能力和 能力 這裡有個小技巧 可以設 x,y 為原點,然後去推公式,然後實際操作中橫座標加上x,縱座標加上y就好了。順時針 i,j j,i 逆時針 i,j j,i include define rep i,a,b for register int i a i b...