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

辽宁建设厅网站官方app下载

辽宁建设厅网站,官方app下载,建设科技期刊官网,wordpress展开 折叠功能link. 突然很想写这篇题解。虽然题目不算难。 考场只有30分是为什么呢?看来是我没有完全理解这道题目吧! 首先很明显的转换是,把 T 型覆盖看成十字形,再考虑最后减去某一块的贡献。 然后然后直接往原图上面放十字形!对于每一个…

link.

突然很想写这篇题解。虽然题目不算难。

考场只有30分是为什么呢?看来是我没有完全理解这道题目吧!

首先很明显的转换是,把 T 型覆盖看成十字形,再考虑最后减去某一块的贡献。

然后然后直接往原图上面放十字形!对于每一个十字的中心来说,实际上它只需要三个相邻的方块就可以了。而我们发现两个十字重合的部分不会超过两个方块,也就是说把这两个方块任意分配给两个人,就能保证这两个每个人都只会舍弃一个方块。

因为每次两个十字的重合最多只能让每个点丢弃一个方块,并且每次重合至少有一个十字会丢弃掉一个方块,所以惊天的结论是我们可以直接计算整个十字连通块的中心点和非中心点的个数。如果非中心点的个数大于等于中心点的个数的三倍,那么当前连通块一定合法,否则不能保证每个十字的中心点都能分配到刚好三个非中心点,即无解。

但是可能有非中心点的个数大于中心点的个数的三倍。这种情况说明所有的十字都只重合了一个点,那么必须要丢掉一个非中心点。因为要权值最大所以丢掉最小权值的就好了。

其实这个的实现方式有很多,但是我使用了并查集。为什么呢?因为其他题解就是用的并查集啊!

然后并查集需要注意的点就是不能选择中心点啊。中心点的权值设为最大值好不好。

#include<bits/stdc++.h>
using namespace std;int n,m,k;
int a[1000005];
int ID(int x,int y){return (x-1)*m+y;
}
int pre[1000005],dp[1000005];
int sz[1000005][2];
long long sum[1000005];bool vis[1000005];struct zz{int x,y;
}t[1000005];int Find(int x){if(pre[x]!=x) pre[x]=Find(pre[x]);return pre[x];
}
void Join(int x,int y){int fx=Find(x),fy=Find(y);if(fx==fy) return ;pre[fy]=fx,sum[fx]+=sum[fy],dp[fx]=min(dp[fx],dp[fy]),sz[fx][0]+=sz[fy][0],sz[fx][1]+=sz[fy][1];
}int fx[5]={0,1,-1,0,0};
int fy[5]={0,0,0,1,-1};int main(){
//	freopen("t-covering.in","r",stdin);
//	freopen("t-covering.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[ID(i,j)]);cin>>k;for(int i=1,x,y;i<=k;i++) scanf("%d%d",&x,&y),t[i]=(zz){x+1,y+1};for(int i=1;i<=k;i++) vis[ID(t[i].x,t[i].y)]=1;for(int i=1;i<=n*m;i++){pre[i]=i,sum[i]=a[i],dp[i]=a[i],sz[i][vis[i]]=1;if(vis[i]) dp[i]=0x3f3f3f3f; }for(int i=1;i<=k;i++) for(int j=1;j<=4;j++){int x=t[i].x,y=t[i].y;int dx=x+fx[j],dy=y+fy[j];if(dx<=0||dx>n||dy<=0||dy>m) continue;Join(ID(x,y),ID(dx,dy)); }long long ans=0;memset(vis,0,sizeof vis);for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){int x=(ID(i,j));int fx=Find(x);if(vis[fx]) continue; vis[fx]=1;if(sz[fx][0]<sz[fx][1]*3) return printf("No\n"),0;else if(sz[fx][0]==sz[fx][1]*3) ans+=sum[fx];else ans+=sum[fx]-dp[fx];}cout<<ans<<endl;return 0;
}
http://www.yayakq.cn/news/759142/

相关文章:

  • 学校网站建设命名个人主页中不会展示下列哪项内容
  • 防腐木用什么名字做网站厦门企业app开发
  • 中国建设银行网站首页joy网站备案 备注关联性
  • 丹阳高铁站对面的规划互联网公司大厂排名
  • 建设网上银行官方网站空间里怎么放多个网站
  • 百度手机模板网站福田建设网站
  • 做网站是要云空间吗奉节县关键词seo排名优化
  • 做外贸站推广电商店铺首页设计
  • 铁哥们网站建设哪些网站可以做视频搬运
  • 变白网站制作源码wordpress图像验证码
  • 繁昌网站建设内容营销模式
  • 网站是什么样的建设网站需要给钱吗
  • 成都快速建站模板网站建设定制网站建设公司哪家好
  • 成都电子商务网站什么叫个人网站软件
  • 58同城合肥网站建设北京软件开发培训
  • 电子商务网站开发教程课后答案制作一个简单网站
  • 网站背景房地产网络推广方案
  • 网站建设资讯版块如何做用户运营最吉利旺财的建筑公司名字
  • 中山营销网站建设移动端h5是什么意思
  • php网站开发指导教材 文献注册一个公司需要什么条件
  • 做软件的公司网站有哪些乐都企业网站建设多少钱
  • 江西 网站制作如何选择合肥网站建设
  • 网站开发框架有哪些企业seo推广外包
  • 网站的定位与功能淘宝网免费素材图库
  • 网站的服务与建设岗位职责wordpress用户角色管理系统
  • 常德网站公司城市人家装饰公司怎么样
  • 网站备案后更换主机贵阳网站建设多钱钱
  • 大理公司网站建设做网站英文
  • 网站建设需要会什么软件有哪些内容百度快照 直接进入网站
  • 新网站多久收录内页摄影大赛官网