NOI2010 海拔

2024-03-02 21:38
文章标签 海拔 noi2010

本文主要是介绍NOI2010 海拔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

正解是平面图转对偶图 然后跑最短路


先是题目的读入 没有说明白 导致wa


后来用最大流最小割TLE后两个点

转SPFA跑最短路 依然TLE后两个点

SPFA加上优先队列优化 才A掉


貌似更多人写heap优化的dijkstra....



注意最短路建图 由于每条边是双向的 所以一一对应到最短路的边权里去

自己画下图就能发现怎么对应



80分的最大流:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;int id[600][600],cnt;
const int MAXN=2*2*2*600*(500+1)+100;
int tot=1,g[MAXN],nnext[MAXN],flow[MAXN],num[MAXN];
void add(int x,int y,int z)
{tot++;nnext[tot]=g[x];g[x]=tot;num[tot]=y;flow[tot]=z;
}
void ADD(int x,int y,int z)
{add(x,y,z);add(y,x,0);
}int d[MAXN],team[MAXN],head,tail;
int s,t;
bool bfs()
{memset(d,0,sizeof(d));head=tail=0;team[++tail]=s;d[s]=1;while(head<tail){int x=team[++head];for(int i=g[x];i;i=nnext[i]){int tmp=num[i];if(flow[i]&&d[tmp]==0){d[tmp]=d[x]+1;team[++tail]=tmp;}}}if(d[t]==0) return 0;return true;
}int dfs(int x,int mmin)
{if(x==t) return mmin;int f=0,tmp;for(int i=g[x];i;i=nnext[i]){if(d[num[i]]==d[x]+1&&flow[i]&&(tmp=dfs(num[i],min(flow[i],mmin)))){flow[i]-=tmp;flow[i^1]+=tmp;f+=tmp;mmin-=tmp;if(mmin==0){return f;}}}d[x]=0;return f;
}int main()
{int n;cin>>n;for(int i=0;i<=n;i++)for(int j=0;j<=n;j++)id[i][j]=++cnt;for(int j=0;j<=n;j++)for(int i=1;i<=n;i++)	{int x;scanf("%d",&x);ADD(id[j][i-1],id[j][i],x);}	for(int j=1;j<=n;j++)for(int i=0;i<=n;i++){int x;scanf("%d",&x);ADD(id[j-1][i],id[j][i],x);}	for(int j=0;j<=n;j++)for(int i=1;i<=n;i++){int x;scanf("%d",&x);ADD(id[j][i],id[j][i-1],x);}for(int j=1;j<=n;j++)for(int i=0;i<=n;i++)	{int x;scanf("%d",&x);ADD(id[j][i],id[j-1][i],x);}s=id[0][0];t=id[n][n];int ans=0;while(bfs()) ans+=dfs(s,2e9);cout<<ans<<endl;return 0;
}


100分的SPFA:


#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int MAXN = 4*500+500*500+10;
const int MAXM = 4*500*(500+1)+10;int n,s,t,cnt=0;
int dis[MAXN];
int id[502][502];
bool in[MAXN];int tot,g[MAXN],nnext[MAXM],num[MAXM],cost[MAXM];
void add(int x,int y,int z){tot++;nnext[tot]=g[x];g[x]=tot;num[tot]=y;cost[tot]=z;}struct H
{int x;bool operator < (const H b)const {return dis[x]>dis[b.x];}
};
priority_queue <H> q;int SPFA()
{memset(dis,100,sizeof(dis));q.push((H){s});in[s]=true;dis[s]=0;while(q.size()){int x=q.top().x;q.pop();in[x]=false;for(int i=g[x];i;i=nnext[i]){if(dis[num[i]]>dis[x]+cost[i]){dis[num[i]]=dis[x]+cost[i];if(!in[num[i]]){q.push((H){num[i]});in[num[i]]=true;}}}}return dis[t];
}int main()
{cin >> n;for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) id[i][j]=++cnt;s=++cnt;t=++cnt;for(int i=1;i<=n;i++) id[0][i]=s,id[n+1][i]=t,id[i][0]=t,id[i][n+1]=s;for(int x,i=0;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&x),add(id[i][j],id[i+1][j],x);for(int x,i=1;i<=n;i++) for(int j=0;j<=n;j++) scanf("%d",&x),add(id[i][j+1],id[i][j],x);for(int x,i=0;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&x),add(id[i+1][j],id[i][j],x);for(int x,i=1;i<=n;i++) for(int j=0;j<=n;j++) scanf("%d",&x),add(id[i][j],id[i][j+1],x);cout << SPFA() << endl;return 0;
}




这篇关于NOI2010 海拔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767508

相关文章

NASA数据集:ASTER全球数字海拔模型(GTEM)V003

ASTER Digital Elevation Model V003 简介 ASTER全球数字海拔模型(GTEM)第3版(ASTG TM)提供了地球陆地区域的全球数字海拔模型(TEM),空间分辨率为1角秒(赤道处水平位置约30米)。ASTER GTEM数据产品的开发是美国国家航空航天局(NASA)和日本经济产业省(METI)之间的合作成果。ASTER GTEM数据产品由东京的传感器信息实验室公

LUOGU P2048 [NOI2010] 超级钢琴(贪心+堆)

原题链接:[NOI2010] 超级钢琴 题目大意: 给出一个长度为 n n n 的数组,且 a i a_{i} ai​ 可正可负,再给出三个数字 k , L , R k,L,R k,L,R 。 定义每个子数组的价值为其所有元素的和,你需要找到 k k k 个连续的子数组(可重叠但不可重复),且满足长度在 [ L , R ] [L,R] [L,R] 内,问你最后这 k k

NOI2010...BZOJ2006 超级钢琴 贪心

Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。 这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。 一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的,当且

30KW高原汽油发电机,海拔5000米可使用

大汉动力高原汽油发电机是专为高原地区设计的发电设备,其设计和特性考虑了高原环境的特别性。以下是关于高原汽油发电机的一些关键信息: 设计特点: 高原适应性:高原地区海拔高,空气稀薄,氧气含量低,这对发电机的燃烧效率有一些影响。因此,高原汽油发电机通常具有特别的燃烧系统和设计,以确保在高原环境下能够稳定、可靠地运行。 静音设计:为了减少对周围环境的噪音污染,高原汽油发电机通常采用静音设计,包括使用消

地级市海拔标准差(可用作宽带中国工具变量)

地级市海拔标准差(可用作宽带中国工具变量) 1、来源:地理空间数据云 2、指标:行政区划代码、地区、所属省份、所属地域、经度、纬度、海拔标准差(m) 3、说明:地形起伏度会影响网络基础设施建设,地形起伏度越大,不仅会增加网络基础设施的建设成本,还会影响宽带网络的信号质量;地形起伏度作为自然地理变量,与经济社会因素不相关,不会对城市的经济造成直接影响 4、参考文献: ]刘传明,马青山.网络

中国各地级市的海拔标准差数据集

01、数据简介 海拔标准差是指对某个地点的海拔进行测量后,所得结果与平均海拔之间的差异。它反映了测量结果的离散程度,即海拔数据的可靠性。如果标准差较小,说明测量结果的可靠性较高;如果标准差较大,则说明测量结果的可靠性较低。 海拔标准差的定义公式为:标准差 = sqrt((1/N)* Σ(海拔数据-平均海拔)^2) 其中,N代表测量数据的数量,海拔数据代表每个测量点的海拔数据,平均海拔代表所有

为什么获取不到定位的速度[getSpeed()]、角度[getBearing()]、海拔[getAltitude()]?

速度、角度和海拔数据来源自哪里? 精准的速度(Speed)、角度(Bearing)、海拔(Altitude)数据来自设备GPS模块,也就是当GPS模块正常工作情况下,且设备在移动时会返回以上三种数据。 所以当以上三种数据返回负数说明GPS状态现在是太好的,无法准确计算结果。如果返回0意味着GPS状态可用,但设备没有移动。 为何高精度定位模式不能每次都返回这三项数据? 在高精度定位模式下会采

bzoj2005 [NOI2010]能量采集 莫比乌斯反演

题目链接:传送门 考虑点 ( x , y ) (x,y) (x,y)对答案的贡献: 设 g c d ( x , y ) = k gcd(x,y)=k gcd(x,y)=k, x = a k , y = b k . x=ak,y=bk. x=ak,y=bk. 若有 x ′ , y ′ x&#x27;,y&#x27; x′,y′满足 ( x ′ , y ′ ) (x&#x27;,y&#x27;) (

BZOJ 2005 [Noi2010]能量采集 (容斥)

[Noi2010]能量采集 Time Limit: 10 Sec  Memory Limit: 552 MB Submit: 2324  Solved: 1387 [Submit][Status][Discuss] Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量。在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能

洛谷P1447 - [NOI2010]能量采集

Portal Description 给出\(n,m(n,m\leq10^5),\)计算\[ \sum_{i=1}^n \sum_{j=1}^m (2gcd(i,j)-1)\] Solution 简单起见我们来钦定\(n\leq m\),然后计算\(\sum_{i=1}^n \sum_{j=1}^m gcd(i,j)\)。\[ans = \sum_{i=1}^n \sum_{j=1}^m gcd