【雅礼联考DAY02】Revolution
#include<cstdio>
#include<queue>
using namespace std;
const int N = 210 , M = 210000 , INF = 2147483647;
int a[N + 5][N + 5] , b[N + 5][N + 5] , n , m , s , t , ans;
char str[N + 5];
int dep[N * N + 5] , cur[N * N + 5] , h[N * N + 5] , tot = 1;
struct edge{
int to , nxt , v;
}e[M + 5];
int fx[4][2] = {-1 , 0 , 0 , -1 , 1 , 0 , 0 , 1};
inline void add(int x , int y , int v)
{
e[++tot].to = y;
e[tot].nxt = h[x];
e[tot].v = v;
h[x] = tot;
}
inline void Add(int x , int y , int v) {add(x , y , v) , add(y , x , 0);}
inline int id(int x , int y) {return (x - 1) * m + y;}
inline int calc(char ch)
{
if(ch >= '0' && ch <= '9')
return ch - '0';
if(ch >= 'a' && ch <= 'z')
return ch - 'a' + 10;
if(ch >= 'A' && ch <= 'Z')
return ch - 'A' + 36;
}
inline bool pd(int x , int y)
{
if (x <= 0 || y <= 0 || x > n || y > m) return false;
return true;
}
inline int bfs(int s , int t)
{
for(register int i = s; i <= t; i++) dep[i] = 0 , cur[i] = h[i];
queue<int> Q;
dep[s] = 1;
Q.push(s);
while (!Q.empty())
{
int now = Q.front();
Q.pop();
for(register int i = h[now]; i; i = e[i].nxt)
{
int v = e[i].to;
if (e[i].v == 0 || dep[v] != 0) continue;
dep[v] = dep[now] + 1;
Q.push(v);
}
}
return dep[t];
}
inline int dfs(int x , int fa , int mi)
{
if (x == t || mi <= 0) return mi;
int flow = 0;
for(register int i = cur[x]; i; i = e[i].nxt)
{
cur[x] = i;
int v = e[i].to;
if (v == fa || dep[x] + 1 != dep[v] || e[i].v == 0) continue;
int f = dfs(v , x , min(mi , e[i].v));
if (f <= 0) continue;
mi -= f , e[i].v -= f , e[i ^ 1].v += f , flow += f;
if (mi <= 0) break;
}
return flow;
}
inline int dinic(int s , int t)
{
int res = 0;
while (bfs(s , t)) res += dfs(s , 0 , INF);
return res;
}
inline void build()
{
for(register int i = 1; i <= n; i++)
for(register int j = 1; j <= m; j++)
{
int x = id(i , j);
if ((i + j) & 1)
{
Add(3 * x , 3 * x + 1 , b[i][j]);
Add(3 * x + 1 , 3 * x + 2 , a[i][j]);
Add(3 * x + 2 , t , INF);
}
else{
Add(s , 3 * x , INF);
Add(3 * x , 3 * x + 1 , a[i][j]);
Add(3 * x + 1 , 3 * x + 2 , b[i][j]);
for(register int k = 0; k < 4; k++)
{
int xx = i + fx[k][0] , yy = j + fx[k][1];
if (!pd(xx , yy)) continue;
int y = id(xx , yy);
Add(3 * x + 1 , 3 * y , INF);
Add(3 * x + 2 , 3 * y + 1 , INF);
}
}
}
}
int main()
{
// freopen("Revolution.in" , "r" , stdin);
scanf("%d%d" , &n , &m);
t = id(n , m) * 3 + 3;
for(register int i = 1; i <= n; i++)
{
scanf("%s" , str + 1);
for(register int j = 1; j <= m; j++)
a[i][j] = calc(str[j]);
}
for(register int i = 1; i <= n; i++)
{
scanf("%s" , str + 1);
for(register int j = 1; j <= m; j++)
b[i][j] = calc(str[j]) , ans += b[i][j];
}
build();
printf("%d" , ans - dinic(s , t));
}
【雅礼联考DAY02】Revolution的更多相关文章
- 【NOIP2016提高A组模拟8.17】(雅礼联考day1)总结
考的还ok,暴力分很多,但有点意外的错误. 第一题找规律的题目,推了好久.100分 第二题dp,没想到. 第三题树状数组.比赛上打了个分段,准备拿60分,因为时间不够,没有对拍,其中有分段的20分莫名 ...
- 【NOIP2016提高A组模拟8.19】(雅礼联考day2)总结
第一题又有gcd,又有xor,本来想直接弃疗,不过后来想到了个水法: 当两个相邻的数满足条件时,那么他们的倍数也可能满足条件.然后没打,只打了个暴力. 正解就是各种结论,各种定理搞搞. 第二题,想都不 ...
- 【NOIP2016提高A组模拟8.19】(雅礼联考day2)公约数
题目 给定一个正整数,在[1,n]的范围内,求出有多少个无序数对(a,b)满足gcd(a,b)=a xor b. 分析 显然a=b是一定不满足, 我们设\(a>b\), 易得gcd(a,b)&l ...
- 【NOIP2016提高A组模拟8.19】(雅礼联考day2)树上路径
题目 给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k>=S且k<=E.(k为路径p上的边的权值和). 分析 点分治,设当前为x的,求在以x为根的子树中,经过x的路径(包括起点或 ...
- 【NOIP2016提高A组模拟8.17】(雅礼联考day1)Binary
题目 分析 首先每个数对\(2^i\)取模.也就是把每个数的第i位以后删去. 把它们放进树状数组里面. 那么当查询操作, 答案就位于区间\([2^i-x,2^{i-1}-1-x]\)中,直接查询就可以 ...
- 【NOIP2016提高A组模拟8.17】(雅礼联考day1)Value
题目 分析 易证,最优的答案一定是按\(w_i\)从小到大放. 我们考虑dp, 先将w从小到大排个序,再设\(f_{i,j}\)表示当前做到第i个物品,已选择了j个物品的最大值.转移就是\[f_{i, ...
- 【NOIP2016提高A组模拟8.17】(雅礼联考day1)Matrix
题目 分析 假设,我们从\(F_{i,2}\)出发,那么对\(F_{n,n}\)的贡献就是\(某个系数乘以a^{n-i}b^{n-1}r_i\): 同理,如果从\(F_{2,i}\)出发,那么对\(F ...
- [JZOJ4759] 【雅礼联考GDOI2017模拟9.4】石子游戏
题目 描述 题目大意 在一棵树上,每个节点都有些石子. 每次将mmm颗石子往上移,移到根节点就不能移了. 双方轮流操作,问先手声还是后手胜. 有三种操作: 1. 询问以某个节点为根的答案. 2. 改变 ...
- 雅礼集训1-9day爆零记
雅礼集训1-9day爆零记 先膜一下虐爆我的JEFF巨佬 Day0 我也不知道我要去干嘛,就不想搞文化科 (文化太辣鸡了.jpg) 听李总说可以去看(羡慕)各路大佬谈笑风声,我就报一个名吧,没想到还真 ...
- NOIp2018集训test-10-6/test-10-7 (联考五day1/day2)
昨天考完月考,明天初赛,dcoi2017级今天终于开始停课准备noip了,大概没有比本弱校停课更晚的学校了吧.本来就够菜了,怕是要凉透哦. DAY1 T1石头剪刀布 据说爆搜随便做,但是我觉得我的O( ...
随机推荐
- Linux禁止摄像头自动曝光(手动调节曝光)
前言 很多摄像头具有自动曝光的功能,例如在较暗的调节下,提高曝光率,在较亮的调节下降低曝光.下面简单介绍在linux平台俩种方式来修改自动曝光. 软件调节(图形化界面) 安装qv4l2 sudo ap ...
- 关于windows上pip安装报错
前言 因为我一直用linux,所以windows上的很多问题我都不怎么记录了,但是昨天去网吧,打算玩玩,遇到了安装第三方库报错,所以我有必要水一篇文章 为什么报错 其实python的第三方库很多不仅仅 ...
- Flink SQL管理平台flink-streaming-platform-web安装搭建
文章都在个人博客网站:https://www.ikeguang.com/ 同步,欢迎访问. 最近看到有人在用flink sql的页面管理平台,大致看了下,尝试安装使用,比原生的flink sql界面确 ...
- 【每日一题】【队列的实现类】【每层元素个数】2022年1月11日-NC15 求二叉树的层序遍历
描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7}, 注意:每一层上元素的个数 解答: import java.util ...
- mouseMove模拟拖拽,封装指令
最近项目里常常使用拖拽改变元素位置或者大小的需求,cv法文件找的脑阔疼,索性试试写一个指令. 说起指令,提一嘴,vue3没有了根元素唯一的限制后,仿佛指令绑定在组件上就不能生效了. import ty ...
- 一个简单的工具开发:从学生端更新程序部署工具说起,浅谈qt中自定义控件制作和调用、TCP协议下文件的收发 、以及可执行文件的打包
一个简单的工具开发:从学生端更新程序部署工具说起,浅谈qt中ui的使用和TCP协议下文件的收发.以及可执行文件的打包 写在前面,Qt Designer是一个非常操蛋的页面编辑器,它非常的...怎么说呢 ...
- pymysql.err.ProgrammingError: (1146, "Table 'autoplatform.webcasestepinfo' doesn't exist"
在使用jmeter调试接口时,提示pymysql.err.ProgrammingError: (1146, "Table 'autoplatform.webcasestepinfo' doe ...
- .NET周报【1月第1期 2023-01-06】
国内文章 [开源]基于.net6+gtksharp实现的Linux下的图形界面串口调试工具 https://www.cnblogs.com/flykai/p/17007554.html 由于公司的上位 ...
- 数据分析中的SQL如何解决业务问题
本文来自知乎问答. 提问:数据分析人员需要掌握sql到什么程度? 请问做一名数据分析人员,在sql方面需要掌握到什么程度呢?会增删改查就可以了吗?还是说关于开发的内容也要会?不同阶段会有不同的要求吗? ...
- 《深度探索C++对象模型》第三章 Data语意学
首先给出以下例子: class X{}; class Y:public virtual X{}; class Z:public virtual X{}; class A:public Y,public ...