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剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘....