题目链接

显然有贪心每次选择最大的两个数来做。

于是暴力地把最大的两个数调整到非负(暴力次数不超过1e5),接下来使用矩阵乘法即可。

\[ \begin{pmatrix} B'\\S'\\T' \end{pmatrix} = \begin{pmatrix} 1&1&0\\ 1&0&0\\ 1&1&1 \end{pmatrix} \begin{pmatrix} B\\S\\T \end{pmatrix} \]

#include <bits/stdc++.h>
using namespace std;
const int mod=1e7+7;struct Node {int a[3][3];int *operator[](const int&d) {return a[d];}const int *operator[](const int&d) const{return a[d];}Node operator*(const Node&b) const{Node c; memset(&c,0,sizeof c);for(int i=0; i<3; ++i) for(int k=0; k<3; ++k) if(a[i][k])for(int j=0; j<3; ++j)c[i][j]=(c[i][j]+1LL*a[i][k]*b[k][j]%mod)%mod;return c;}Node pow(int y) {Node c,x=*this;for(int i=0; i<3; ++i) for(int j=0; j<3; ++j) c[i][j]=(i==j);for(; y; y>>=1,x=x*x) if(y&1) c=c*x;return c;}
} G,M;int n,k,sum,a[200010];int main() {scanf("%d%d",&n,&k);for(int i=1; i<=n; ++i) {scanf("%d",a+i);sum=(sum+a[i]+mod)%mod;}sort(a+1,a+n+1);while(a[n-1]<0&&k>0) {a[n+1]=(a[n]+a[n-1]); n++; k--;sum=(sum+a[n]+mod)%mod;swap(a[n],a[n-1]);}if(k==0) {printf("%d\n",sum);return 0;}M[0][0]=a[n];M[1][0]=a[n-1];M[2][0]=sum;G[0][0]=G[0][1]=1;G[1][0]=1;G[2][0]=G[2][1]=G[2][2]=1;Node ans=G.pow(k)*M;printf("%d\n",ans[2][0]);return 0;
}

转载于:https://www.cnblogs.com/nosta/p/11042648.html

[HDU517] 小奇的集合相关推荐

  1. 【BZOJ4547】【HDU5171】小奇的集合,暴力+矩阵乘法

    Time:2016.08.18 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 思路: 基本想法是每次找出最大的两个相加即可 而且由于题目要求,起始的n个数中至少有一个是正整数 ...

  2. bzoj 4547: Hdu5171 小奇的集合

    题解: 贪心很简单,分类讨论一下就可以了 用矩阵乘法优化这个过程 由于要维护和所以可以搞成三维矩阵 mo数是1e7+7我写了1e9+7真是很无语 代码: #include <bits/stdc+ ...

  3. 代码: html 页面小效果 (集合,待补充)

    代码: html 页面小效果 (集合,待补充) 标签切换(下部内容区跟着切换): 2016-6-2 <script type="text/javascript" src=&q ...

  4. Bzoj 4548: 小奇的糖果(双向链表+排序+树状数组)

    以下内容来自ShallWe's Blog 题目 4548: 小奇的糖果 Description 有\(N\)个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能 ...

  5. 小奇遐想 树状数组实现+容斥思想

    问题 M: 小奇遐想 时间限制: 1 Sec  内存限制: 128 MB 提交: 165  解决: 21 [提交] [状态] [讨论版] [命题人:admin] 题目描述 撷来一缕清风飘渺 方知今日书 ...

  6. 【bzoj4550】小奇的博弈 博弈论+dp

    题目描述 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色.最左边是白色棋子,最右边 是黑色棋子,相邻的棋子颜色不同. 小奇可以移动白色棋子,提比可以移动黑色的棋子,它们 ...

  7. bzoj 2281: [Sdoi2011]黑白棋 bzoj 4550: 小奇的博弈(Nimk博弈+DP)

    4550: 小奇的博弈 Time Limit: 2 Sec  Memory Limit: 256 MB Submit: 68  Solved: 42 [Submit][Status][Discuss] ...

  8. 状态规划P4270小奇挖矿2

    问题描述 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. [问题描述] 现在有m+1个星球,从左到右标号为0到m,小 ...

  9. [usOJ5529]小奇探险

    题目 传送门 to usOJ 题目描述 小奇去遗迹探险,遗迹里有 NNN 个宝箱,有的装满了珠宝,有的装着废品. 小奇有地图,所以它知道每一个宝箱的价值,但是它不喜欢走回头路,所以要按顺序拿这 NNN ...

最新文章

  1. vijos P1190繁忙的都市(Kruskal)(最小生成树)
  2. 找java培训机构有哪些参考标准
  3. 去掉警告:PerformSelector may cause a leak because its
  4. 自己动手,实现一款轻量级 HTTP 调用工具
  5. efcore 批量_【EF Core】Entity Framework Core 批处理语句
  6. 在 Visual Studio Code 中使用 PoweShell - CodeShell
  7. UDP 理论概述与编码入门
  8. 算法导论第三版 21.2-3习题答案
  9. 用html代码制作一个表单页面,HTML网页表单制作详细讲解
  10. tensorflow学习之二 alexnet vgg resnet目标分类
  11. leetcode | 回文数
  12. Python ln_LN型芯型联轴器
  13. 对产品经理来说,PMP和NPDP两个证书,哪一个权威性比较大?
  14. Linux计算时间间隔
  15. 如何将EXCEL表格的内容导入到CDR中?
  16. asterisk拨号规则
  17. java 输入法实现(一)
  18. 金胜维固态硬盘MK8115主控开卡成功教程
  19. RFID技术给图书馆带来的优势
  20. 【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现

热门文章

  1. python 波形发生_事件与信号
  2. java多线程实战指南_学习笔记《Java多线程编程实战指南》二
  3. spring事务三大接口
  4. 学习mysql中使用inner join,left join 等
  5. Java基本数据类型及所占字节大小
  6. Ubuntu 开机 Firmware Bug , Bios corrupted
  7. Java技术:为什么不推荐使用BeanUtils属性转换工具
  8. 杭州高职单招计算机试题,河北省高职单招职业技能练习题20
  9. html鼠标悬停区域拉伸,html – :将鼠标悬停在具有边框半径的div上
  10. IPC 共享内存和 消息队列(发送、接收、移除)以及键值的生成