博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
阅读量:4633 次
发布时间:2019-06-09

本文共 1166 字,大约阅读时间需要 3 分钟。

n<=100000个数表示每头牛在K<=30种物品的选取情况,该数在二进制下某位为0表示不选1表示选,求一个最大的区间使区间内选择每种物品的牛一样多。

数学转化,把不同状态间单变量的关系通过不等式移项转变为单状态的多变量关系。

sum[i,j]表示前i头牛有多少选了物品j,那么问题要求即对任意j∈[1,K],sum[p,j]-sum[q,j]相等,使p-q最大。(多状态,单变量)

列出来,sum[p,1]-sum[q,1]=sum[p,2]-sum[q,2]=……,移项,sum[p,2]-sum[p,1]=sum[q,2]-sum[q,1],sum[p,j]-sum[p,1]=sum[q,j]-sum[q,1],j∈[2,K]。

最后需要比较的就是每个i的sum[i,j]-sum[i,1]是否相同。(单状态,多变量)

找“最远的与当前数相同的数”,方法多样,这里用hash。

1 #include
2 #include
3 #include
4 #include
5 //#include
6 using namespace std; 7 8 int n,K; 9 #define maxn 10001110 typedef int state[31];11 #define maxh 10000712 const int inf=0x3f3f3f3f;13 int ans;14 struct Hash15 {16 int first[maxh];17 struct Node18 {19 state list;20 int Max,Min;21 int next;22 }a[maxn];23 int size;24 Hash()25 {26 memset(first,0,sizeof(first));27 size=0;28 }29 int hash(state s)30 {31 int v=0;32 for (int i=1;i
>=1;75 }76 state now;77 for (int j=1;j
View Code

 

转载于:https://www.cnblogs.com/Blue233333/p/7283817.html

你可能感兴趣的文章
Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)
查看>>
jvm 性能调优
查看>>
算法(第四版)C# 习题题解——1.3
查看>>
LTE QCI分类 QoS
查看>>
【Flask】flask+uwsgi+nginx环境部署
查看>>
Get MAC address using POSIX APIs
查看>>
bzoj2120
查看>>
基于uFUN开发板的心率计(一)DMA方式获取传感器数据
查看>>
【dp】船
查看>>
oracle, group by, having, where
查看>>
⑥python模块初识、pyc和PyCodeObject
查看>>
object-c中管理文件和目录:NSFileManager使用方法
查看>>
Kibana:分析及可视化日志文件
查看>>
nodejs pm2使用
查看>>
物联网兴起 嵌入式系统安全日益受关注
查看>>
cocos2d-x 3.10 PageView BUG
查看>>
装饰器的基本使用:用户登录
查看>>
CSS选择器总结
查看>>
第三周-第08章节-Python3.5-文件修改详解
查看>>
npm修改淘宝原
查看>>