Full of Boys訓練3總結

2022-08-01 17:42:12 字數 2783 閱讀 5375

e.enclosure

g.maximum islands

貪心方法:把原本的l四個方向的c改成w,然後剩餘的c,可以運用最小割的思想,用有效點數減最小割,就是最大的答案。思想來自騎士共存。二分圖用的匈牙利演算法。

#include #define rg register

#define pb(x) push_back(x)

typedef long long ll;

inline int read()

while(c>='0'&&c<='9')

return x*f;

}inline write(int x)

using namespace std;

int n, m, col[45][45], dx = , dy = , vis[44][44];

char s[45][45];

vectorv[2];

struct node node(int a,int b)

};inline int inb(int x, int y)

inline void bfs1(int sx, int sy) }}

}struct edgee[55*55*4];

int h[55*55], cc;

inline void add(int u, int v)

inline void build()

}}inline int bfs2(int sx, int sy, char c)

}return ans;

}int used[55*55], lk[55*55];

inline int dfs(int u)

}return 0;

}inline int hungray()

return ans;

}inline int solve()

int main()

}for(rg int i = 1; i <= n; ++i)

for(rg int j = 1; j <= m; ++j) if(s[i][j] == 'c'&&col[i][j] == -1)

build();

write(solve());

return 0;

}

j.shopping

每次找到區間內最左邊的小於x的數,然後%一下它,重複以上操作就行了。所以只需要實現乙個區間詢問最左邊的小於x的值就可以了。可以證明每次操作最多log次

解法1:分塊。塊外暴力,塊內提前排好序二分。寫挫了莫名t。

解法2:線段樹。維護一下區間最小值,顯然如果左邊的最小值小於等於x那就朝左邊遞迴,否則右邊,便可以完成這個操作。

解法3:st表。又不用修改。st表乾掉乙個log

code:

解法1:挫了不貼了。

解法2:

#include #include #define pb(x) push_back(x)

#define rg register

const int maxn = 2e5 + 100;

typedef unsigned long long ll;

inline int readint()

while(c>='0'&&c<='9')

return x*f;

}inline ll readll()

while(c>='0'&&c<='9')

return x*f;

}inline void write(ll x)

using namespace std;

int n, q;

ll a[maxn];

struct seg tr[maxn << 2];

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

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

build(p<<1, l, mid);

build(p<<1|1, mid+1, r);

tr[p].x = min(tr[p<<1].x, tr[p<<1|1].x);

}inline ll ask_mn(int p, int l, int r)

inline ll fd(ll x, int l, int r)

inline ll solve(ll x, int l, int r)

int main()

return 0;

}

解法3:

#include #include #include #define pb(x) push_back(x)

#define rg register

const int maxn = 2e5 + 100;

typedef unsigned long long ll;

inline int readint()

while(c>='0'&&c<='9')

return x*f;

}inline ll readll()

while(c>='0'&&c<='9')

return x*f;

}inline void write(ll x)

using namespace std;

int n, q;

ll a[maxn], st[maxn][25];

inline void rmq_init()

inline ll solve(ll x, int l, int r)

int main()

return 0;

}

Full of Boys訓練6總結

f.color 第一道二項式反演。膜題解 includetypedef long long ll const ll mod 1e9 7 using namespace std ll q pow ll a,ll b return ans ll n,m,k,inv 1000007 ll c ll n,l...

暑假訓練總結 SSL暑假訓練總結

第一周過的還算好吧,覺得飯堂伙食也挺好的,同學也挺好。學習的東西感覺比小學難好多,有種覺得以前學的東西太簡單了的感覺,但多虧了小學的時候基礎打得還算紮實,學得還行,但總是感覺自己就是個菜雞,就是乙個蒟蒻,哎,室友真的太強了。第一周總結 第二週自我感覺挺不錯的,總算追上了部分室友,成績也開始 這一切都...

遞推訓練3

題目 於杭電oj problem description 國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘....