srm 583

500:最多50个点的一棵树,每条边代表一盏灯,有两种状态,开或关,还有两种属性,重要或者不重要

定义一种操作是选择一条路径,将路径上的边的开关状态取反。问最少需要多少次操作才能使得每条重要的边都处于开的状态。

显然,所有的不重要的边都可以合并起来,然后搞成一棵新的树,每条边都是重要的,然后再YY一下,每条已经开的边不需要被覆盖到了,因为取反后还是要取反回来的,这样跟不去取反是一样的,所以现在这棵树被拆分成了若干棵树,每棵树全是需要取反的边,根据奇偶性贪心取即可。

#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <ctime>
using namespace std;

class TurnOnLamps
{
public: 
    int minimize(vector <int> roads, string initState, string isImportant);
    
    

};

int fa[55];
int g[55][55];
int find(int x) {
  return fa[x] == x ? x : find(fa[x]);
}
void Union(int x,int y) {
  int fx = find(x);
  int fy = find(y);
  if(fx != fy) {
    fa[fx] = fy;
  }
}
bool vis[55];
int n;
int owe[55];
int ans;
void dfs(int u,int f,int state) {
  vis[u] = true;
  int cnt = 0, sum = 0;
  for(int i = 1; i < n; i++) {
    if(g[u][i] != -1 && !vis[i]) {
      dfs(i, u, g[u][i]);
      cnt ^= g[u][i];
      sum += g[u][i];
      if(g[u][i] == 0) {
        ans += owe[i];
      }
    }
  }
  owe[u] = cnt;
  ans += sum / 2;
}
int TurnOnLamps::minimize(vector <int> roads, string initState, string isImportant){
  ans = 0;
  memset(owe, 0, sizeof(owe));
  for(int i = 0; i < 50; i++) fa[i] = i;
  memset(g, -1, sizeof(g));
  n = roads.size() + 1;
  for(int i = 0; i < roads.size(); i++) {
    int a = roads[i];
    int b = i + 1;
    if(isImportant[i] == '0') {
      Union(a, b);
    } 
  }
  for(int i = 0; i < roads.size(); i++) {
    int a = roads[i];
    int b = i + 1;
    int x = find(a);
    int y = find(b);
    if(x != y)  g[x][y] = g[y][x] = (initState[i] == '0' );
  }
  int root = find(0);
  memset(vis, false, sizeof(vis));
  dfs(root, -1, -1);
  ans += owe[root];
  return ans;
}


// Powered by FileEdit
// Powered by TZTester 1.01 [25-Feb-2003]
// Powered by CodeProcessor


### 什么是供应商关系管理系统(SRM) 供应商关系管理系统(Supplier Relationship Management, SRM)是一种旨在帮助企业优化其与供应商之间合作关系的信息技术工具。它通过集成化的流程管理和数据分析能力,提升企业在采购、供应链协作以及资源分配方面的效率和透明度[^1]。 #### SRM 的产生背景 随着全球化进程加快,企业面临的市场竞争日益激烈,传统的采购管理模式已无法满足现代商业环境的需求。为了降低采购成本并提高供应链灵活性,SRM 应运而生。该系统的引入不仅能够改善企业内部运作机制,还促进了外部合作伙伴之间的高效沟通与合作。 #### SRM 的核心功能 SRM 系统通常具备以下几类主要功能: - **供应商全生命周期管理**:覆盖从潜在供应商评估到正式签约再到绩效考核的全过程。 - **采购流程自动化**:支持在线询价、报价处理、合同签订等功能,减少人工干预带来的错误风险。 - **数据共享与协同工作**:与其他业务系统(如ERP、WMS等)无缝对接,实现跨部门甚至跨国界的数据交换和服务调用[^2]。 - **分析决策支持**:利用大数据技术和人工智能算法挖掘隐藏价值,辅助管理层制定科学合理的策略方向[^3]。 #### SRM 对企业的战略意义 实施有效的SRM方案可以帮助公司获得多方面收益,包括但不限于削减开支、缩短交货周期、改进产品质量等方面的表现;同时也有助于构建长期稳定可信赖的合作网络,在不确定因素增多的情况下保持竞争优势地位[^4]。 ```python class SupplierRelationshipManagementSystem: def __init__(self): self.modules = ["Supplier Lifecycle", "Procurement Automation", "Data Collaboration"] def manage_suppliers(self): print("Managing suppliers through lifecycle stages.") def automate_procurements(self): print("Automating procurement processes with digital tools.") def collaborate_data(self): print("Facilitating data collaboration across systems.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值