【JZOJ1319】邮递员

news/2025/2/5 22:42:06/

description

邮局需要你来帮助他们为某个邮递员设计出一条能够穿过那遥远乡村的所有村子和小路至少一次的邮路(输入数据将会保证这么一条路是一定存在的)。
  但是,每条路线都是有一个花费的。各个村子里的村民希望邮递员到达他们村子的时间越早越好。因此,各个村子里的人们采用了一些措施:假设第i号村子是邮递员在他的邮递路线上到达的第k个不同的村子。如果k<=w( i ),那么这个村子的村民就会付给邮局w( i )-k欧元。当然,如果k>w(i),邮局也同意付k- w( i )欧元给这个村子,重复经过村子不重复收费。此外,邮递员每经过一条小路,邮局也要付给邮递员1欧元作为补贴。
  现在有n个村子,编号依次为1到n。邮局就位于1号村子,因此邮递员的传递路线从这里开始,也从这个村子结束。能够离开每个村子的路口的数目一定是2,4或者8。这里允许出现同样的村子间存在多条小路,或者某条小路构成了一个自环的情况。
  你的任务是设计一个路线使得邮局赚的钱最多(或者说赔的钱最少。如果有多种最优解,输出字典序最小的。


analysis

  • 看懂题了的话,其实对于任意一种走法,费用都不会变,赚的钱就是 ∑ i = 1 n w [ i ] − ∑ i = 1 n i \sum^{n}_{i=1}w[i]-\sum^n_{i=1}i i=1nw[i]i=1ni

  • 那么其实题目就是要我们找一条字典序最小的欧拉回路

  • n n n很小且保证合法,那就从 1 1 1开始,从能走的最小点开始走就行了

  • 最后把记录下来的点逆序输出即可


code

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 205
#define ll long long
#define reg register ll
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i)
#define O3 __attribute__((optimize("-O3")))using namespace std;ll f[MAXN][MAXN];
ll ans[MAXN*10];
ll n,m,tot;O3 inline ll read()
{ll x=0,f=1;char ch=getchar();while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;
}
O3 inline void dfs(ll x)
{fo(i,1,n)if (f[x][i])f[x][i]--,f[i][x]--,dfs(i);ans[++tot]=x;
}
O3 int main()
{//freopen("T2.in","r",stdin);n=read(),m=read();fo(i,1,n)read();fo(i,1,m){ll x=read(),y=read();f[x][y]++,f[y][x]++;}dfs(1);printf("%lld\n",tot-1);fd(i,tot,1)printf("%d ",ans[i]);return 0;
}

http://www.ppmy.cn/news/312737.html

相关文章

TOJ-1319 Odd Loving Bakers

There is a group of n (1 ≤ n ≤ 100) bakers in the town of Utopia. These bakers hold a monthly celebration in which they award a prize to some of the luckier among themselves. These lucky guys are chosen as follows: In the beginning there are some chalk m…

AcWing 1319. 移棋子游戏

sg函数是一张有向无环图 尼姆博弈对每一张图sg&#xff08;值&#xff09;进行游戏 就是加强版的集合尼姆博弈(集合尼姆博弈中拓展是根据集合可能的新状态)&#xff0c;这里是回归本质&#xff0c;sg操作是对每个状态拓展出边&#xff0c;并通过出边sg值集合进行mex操作&#x…

ZOJ 1319 Black Box

/*优先队列*/ #include<iostream> #include<queue> #include<algorithm> using namespace std; int main() {int caseN0;cin>>caseN;while(caseN--){int i0,j1,N0,M0;cin>>N>>M;int *anew int[N1];int *unew int[M1];for(i1;i<N;i)cin…

关于Windows 7 64位系统 HP M1319f 打印机无法扫描的解决办法

此办法主要针对Windows7 64位系统的用户&#xff0c;对于Xp系统或者Windows8系统没有验证。 笔者在将电脑重装成win7 64位系统后在安装hp打印机驱动的时候打印机自带的驱动盘提示不支持64位系统&#xff0c;笔者只能在HP官网上下载64位系统的驱动&#xff0c;但是这时候问题出现…

“HP LaserJet M1319f 激光一体机”在 Windows XP 下实现共享打印

一、“HP LaserJet M1319f 激光一体机”在 Windows XP 下实现共享打印 文章简介 在主机端上安装了激光一体机的驱动程序后&#xff0c;为了让网络中其他客户机使用该一体机进行打印&#xff0c;需要安装设置共享打印机。可以将 HP LaserJet M1319f 激光一体机设置为共享打印机。…

【Leetcode】DP | 打家劫舍,当一个机灵的小偷

198 打家劫舍 令 D [ i ] D[i] D[i]表示前 i i i间房子的最大收益&#xff1a; D [ i ] max ⁡ ( D [ i − 1 ] , D [ i − 2 ] n u m s [ i ] ) D [ 0 ] n u m s [ 0 ] D [ 1 ] max ⁡ ( n u m s [ 0 ] , n u m s [ 1 ] ) D[i] \max(D[i -1], D[i-2]nums[i]) \\ D[0] …

安卓大作业 书籍列表APP

系列文章 安卓大作业 书籍列表APP 文章目录 系列文章1&#xff0e;背景2&#xff0e;功能3. 源代码获取 1&#xff0e;背景 我做的项目是一个可以查看到书籍列表以及详情效果的内容&#xff0c;主要使用到的技术有Intent数据传递以及数据库存储的应用&#xff0c;其次使用的组…

wordpress二次元主题

几款开源的wordpress二次元主题&#xff0c;演示地址可到Github查看。 boxmoe Github&#xff1a;https://github.com/baomihuahua/boxmoe-dove- Kratos Github&#xff1a;https://github.com/seatonjiang/kratos Sakura Github&#xff1a;https://github.com/mashiroz…