当前位置:网站首页>2022杭电多校第一场(K/L/B/C)
2022杭电多校第一场(K/L/B/C)
2022-08-02 22:15:00 【蛀牙牙乐】
K. Random
可以粗略的看作每个数的概率都是1/2
这种取模方法需要注意 : ll te = (mod + 1) / 2; 1ll * (n - m) * te % mod;
int t;
cin >> t;
ll te = (mod + 1) / 2;
while(t--){
ll n, m;
cin >> n >> m;
cout << 1ll * (n - m) * te % mod << endl;
}
或者更好理解的:
ll qpow(ll a, ll b) {
int ans = 1;
a = (a % p + p) % p;
for (; b; b >>= 1) {
if (b & 1) ans = (a * ans) % p;
a = (a * a) % p;
}
return ans;
}
int main() {
ll mm = qpow(2, p - 2);
int t;
cin >> t;
while(t--){
ll n, m;
cin >> n >> m;
cout << (n - m) * mm % p << endl;
}
return 0;
}
L. Alice and Bob
博弈论
总结:
- 从更明显,更好入手的地方考虑;例如:Alice只需要有0就可以赢,问题就转化成了:如何将数转化成含0的
- 转化必胜态,由基础必胜到更大范围
- (也许能从很怪的地方入手,例如:0 2-Alice赢)
来自知乎 - 每日一棵splay - https://zhuanlan.zhihu.com/p/543760351
关键在于构造出0
int t;
cin >> t;
while (t--){
int n;
cin >> n;
for (int i = 0; i <= n; ++i){
cin >> a[i];
}
for (int i = n; i > 0; i--){
a[i - 1] += a[i] / 2;
}
if (a[0])
cout << "Alice" << endl;
else
cout << "Bob" << endl;
}
B. Dragon slayer
dij写到一半发现不对…总结:
- 不限定方向随便走:只用限定上下左右四个方向就行
- 感觉31以内都可以二进制枚举
二进制枚举选择删去哪些墙
int n, m, k;
int xs, ys, xt, yt;
int dx[] = {
0, 0, 1, -1};
int dy[] = {
1, -1, 0, 0};
bool g[35][35];
bool vis[35][35];
struct node
{
int x1, y1, x2, y2;
}wall[35];
int lowbit(int x){
return x & (-x);
}
void add(int k){
if(wall[k].x1 > wall[k].x2)
swap(wall[k].x1, wall[k].x2);
if(wall[k].y1 > wall[k].y2)
swap(wall[k].y1, wall[k].y2);
for (int i = wall[k].x1; i <= wall[k].x2; ++i){
for (int j = wall[k].y1; j <= wall[k].y2; ++j){
g[i][j] = true;
}
}
}
void del(int k){
if(wall[k].x1 > wall[k].x2)
swap(wall[k].x1, wall[k].x2);
if(wall[k].y1 > wall[k].y2)
swap(wall[k].y1, wall[k].y2);
for (int i = wall[k].x1; i <= wall[k].x2; ++i){
for (int j = wall[k].y1; j <= wall[k].y2; ++j){
g[i][j] = false;
}
}
}
bool bfs(){
queue<PII> q;
q.push({
xs, ys});
re(vis);
vis[xs][ys] = true;
while(!q.empty()){
int x = q.front().first, y = q.front().second;
q.pop();
if(x == xt && y == yt)
return true;
for (int i = 0; i < 4; ++i){
int xx = x + dx[i], yy = y + dy[i];
if(xx >= 0 && xx < n && yy >= 0 && yy < m && !vis[xx][yy] && !g[xx][yy]){
q.push({
xx, yy});
vis[xx][yy] = true;
}
}
}
return false;
}
int main()
{
int t;
cin >> t;
while (t--){
cin >> n >> m >> k;
n *= 2, m *= 2;
cin >> xs >> ys >> xt >> yt;
xs = xs * 2 + 1, ys = ys * 2 + 1, xt = xt * 2 + 1, yt = yt * 2 + 1;
for (int i = 0; i <= n; ++i){
for (int j = 0; j <= m; ++j){
g[i][j] = false;
}
}
for (int i = 0; i < k; ++i){
int x1, x2, y1, y2;
cin >> x1 >> y1 >> x2 >> y2;
wall[i] = {
x1 * 2, y1 * 2, x2 * 2, y2 * 2};
}
int ans = 0;
for (int i = 0; i < (1 << k); ++i){
int cnt = 0;
for (int j = i; j; j -= lowbit(j))
++cnt;
if(cnt <= ans)
continue;
for (int j = 0; j < k; ++j){
if(i >> j & 1)
add(j);
}
if(bfs())
ans = cnt;
for (int j = 0; j < k; ++j){
if(i >> j & 1)
del(j);
}
}
cout << k - ans << endl;
}
return 0;
}
C. Backpack
总结:
(点击跳转至原链接)
bitset<1030>f[2][1030];//f[i][j]前i个物品得到异或值位j的所有的体积状态 不要开太大了,会超时
int main() {
IOS;
int t;
scanf("%d", &t);
while(t--){
int n, m;
scanf("%d %d", &n, &m);
for (int i = 0; i < 1024; ++i)
f[0][i].reset();
f[0][0].set(0);
for (int i = 1; i <= n; ++i){
int v, w;
scanf("%d %d", &v, &w);
for (int j = 0; j < 1024; ++j){
f[i & 1][j] = f[(i & 1) ^ 1][j] | (f[(i & 1) ^ 1][j ^ w] << v);//左移v == 减v
//相当于滚动数组
/* bitset<N> f[N],g[N]; f[0][0] = 1; for(int j=0;j<=1023;j++) g[j]=f[j];赋值上一维 for(int j=1023;j>=0;j--) { f[j]|=g[j^w]<<v; } cout << f[i][m] */
}
}
bool flag = true;
for (int i = 1023; i >= 0; --i){
if(f[n & 1][i][m]) {
printf("%d\n", i);
flag = false;
break;
}
}
if(flag)
printf("-1\n");
}
return 0;
}
边栏推荐
猜你喜欢
resubmit 渐进式防重复提交框架简介
Matplotlib drawing core principles explain (more detailed)
How many ways do you know the singleton pattern?
Learn more TypeScript 】 【 TypeScript modular
AcWing 2983. 玩具
测试人生 | 阿里实习 90 天:从实习生的视角谈谈个人成长
Software testing pen questions 1 (with answers)
No-code development platform form styling steps introductory course
总数据量超万亿行,玉溪卷烟厂通过正确选择时序数据库轻松应对
CWE4.8:2022年危害最大的25种软件安全问题
随机推荐
Jmeter secondary development to realize rsa encryption
mysql查询表中重复记录
wallys/new product/WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz MT7915 MT7975
ssm整合(三)Controller 和 视图层编写
Sentinel vs Hystrix 限流对比,到底怎么选?
一群搞社区的人
GameStop NFT 市场分析
成功解决TypeError: can‘t multiply sequence by non-int of type ‘float‘
The only way to go from a monthly salary of 10k to 30k: automated testing
H.265视频流媒体播放器EasyPlayer.js集成时出现“SourceBuffer ”报错,该如何解决?
虚拟内存 virualmemory
执子手,到永恒
用大白话解释“什么是ERP?” 看完这篇就全明白了
【UE5 骨骼动画】全形体IK导致Two Bone IK只能斜着移动,不能平移
用于中文文本分类的中文停用词
在软件测试行业近20年的我,再来和大家谈谈今日的软件测试
测试人生 | 阿里实习 90 天:从实习生的视角谈谈个人成长
The CTF command execution subject their thinking
牛客每日刷题之链表
MYSQL查看表结构