[HDU517] 小奇的集合
题目链接
显然有贪心每次选择最大的两个数来做。
于是暴力地把最大的两个数调整到非负(暴力次数不超过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] 小奇的集合相关推荐
- 【BZOJ4547】【HDU5171】小奇的集合,暴力+矩阵乘法
Time:2016.08.18 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 思路: 基本想法是每次找出最大的两个相加即可 而且由于题目要求,起始的n个数中至少有一个是正整数 ...
- bzoj 4547: Hdu5171 小奇的集合
题解: 贪心很简单,分类讨论一下就可以了 用矩阵乘法优化这个过程 由于要维护和所以可以搞成三维矩阵 mo数是1e7+7我写了1e9+7真是很无语 代码: #include <bits/stdc+ ...
- 代码: html 页面小效果 (集合,待补充)
代码: html 页面小效果 (集合,待补充) 标签切换(下部内容区跟着切换): 2016-6-2 <script type="text/javascript" src=&q ...
- Bzoj 4548: 小奇的糖果(双向链表+排序+树状数组)
以下内容来自ShallWe's Blog 题目 4548: 小奇的糖果 Description 有\(N\)个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能 ...
- 小奇遐想 树状数组实现+容斥思想
问题 M: 小奇遐想 时间限制: 1 Sec 内存限制: 128 MB 提交: 165 解决: 21 [提交] [状态] [讨论版] [命题人:admin] 题目描述 撷来一缕清风飘渺 方知今日书 ...
- 【bzoj4550】小奇的博弈 博弈论+dp
题目描述 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色.最左边是白色棋子,最右边 是黑色棋子,相邻的棋子颜色不同. 小奇可以移动白色棋子,提比可以移动黑色的棋子,它们 ...
- bzoj 2281: [Sdoi2011]黑白棋 bzoj 4550: 小奇的博弈(Nimk博弈+DP)
4550: 小奇的博弈 Time Limit: 2 Sec Memory Limit: 256 MB Submit: 68 Solved: 42 [Submit][Status][Discuss] ...
- 状态规划P4270小奇挖矿2
问题描述 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. [问题描述] 现在有m+1个星球,从左到右标号为0到m,小 ...
- [usOJ5529]小奇探险
题目 传送门 to usOJ 题目描述 小奇去遗迹探险,遗迹里有 NNN 个宝箱,有的装满了珠宝,有的装着废品. 小奇有地图,所以它知道每一个宝箱的价值,但是它不喜欢走回头路,所以要按顺序拿这 NNN ...
最新文章
- vijos P1190繁忙的都市(Kruskal)(最小生成树)
- 找java培训机构有哪些参考标准
- 去掉警告:PerformSelector may cause a leak because its
- 自己动手,实现一款轻量级 HTTP 调用工具
- efcore 批量_【EF Core】Entity Framework Core 批处理语句
- 在 Visual Studio Code 中使用 PoweShell - CodeShell
- UDP 理论概述与编码入门
- 算法导论第三版 21.2-3习题答案
- 用html代码制作一个表单页面,HTML网页表单制作详细讲解
- tensorflow学习之二 alexnet vgg resnet目标分类
- leetcode | 回文数
- Python ln_LN型芯型联轴器
- 对产品经理来说,PMP和NPDP两个证书,哪一个权威性比较大?
- Linux计算时间间隔
- 如何将EXCEL表格的内容导入到CDR中?
- asterisk拨号规则
- java 输入法实现(一)
- 金胜维固态硬盘MK8115主控开卡成功教程
- RFID技术给图书馆带来的优势
- 【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现
热门文章
- python 波形发生_事件与信号
- java多线程实战指南_学习笔记《Java多线程编程实战指南》二
- spring事务三大接口
- 学习mysql中使用inner join,left join 等
- Java基本数据类型及所占字节大小
- Ubuntu 开机 Firmware Bug , Bios corrupted
- Java技术:为什么不推荐使用BeanUtils属性转换工具
- 杭州高职单招计算机试题,河北省高职单招职业技能练习题20
- html鼠标悬停区域拉伸,html – :将鼠标悬停在具有边框半径的div上
- IPC 共享内存和 消息队列(发送、接收、移除)以及键值的生成