首页 > 其他分享 >abc317D 选举总统

abc317D 选举总统

时间:2024-03-09 10:11:22浏览次数:29  
标签:const 个区 选举 int rep 总统 abc317D 花费 dp

题面:有n个区,第i个区有x[i]+y[i]个选民,其中x[i]支持A,y[i]支持B,支持人数多的一方获得该区的全部票数z[i],全部区的票数之和多者获胜,问至少还要多少选民从支持B改为支持A,才能让A胜出?
范围:1<=n<=100; 0<=x[i],y[i]<=1E9; x[i]+y[i]为奇数, z[i]>=1,z[i]之和为奇数且不超过1E5。

思路:将各个区看成物品,对于第i个区,如果x[i]>y[i],那么花费为0;否则要让x[i]增加到过半数,花费为(x[i]+y[i]+1)/2 - x[i]。综合得,第i个区的花费为max(0, (y[i]-x[i]+1)/2),价值为z[i]。
如果正常跑01背包,dp[i]表示花费为i时所能取到的最大价值,跑完后遍历dp找到值大于zsum/2的下标。但本题花费很大,而价值较小,因此定义dp[j]为取到价值j时所需的最小花费,跑完后遍历dp找到满足条件j值的最小dp[j]即可。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a; i<=b; i++)
#define per(i,a,b) for(int i=b; i>=a; i--)

const int N = 105;
const int M = 1E5+5;
const int inf = 1E18;
int n, m, c[N], w[N], dp[M];
void solve() {
    cin >> n;
    rep(i,1,n) {
        int x, y, z;
        cin >> x >> y >> z;
        c[i] = max(0LL, (y-x+1)/2);
        w[i] = z;
        m += z;
    }
    rep(i,1,m) dp[i] = inf;
    rep(i,1,n) per(j,w[i],m) {
        dp[j] = min(dp[j], dp[j-w[i]]+c[i]);
    }
    int ans = inf;
    rep(i,0,m) if(i+i>m) {
        ans = min(ans, dp[i]);
    }
    cout << ans << "\n";
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:const,个区,选举,int,rep,总统,abc317D,花费,dp
From: https://www.cnblogs.com/chenfy27/p/18062311

相关文章

  • P1781 宇宙总统
    1.题目介绍题目描述地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有\(n\)个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。输入格式第一行为一个整数\(n\),代表竞选总统的人数。接下来有\(n\)行,分别为第一个候选人到第\(n\)个候选人的......
  • P1271 【深基9.例1】选举学生会
    1.题目介绍【深基9.例1】选举学生会题目描述学校正在选举学生会成员,有\(n\)(\(n\le999\))名候选人,每名候选人编号分别从\(1\)到\(n\),现在收集到了\(m\)(\(m\le2000000\))张选票,每张选票都写了一个候选人编号。现在想把这些堆积如山的选票按照投票数字从小到大排序。输入格......
  • 洛谷题单指南-排序-P1781 宇宙总统
    原题链接:https://www.luogu.com.cn/problem/P1781题意解读:题目思路非常简单,在n个投票数中选最大的,并记录其编号即可,由于投票数很大,无法直接用整形,需要通过string来进行数字比较。解题思路:本题的关键在于如何比较string数字的大小?在高精度减法时,需要判断两个数的大小,用大数减小......
  • 洛谷题单指南-排序-P1271 【深基9.例1】选举学生会
    原题链接:https://www.luogu.com.cn/problem/P1271题意解读:最直接的计数排序问题,借助一个桶h[N],对被投票的候选人x执行h[x]++,再按顺序遍历输出即可。100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=1005;inth[N];intmain(){intn,m;......
  • paxos协议之衍生协议:Raft协议的简述、协议模型、一致性算法、脑裂问题处理、选举流程
    raft简述raft协议中节点有三种状态leader、follower、candidate(候选人),leader复制日志的管理、客户端的新增更新请求,然后复制到follower节点,如果leader出现故障则follower就会重新选举,新增等操作若被follower所接收则会进行重定向转给leader,follower只负责客户端的读请求。有两......
  • 特朗普开始在YouTube上打竞选广告了 —— 美国总统的竞选广告已经开始媒体投放了
    相关:拜登开始在YouTube上打竞选广告了——美国总统的竞选广告已经开始媒体投放了PS.又多了一个猴上台,哈哈哈。特朗普的竞选资金筹集网站:......
  • 拜登开始在YouTube上打竞选广告了 —— 美国总统的竞选广告已经开始媒体投放了
    哈哈哈,老拜登,跑到YouTube上打广告了,这个画面真的太难想象,如果美国有“椰树”广告,估计拜登能弄个泳装上去打广告。有时不得不佩服西方搞的这种全民选举,最后搞的就和看小品似的,美国那边一大选,我们就可以捧着爆米花,磕着毛嗑来吃大瓜了。今年春节我绝对了,要把美国的总统广告当联欢晚会......
  • Redis哨兵模式:什么是哨兵模式、哨兵模式的优缺点、哨兵模式的主观下线和客观下线、投
    什么是哨兵模式哨兵模式是Redis的高可用解决方案之一,它旨在提供自动故障转移和故障检测的功能。在传统的Redis部署中,单个Redis节点可能成为单点故障,一旦该节点宕机,整个系统将不可用。为了解决这个问题,哨兵模式引入了多个Redis节点,其中一个节点被选为主节点,其他节点作为从节点。......
  • 【洛谷 P1781】宇宙总统 题解(高精度+结构体排序)
    宇宙总统题目描述地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。输入格式第一行为一个整数,代表竞选总统的人数。接下来有行,分别为第一个候选人到第个候选人的票数。输出格式共两行,第一行是......
  • 【洛谷 P1271】【深基9.例1】选举学生会 题解(计数排序)
    【深基9.例1】选举学生会题目描述学校正在选举学生会成员,有名候选人,每名候选人编号分别从1到,现在收集到了张选票,每张选票都写了一个候选人编号。现在想把这些堆积如山的选票按照投票数字从小到大排序。输入格式输入和以及个选票上的数字。输出格式求出排序后的选票编......