uva 10817 Headmaster's Headache 集合上的dp 位运算

该博客探讨了如何利用位运算和动态规划(dp)解决UVA 10817题目的策略。问题设定涉及课程、教师和求职者,目标是最小化招聘成本,确保每门课至少有两位教师能教授。通过二进制表示和集合操作,将状态转移方程表示为是否雇佣求职者的决策。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合上的dp,用到了很多位运算的题目~ 

给出s个课程,m个教师,n个求职者,教师必须招聘,然后招聘一些求职者,使得每一门课都至少有两个老师能教。问题就转换成了招聘哪些求职者使得花费最少。因为s范围小于8,则可以用二进制表示,用集合s1表示恰好有一个人教的课的集合,用集合s2表示有两个人教的课的集合,则每次状态转移即为选择这名求职者还是不选(教师必须选)具体看代码。

 

d(i,s1,s2) = min{ d(i+1,s1',s2')+c[i],d(i+1,s1,s2)} 第一项表示聘用,第二项表示不聘用。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define mem(name,value) memset(name,value,sizeof(name))
#define FOR(i,n) for(int i=1;i<=n;i++)
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=130;
const int maxs=8;
int n,m,s,d[maxn][1<<maxs][1<<maxs],st[maxn],c[maxn];//st表示第i个人可以教的课程的集合,c表示花费
void init(){
    mem(d,-1); mem(st,0); mem(c,0);
    for(int i=0;i<m+n;i++){
        scanf("%d",c+i);
        while(1){
            int t; char c1;
            scanf("%d",&t);
            st[i] |= (1<<(t-1));
            c1 = getchar();
            if(c1=='\n') break;
        }
    }
}
int dp(int i,int s0,int s1,int s2){ //s0 表示恰好一个人都没有教的课的集合,也可以用s1和s2算出来。
    if(i==m+n) return s2==(1<<s)-1?0:inf;
    //如果已经考虑到第m+n个人了,编号是1~m+n-1,则人已经选完,若s2集合中没有所有课,则不符合题意。
    int& ans = d[i][s1][s2];
    if(ans!=-1) return ans;
    ans = inf;
    if(i>=m) ans = dp(i+1,s0,s1,s2);    //只有当选择求职者的时候才用考虑是否聘用。
    int m0 = st[i]&s0, m1 = st[i]&s1;   //m0表示在一个人都没有教的课中,第i个人可以教哪些,m1同理。
    s0=s0^m0;  s1=(s1^m1)|m0; s2=s2|m1; //将s0中有人教的课去掉,算到s1上,s2同理
    ans = min(ans,c[i]+dp(i+1,s0,s1,s2)); //和不聘用的价格比较
    return ans;

}
int main(){
   // freopen("in.txt","r",stdin);
    while(~scanf("%d%d%d",&s,&m,&n) && s && m &&n){
        init();
        int ans = dp(0,(1<<s)-1,0,0);   //答案为还没考虑任何一个人,和没有任何一门课有人教
        printf("%d\n",ans);
    }
    return 0;
}


 

 

内容概要:该论文探讨了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种型可重构智能表面,能同时反射和传输信号,与传统仅能反射的RIS不同。结合NOMA技术,STAR-RIS可以提升覆盖范围、用户容量和频谱效率。针对STAR-RIS元素众多导致获取完整信道状态信息(CSI)开销大的问题,作者提出一种在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量的方法,以最大化总可实现速率并确保每个用户的最低速率要求。仿真结果显示,该方案优于STAR-RIS辅助的OMA系统。 适合人群:具备一定无线通信理论基础、对智能反射面技术和非正交多址接入技术感兴趣的科研人员和工程师。 使用场景及目标:①适用于希望深入了解STAR-RIS与NOMA结合的研究者;②为解决无线通信中频谱资源紧张、提高系统性能提供的思路和技术手段;③帮助理解PSO算法在无线通信优化问题中的应用。 其他说明:文中提供了详细的Python代码实现,涵盖系统参数设置、信道建模、速率计算、目标函数定义、约束条件设定、主优化函数设计及结果可视化等环节,便于读者理解和复现实验结果。此外,文章还对比了PSO与其他优化算法(如DDPG)的区别,强调了PSO在不需要显式CSI估计方面的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值