学长出的题都很精华,自己都没法ak
G. 股市风云

小明的父亲是New Internet Technology And China Maker 公司的总裁,大大大的土豪,每次都会给小明用不完的零花钱。为了小明的成长,他决定让小明用自己的零花钱去股市磨练一下。
他给小明限定了一个特定的股票和n天时间,小明只能买这一只股票,并且他磨练的时间一共只有n天。
而且,因为小明的耐心有限,他最多会买入这只股票两次,并且每次只会持有一股。
现在给你这n天内这只股票的单价,问你小明在n天内能获得的最大利润是多少。
Input
第一行给出一个T,表示有T组案例。对于每组案例,第一行给出一个n,表示小明磨练的时间。接下来一行给出n个数,第i个数pi表示第i天股票的价格。
(1<=n<=1e6,0

#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<algorithm>
#include<map>
typedef long long ll;
using namespace std;
const int MM = (int)1e6 + 10;
ll  num[MM];
ll lef[MM], righ[MM];
int main()
{int t,i,j;cin >> t;{while(t--){int n;scanf("%d", &n);int le = 0;for (i = 0; i < n; i++){scanf("%lld", &num[i]);if (num[le] > num[i])le = i;lef[i] = le;}int re = n - 1;for (i = n - 1; i >= 0; i--){if (num[i] > num[re])re = i;righ[i] = re;}ll s1 = 0, s2 = 0;for (int i = 0; i < n; i++){s1 = max(s1, num[i] - num[lef[i]]);s2 = max(s2, s1 + num[righ[i]] - num[i]);}printf("%lld\n", s2);}}return 0;
}

H. 按位与运算&&&&&

按位与运算的规则。
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
另,负数按补码形式参加按位与运算。
“与运算”的特殊用途:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。

(2)取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;

Input
第一行给出一个T,表示有T组案例。对于每组案例,在一行中给你两个数m,n(0<=m<=n<=2^31)。

Output
对于每组案例,求在区间[m,n]所有数按位与的结果,输出一行表示答案。

Sample Input
2
9 10
1 10
Sample Output
8
0
Hint
对于第二个案例 1&2&3&4&5&6&7&8&9&10=0

考验,对二进制的认识,及位移运算符的运用

建议先暴力求解出前一千个数的二进制码;
其实求的就是高位的最大公共部分

#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<algorithm>
#include<map>
typedef long long ll;
using namespace std;
int  stu[(int)1e5 + 1];
int main()
{ll t, n, m;while (cin >> t){while (t--){cin >> n >> m;int cnt = 0;int f = 0;while (n&&m){if (n == m){f = 1;cout << (n << cnt) << endl;break;}n >>= 1;m >>= 1;cnt++;}if (!f)puts("0");}}return 0;
}

F. 休赛季的引援#2

众多周知,勇士又拿了nba的总冠军,作为詹姆斯球迷的袁大牛,当然不能接受这样的现实,于是在多年后他买下了骑士队,不过这只骑士队现在一个球员也没有,现在袁大牛要去自由市场引援,你帮他看看他的球队能否击败勇士(战斗力高于勇士).

首先,nba是有工资帽的,你签约自由球员的时候,你球队的工资总额是不能超过这个工资帽的,你要做的就是在工资帽内招到总战斗力最大的一些球员.其次,签约球员没有人数要求,几个人都行.
不过,你nba你每年都可以得到一个特例,特例能干什么用呢,说起来比较复杂,总之在休赛季,你可以无视工资帽的情况下签约一个工资50及以内的人,比如你当前总工资为800,工资帽为800,因为没有空间去再签一个球员,比如A(工资30,战斗力50),这时候你就可以用你的特例把他签下了.
Input
第一行给出一个整数n(0<=n<=1000),表示工资帽.

第二行给出一个整数m(0<=m<=1000),表示勇士战斗力.

第三行给出一个整数t(1<=t<=100),表示自由球员的数量.

接下来t行,每行两个整数,球员需求的工资v(1<=v<=1000),球员的价值val(1<=val<=1000).
Output
输出你能得到的最高战斗力,并告袁大牛是否能击败勇士,详见输出.

Sample Input
1000
1000
5
100 200
500 105
200 300
300 200
300 200
1000
1000
5
500 105
200 300
500 400
300 200
30 100
1000
1000
5
500 105
200 500
500 400
300 200
30 100
Sample Output
900 no
1000 no
1200 yes


01背包变形,这个效率不高,
每个小于50的都有做特例的机会,先把每个小于50的取出来对剩余的暴力dp,再加上这个小于50的,求解最大值;

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{int n, m, t;while (~scanf("%d%d%d", &n, &m, &t)){int v[1111] = { 0 }, val[1111] = { 0 };for (int i = 1; i <= t; i++)scanf("%d%d", v+i, val+i);int dp[1111] = { 0 };int mm = -999;for (int k = 1; k <= t; k++){int pos = 0;if (v[k] <= 50)pos = k;memset(dp,0, sizeof(dp));for (int i = 1; i <= t; i++){if (i == pos)continue;for (int j = n; j >= v[i]; j--)dp[j] = max(dp[j], dp[j - v[i]] + val[i]);}mm = max(mm, dp[n] + val[pos]);}printf("%d ", mm);if (mm > m)puts("yes");elseputs("no");}return 0;
}
E. 休赛季的引援#1众多周知,勇士又拿了nba的总冠军,作为詹姆斯球迷的袁大牛,当然不能接受这样的现实,于是在多年后他买下了骑士队,不过这只骑士队现在一个球员也没有,现在袁大牛要去自由市场引援,你帮他看看他的球队能否击败勇士(战斗力高于勇士).首先,nba是有工资帽的,你签约自由球员的时候,你球队的工资总额是不能超过这个工资帽的,你要做的就是在工资帽内招到总战斗力最大的一些球员.其次,签约球员没有人数要求,几个人都行.Input
输入数据有多组.第一行给出一个整数n(0<=n<=1000),表示工资帽.第二行给出一个整数m(0<=m<=1000),表示勇士战斗力.第三行给出一个整数t(1<=t<=100),表示自由球员的数量.接下来t行,每行两个整数,球员需求的工资v(1<=v<=1000),球员的价值val(1<=val<=1000).
Output
输出你能得到的最高战斗力,并告袁大牛是否能击败勇士,详见输出.
Sample Input
1000
1000
5
100 200
500 105
200 300
300 200
300 200
1000
1000
5
500 105
200 300
500 400
300 200
30 100
1000
1000
5
500 105
200 500
500 400
300 200
30 100
Sample Output
900 no
900 no
1100 yes

无脑01背包,签到题

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#define MAXN 1000010
using namespace std;
typedef long long ll;
const int MOD = 10000;
//tree array first blood
int tarray[50005];
int n;
int lowbit(int i)
{return i&(-i);
}
void insert(int i, int k)
{while (i <= n){tarray[i] += k;i += lowbit(i);}
}
ll sum(int i)
{ll s = 0;while (i > 0){s += tarray[i];i -= lowbit(i);}return s;
}
int dp[1111];
int main()
{int w, m, t, v[1111], val[1111];while (~scanf("%d%d%d", &n,&m,&t)){memset(dp, 0, sizeof(dp));for (int i = 1; i <= t; i++)scanf("%d%d", v + i, val + i);for (int i = 1; i <= t; i++){for (int j = n; j >= v[i]; j--)dp[j] = max(dp[j], dp[j - v[i]] + val[i]);}if (dp[n] > m){printf("%d yes\n", dp[n]);}elseprintf("%d no\n", dp[n]);}return 0;
}

NIT 股市风云 按位与运算 F. 休赛季的引援#2相关推荐

  1. [转载] OpenCV-Python图像位与运算bitwise_and函数详解

    参考链接: Python中的numpy.bitwise_and ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.概述 图像的与运算主要 ...

  2. OpenCV-Python图像位与运算bitwise_and函数详解

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.概述 图像的与运算主要用于获取某个图像中感兴趣的部分,是针对两个图像矩阵数组或一个数组 ...

  3. java乘以2的位计算符号_java编程之:按位与运算,等运算规则

    按位与运算符(&) 参加运算的两个数据,按二进制位进行"与"运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1& ...

  4. STM8学习笔记---寄存器操作之位或和位与运算

    刚开始学习STM8单片机时,看别人的代码,在设置寄存器的时候经常使用,位或.位与.左移.右移等运算,就很不理解,为什么不直接给寄存器赋值,非要搞的这么复杂.直到后来程序写的多了,才明白这样写的好处.比 ...

  5. python整数逆位运算_[python/工具] python z3库学习 减乘除位与运算 ctf一把梭

    今天在vidar的分享会上 s神跟我们讲了一个python的库叫做z3 可以在python中用这个库解决任何方程(只要有解) 网上找不到任何中文资料=.=看来我只能自己写了 z3库的介绍 Z3 在工业 ...

  6. 竞赛题B:股市风云。

    /*Problem B 股市风云 Description 股市强烈动荡,有涨有跌.现在有一组数据表示各公司的涨跌(涨为正,跌为负,不动为零),要求统计出平均涨幅和平均跌幅. Input 一组数,其中有 ...

  7. php 按位与运算,PHP 按位与()运算符应用实践

    PHP的按位与运算是将数字转换成二进制格式进行位运算. PHP手册中的讲解为$a & $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1. 1.&的运算方法(奇偶性判断 ...

  8. c语言位与运算的作用,c语言位运算符的用法

    c语言位运算符的用法 C语言中位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果.下面小编就为大家介绍下c语言位运算符的用法. ...

  9. 利用位与运算简化代码

    利用位与运算简化代码 题目及代码来源:<数据结构习题解析(第三版)>,邓俊辉编著,ISBN: 978-7-302-33065-3 题目要求:改进教材中的countOnes()算法,使得时间 ...

最新文章

  1. 区域链结构对于数据中心有什么影响?这个影响是好是坏呢!
  2. java学习(85):Interage包装类基本使用
  3. Git和Github的学习
  4. Nhibernate学习之many-to-many篇
  5. 转载:如果你想辞职,先不妨看看这篇文章
  6. Spring mvc 拦截静态资源配置管理
  7. 动机才是需求,问题只是现象
  8. html代码表白_七夕表白代码,樱花特效+爱心特效+花瓣+评论留言功能等
  9. 【工业机器人】全球工业机器人详细产业链梳理!
  10. 如何使用cmd查看本机IP地址
  11. php多个语言包,thinkphp实现多语言功能(语言包)
  12. 交换机trunk模式工作原理
  13. Word查找和替换通配符(完全版)
  14. c语言法定节日日历程序,C 语言写的日历
  15. python成都_Python抓取成都房价信息
  16. 接口测试用例设计的一点总结
  17. 2014年3月份第3周51Aspx源码发布详情
  18. virtual camera
  19. 《缠中说禅108课》23:市场与人生
  20. 数据结构-串、数组、广义表

热门文章

  1. statusBar控件
  2. [运放滤波器]4_积分微分电路
  3. QlExpress 性能优化(二)
  4. 字体文件检查工具Webfont Generator
  5. 亚马逊测评做单总是被砍单封号是什么原因?
  6. Ubuntu14.04安装有道词典
  7. iOS开发月报#11|201905
  8. 09-word不显示段落标记(去掉回车符号)取消拼写错误
  9. 计算机显示器是输入,如果计算机显示器未显示视频输入怎么办
  10. Diagonal Scaling