首页 > 其他分享 >2024年5月21日

2024年5月21日

时间:2024-05-21 13:41:49浏览次数:21  
标签:Node const 21 int 2024 freopen dist id

A luoguP3030

考虑DP

状态 (i, sum, data)表示已经放了 \(i\) 个砖块, 总和为 \(sum\) 是的最小花钱。

转移 : 枚举第 \(i\) 个选多少。

时间复杂度 \(O(n\sqrt{m} \cdot m)\)

#include<bits/stdc++.h>

using namespace std;

const int N = 15, M = 10005;
const long long INF = 1e18;

int n, m, a[N];
long long dp[N][M];

int main(){
  freopen("tilechng.in", "r", stdin);
  freopen("tilechng.out", "w", stdout);
  cin >> n >> m;
  for(int i = 1; i <= n; ++i){
    cin >> a[i];
  }
  sort(a + 1, a + n + 1);
  for(int i = 0; i <= n; ++i){
    for(int j = 0; j <= m; ++j){
      dp[i][j] = INF;
    }
  }
  dp[0][0] = 0;
  for(int i = 1; i <= n; ++i){
    for(int j = 1; j <= 100; ++j){
      for(int k = j * j; k <= m; ++k){
        dp[i][k] = min(dp[i][k], dp[i - 1][k - j * j] + 1ll * abs(a[i] - j) * abs(a[i] - j));
      }
    }
  }
  cout << (dp[n][m] == INF ? -1 : dp[n][m]);
  return 0;
}

B luoguP3029

对位置从小到大排序, 双指针不断的把元素删除, 压入元素。

时间复杂度 \(O(n \log n)\)

#include<bits/stdc++.h>

using namespace std;

const int N = 50005;

struct Node{
  int x, id;
}a[N];

int n, last, tot, sum, ans = 2e9, cnt[N];
vector<int>v;

int main(){
  freopen("lineup.in", "r", stdin);
  freopen("lineup.out", "w", stdout);
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  for(int i = 1; i <= n; ++i){
    cin >> a[i].x >> a[i].id;
    v.push_back(a[i].id);
  }
  sort(a + 1, a + n + 1, [](const Node &i, const Node &j){  return i.x < j.x;});
  sort(v.begin(), v.end());
  last = -1;
  for(auto x : v){
    if(last != x){
      last = x;
      tot++;
    }
  }
  for(int i = 1; i <= n; ++i){
    a[i].id = lower_bound(v.begin(), v.end(), a[i].id) - v.begin();
  }
  for(int l = 1, r = 1; r <= n; ++r){
    sum += !cnt[a[r].id];
    cnt[a[r].id]++;
    for(; l <= r && cnt[a[l].id] >= 2; cnt[a[l].id]--, l++){
    }
    if(sum == tot){
      ans = min(ans, a[r].x - a[l].x);
    }
  }
  cout << ans;
  return 0;
}

C luoguP2176

搜出一条最段路, 枚举每一条在最短路上的边, 取出把草放在上面之后的最短路。

最短路最多只有 \(n - 1\) 条边。

时间复杂度 \(O(n^3)\)

#include<bits/stdc++.h>

using namespace std;

const int N = 105, M = 10005;

struct Node{
  int a, b;
}pre[N];

struct cmp{
  bool operator()(const Node &i, const Node &j){
    return i.b > j.b;
  }
};

int n, m, vis[N], dist[N], maxx, id, u, v, w[M], ans, op;
vector<Node>g[N];
vector<int>e;
priority_queue<Node, vector<Node>, cmp>pq;

void dij(int s){
  for(int i = 1; i <= n; ++i){
    vis[i] = 0, dist[i] = 1e9;
  }
  dist[s] = 0;
  for(int i = 1; i < n; ++i){
    maxx = 1e9 + 1, id = -1;
    for(int j = 1; j <= n; ++j){
      if(maxx > dist[j] && !vis[j]){
        maxx = dist[j];
        id = j;
      }
    }
    if(id == -1){
      continue;
    }
    vis[id] = 1;
    //cout << maxx <<' ' << id <<'\n';
    for(auto [u, wd] : g[id]){
      if(dist[u] > dist[id] + w[wd]){
        dist[u] = dist[id] + w[wd];
        pre[u] = {id, wd};
      }
    }
  }
}

void DFS(int x){
  if(!x){
    return;
  }
  DFS(pre[x].a);
  if(pre[x].a){
    e.push_back(pre[x].b);
  }
}

int main(){
  ios::sync_with_stdio(0), cin.tie(0);
  freopen("rblock.in", "r", stdin);
  freopen("rblock.out", "w", stdout);
  cin >> n >> m;
  for(int i = 1; i <= m; ++i){
    cin >> u >> v >> w[i];
    g[u].push_back({v, i});
    g[v].push_back({u, i});
  }
  dij(1);
  op = dist[n];
  DFS(n);
  for(auto x : e){
    w[x] *= 2;
    dij(1);
    ans = max(ans, dist[n] - op);
    w[x] /= 2;
  }
  cout << ans;
  return 0;
}

标签:Node,const,21,int,2024,freopen,dist,id
From: https://www.cnblogs.com/liuyichen0401/p/18203810

相关文章

  • 2024-05-21 Module not found: Error: Can't resolve 'ant-design-vue/dist/antd.css'
    报错:Modulenotfound:Error:Can'tresolve'ant-design-vue/dist/antd.css'in'xxx'原因:引入的antd.css文件实际上应该是reset.css文件,是由于ant-design-vue的官网给的代码和实际下的包的文件不一致导致。解决方案:把import"ant-design-vue/dist/antd.css";改成import"ant......
  • ciscn2024初赛部分题目复现
    gdb_debug64位ida反编译,将主要加密部分使用chatgpt写成更容易理解的python形式如下:defencrypt_string(s):v17=[]foriinrange(len(s)):v17.append(ord(s[i])^rand_1[i])ptr=list(range(len(s)))forkinrange(len(s)-1,0,-1):......
  • 鸿心聚力,智引未来 | OpenAtom OpenHarmony开发者大会2024即将启幕
    开源技术已成为推动科技创新的关键动力。在这种趋势下,OpenAtomOpenHarmony(以下简称“OpenHarmony”)项目凭借其独特的开源理念和强大的生态吸引力,正逐渐成为引领智能终端操作系统发展的新趋势。5月25日,以“鸿心聚力智引未来”为主题的OpenHarmony开发者大会2024将在深圳盛大开幕......
  • 【2024-05-20】亲子乱调
    20:00调剂阴晴作好年,麦寒豆暖两周旋。枇杷黄后杨梅紫,正是农家小满天。                                                 ——《吴门竹枝词·小满》二宝昨晚睡得极不踏......
  • 【2024-05-19】连岳摘抄
    23:59假如我说“夏天”,写下“蜂鸟”这个词,装在信封里,带下山去投进邮筒。你一打开我的信,就会回想起那些日子,还有我是多么多么地,爱你。                                            ......
  • 20240520刷题总结
    T1(状态置换,搜索与dp,dp存值结构体)T376。还是从搜索角度去考虑:时间,前i物品,最多拿多少。这样我们去设计状态,我一开始设置:时间,前i,值是拿多少。会发现这样会爆。其实换一下,优化效果更好。前i物品,最多拿j,用的最少时间。实际转移就是背包。存值就存结构体。#include<iostream>......
  • BUUCTF-WEB(21-25)
    [HCTF2018]admin这道题目就是admin说明得管理员登录那我直接创一个admin的账号但是显示已经存在了说明用户名就是admin,然后我们直接爆破,也是爆破出来密码就是123直接登录[MRCTF2020]你传你......
  • 2024盘古石取证比赛(手机)
    题目列表1.分析伏季雅的手机检材,手机型号是:[答案格式:HUAWEI-FL56T][★☆☆☆☆]2.分析伏季雅的手机检材,其和受害人视频通话的时间是:[答案格式:2024-01-01-04-05][★☆☆☆☆]3.分析伏季雅的手机检材,手机中安装了一款记账APP,该记账APP存储记账信息的数据库名称是:[答案格式:abca......
  • 2024盘古石取证比赛(计算机)
    计算机题目分析伏季雅的计算机检材,计算机最后一次错误登录时间是:[答案格式:2024-01-01-04-05-06][★☆☆☆☆]分析伏季雅的计算机检材,计算机中曾经浏览过的电影名字是:[答案格式:《奥本海默》][★☆☆☆☆]分析伏季雅的计算机检材,计算机中团队内部即时通讯软件的最后一......
  • 云原生周刊:Flux 2.3 发布 | 2024.5.20
    开源项目推荐kubeinvaderskubeinvaders专为Kubernetes用户设计。它提供了一种有趣而交互式的方式来探索和可视化您的Kubernetes集群。通过类似游戏的界面,用户可以浏览他们的集群,发现资源,甚至模拟对Pod的攻击。通过kubeinvaders,管理Kubernetes环境变得引人入胜且富有信......