当前位置: 首页 > news >正文

广西建设科技协会网站手工做环保衣的网站

广西建设科技协会网站,手工做环保衣的网站,企业建设营销网站的基本步骤有哪些,深圳福田地址随便来一个[CCO 2019] Sirtetdescriptionsolutioncodedescription 题目链接 solution 很巧妙地将差分约束隐藏起来 问题的关键在于求出每一个sand停止运动的时间#xff0c;这样很容易填涂出最后的答案#xff08;向下平移即可#xff09; 不妨设 ti,jt_{i,j}ti,j​ 表示 (i,j)(i… [CCO 2019] Sirtetdescriptionsolutioncodedescription 题目链接 solution 很巧妙地将差分约束隐藏起来 问题的关键在于求出每一个sand停止运动的时间这样很容易填涂出最后的答案向下平移即可 不妨设 ti,jt_{i,j}ti,j​ 表示 (i,j)(i,j)(i,j) 位置上的 sand\text{sand}sand 停止运动的时间 如果 (i1,j1)(i_1,j_1)(i1​,j1​) 和 (i2,j2)(i_2,j_2)(i2​,j2​) 的 sand\text{sand}sand 是连在一起的则 ti1,j1ti2,j2t_{i_1,j_1}t_{i_2,j_2}ti1​,j1​​ti2​,j2​​ 转化成差分约束的形式即 ti1,j1−ti2,j2≤0,ti2,j2−ti1,j1≤0t_{i_1,j_1}-t_{i_2,j_2}\le 0,t_{i_2,j_2}-t_{i_1,j_1}\le 0ti1​,j1​​−ti2​,j2​​≤0,ti2​,j2​​−ti1​,j1​​≤0 显然这是具有传递性的【在代码实现中我选择了同一连通块缩点的方法利用并查集】 如果 (i1,j1)(i_1,j_1)(i1​,j1​) 和 (i2,j2)(i_2,j_2)(i2​,j2​) 的 sand\text{sand}sand 不是连在一起的显然只有 j1j2j_1j_2j1​j2​ 【同一列】的 sand\text{sand}sand 会相互影响 假设 i1i2i_1i_2i1​i2​ 显然最多经过 i2−i1−1i_2-i_1-1i2​−i1​−1 的时间后就一定会碰上【可能i1i_1i1​所属的连通块的某个 sand\text{sand}sand 会与其余连通块先撞上】即 ti1,j1−ti2,j2≤i2−i1−1t_{i_1,j_1}-t_{i_2,j_2}\le i_2-i_1-1ti1​,j1​​−ti2​,j2​​≤i2​−i1​−1 注意同一列只需要相邻的两个不同连通块的 sand\text{sand}sand 进行连边【具有传递性】且最下面的 sand\text{sand}sand 与空【定义为000】的距离为 n−in-in−i 最后求不同连通块之间的最短路即可 code #include queue #include cstdio #include vector using namespace std; #define maxn 1000005 #define Pair pair int, int priority_queue Pair, vector Pair , greater Pair q; vector Pair G[maxn]; int n, m; char **ch, **ans; int *lst; int dis[maxn], f[maxn]; bool vis[maxn];int find( int x ) { return f[x] x ? x : f[x] find( f[x] ); }void merge( int u, int v ) {u find( u ), v find( v );if( u v ) return;else f[v] u; }void addedge( int u, int v, int w ) { u find( u ), v find( v );G[u].push_back( { v, w } ); }int id( int x, int y ) { return ( x - 1 ) * m y; }int main() {scanf( %d %d, n, m );ch new char * [n 5];lst new int [m 5];for( int i 1;i n;i ) {ch[i] new char[m 5];scanf( %s, ch[i] 1 );}for( int i 1;i n * m;i ) f[i] i;for( int i 1;i n;i ) {for( int j 1;j m;j ) {lst[j] 0; if( ch[i][j] # ) {if( i 1 and ch[i - 1][j] # ) merge( id( i, j ), id( i - 1, j ) );if( i n and ch[i 1][j] # )merge( id( i, j ), id( i 1, j ) );if( j 1 and ch[i][j - 1] # )merge( id( i, j ), id( i, j - 1 ) );if( j m and ch[i][j 1] # )merge( id( i, j ), id( i, j 1 ) );}}}for( int i 1;i n;i )for( int j 1;j m;j )if( ch[i][j] # ) {if( lst[j] ) addedge( id( i, j ), id( lst[j], j ), i - lst[j] - 1 );lst[j] i;}for( int i 1;i m;i ) if( lst[i] ) addedge( 0, id( lst[i], i ), n - lst[i] );for( int i 1;i n * m;i ) dis[i] 0x3f3f3f3f;q.push( { 0, 0 } );while( ! q.empty() ) {int u q.top().second; q.pop();if( vis[u] ) continue;vis[u] 1;for( int i 0;i G[u].size();i ) {int v G[u][i].first, w G[u][i].second;if( dis[v] dis[u] w ) {dis[v] dis[u] w;q.push( { dis[v], v } );}}}ans new char * [n 5];for( int i 1;i n;i ) {ans[i] new char [m 5];for( int j 1;j m;j ) ans[i][j] .;}for( int i 1;i n;i )for( int j 1;j m;j )if( ch[i][j] # ) ans[i dis[find( id( i, j ) )]][j] #;for( int i 1;i n;i ) {for( int j 1;j m;j )printf( %c, ans[i][j] );printf( \n );}return 0; }
http://www.zqtcl.cn/news/888161/

相关文章:

  • 怎么免费做网站教程开发专业网站
  • 鹿邑网站设计公司什么网站可以免费做找客户
  • wordpress模板站如何安装wordpress 查询语句
  • 给窗帘做网站淄博周村学校网站建设公司
  • 关于志愿者网站开发的论文做什么网站开发好
  • 做电影网站如何规避版权做新年公告图片的网站
  • 网站修改后怎么上传济南网络员
  • 家居seo整站优化方案怎样开平台软件
  • 深圳网站关键词网站做视频转流量
  • 做网站如何配置自己的电脑精准防恶意点击软件
  • 单页网站 挣钱深圳高水平网站制作
  • 网站建设哪几家好一些打开浏览器历史记录
  • 公司里面有人员增减要去哪个网站做登记网页开发报价单
  • 网站设计的公司运营接单百度搜索引擎首页
  • 最专业的做网站公司有哪些成都龙泉建设有限公司网站
  • 云南省玉溪市建设局官方网站wordpress 迁移 空白
  • 网站空间和数据库多个织梦dedecms网站怎么做站群
  • 网站模块插件是怎么做的个人建设网站流程图
  • 作品展示的网站建设网站方案
  • 整站优化哪家专业网站漏洞解决办法
  • 怎么给自己的网站做扫描码南宁seo排名外包
  • 网站的服务器在哪里怎么建设网站啊
  • 山东做网站三五网站备案怎样提交到管局
  • 自己如何做网站教程中山企业网站推广公司
  • 网站每年费用本地同城服务平台
  • 暗网网站有那些青岛网站设计公司推荐
  • 营业执照咋做网等网站遂宁网站建设公司哪家好
  • 湖南平台网站建设找哪家重庆网站建设营销
  • wordpress搭建企业网站小型网络架构
  • 淘宝联盟链接的网站怎么做培训网站排名