HDU 6140 Hybrid Crystals
来源:互联网 发布:知乎孔雀东南飞 编辑:程序博客网 时间:2024/06/11 12:55
题意: 给定n个数Ai, 每个数都带有一个type, (L, R, N) ,
给定一个k, 求Ai是否存在一个子集满足 SUM( Ai*si) = k ,
Ai的ty等于L => si = -1
Ai的ty等于D => si = 1
Ai的ty等于N => si = -1或者1
题目很长的那个式子保证了给定数可以形成一个连续的区间 (现场没有看出这个点....)
解: 然后就暴力求解,可形成的区间最大范围[L, R], 若k属于[L, R]则输出'yes', 否则输出'no'
/*题目中的很长的式子保证了区间连续性,即给定的数能构成一个连续的区间.....故只需要维持这个数列能形成的最大区间范围【L, R】 k在这个区间内即为yes*/ #include<bits/stdc++.h>#define rep(i, a, b) for(int i=(a); i<=(b); ++i)#define ll long longusing namespace std;const int maxn = 1007;struct node{int v;char ty;}p[maxn];int main(){int t, n, k;scanf("%d", &t);while(t--){scanf("%d %d", &n, &k);rep(i, 1, n) scanf("%d", &p[i].v);rep(i, 1, n) scanf("%*c%c", &p[i].ty);int l=-1, r=1;int sum = 1;rep(i, 1, n){if(p[i].ty == 'N'){ //可以正可负 r += p[i].v;l -= p[i].v;} else if(p[i].ty =='D'){//只能负 l -= p[i].v;} else{//只能正 r+=p[i].v;}}if(k<=r && k>=l) cout <<"yes\n";else cout <<"no\n";}return 0;}
阅读全文
1 0
- HDU 6140 Hybrid Crystals
- hdu 6140 Hybrid Crystals
- hdu-6140Hybrid Crystals
- HDU 6140 Hybrid Crystals
- HDU 6140 Hybrid Crystals
- HDU 6140 Hybrid Crystals
- hdu 6140 Hybrid Crystals 思维
- Hdu 6140 Hybrid Crystals【思维】
- Hybrid Crystals(HDU 6140)
- HDU 6140 Hybrid Crystals【思维】
- HDU 6140 Hybrid Crystals【阅读题】【水题】
- HDU 6140 Hybrid Crystals(搞事情题)
- HDU 6140 Hybrid Crystals【题意】【思维】
- HDU 6140 Hybrid Crystals(思考+上下界)
- HDU 6140 Hybrid Crystals(思维)
- HDU 6140 Hybrid Crystals (玄学背包)
- HDU 6140 Hybrid Crystals(坑题)
- HDU 6140 Hybrid Crystals(坑)
- 智能指针
- 图示识别光流Optical Flow
- 异常分类
- struts2中配置文件的加载顺序
- No such file or directory: 'datingTestSet.txt'
- HDU 6140 Hybrid Crystals
- 在线激活PHPSTORM 20170817
- 刚刚注册成功
- 数据结构编程笔记七:第二章 线性表 一元多项式程序的实现
- Mac下同JDK和Tomcat安装和配置
- 关于oracle11g数据库不能创建序列的报错问题----实现表id自增问题
- JAVA8新特性[第二季]-函数式接口
- 我新建了一个java全栈技术群,欢迎大家来交流
- 机器学习中的数学(2)-线性回归,偏差、方差权衡