【jzoj4821】【打膈膜】
来源:互联网 发布:软件系统安全策略 编辑:程序博客网 时间:2024/06/07 05:19
题目大意
解题思路
贪心,先攻击生命小的,场上人数大于3时用群伤,否则用重击,如果重击生命小于2则换一个重击。
code
#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define max(n1,n2) ((n1>n2)?n1:n2)#define min(n1,n2) ((n1>n2)?n2:n1)#define num(n1,n2) ((n1-1)*3*n+n2+1)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=100000,inf=2147483647;int n,m,all,tmp,a[maxn+10];int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%d%d",&n,&m); fo(i,1,n)scanf("%d",&a[i]); sort(a+1,a+n+1); if((n==2)&&(a[1]==1))swap(a[1],a[2]); LL ans=0; fo(i,1,n){ a[i]-=all; if(!a[i])ans--; if(a[i]){ if(i>n-2){ tmp=min(m,a[i]/2); m-=tmp; ans+=1ll*tmp*(n-i+1); a[i]-=tmp*2; if((a[i]==0)&&tmp)ans--; else ans+=1ll*(a[i]-1)+a[i]*(n-i); }else{ all+=min(m,a[i]); m-=min(m,a[i]); ans+=1ll*a[i]*(n-i+1)-1; } } } printf("%lld",ans); return 0;}
0 0
- 【jzoj4821】【打膈膜】
- 【JZOJ4821】打膈膜
- {题解}[jzoj4821]【NOIP2016提高A组模拟10.15】打膈膜
- 【NOIP模拟】打膈膜
- 【JZOJ 4821】 打膈膜
- 【NOIP2016提高A组模拟10.15】打膈膜
- 【NOIP2016提高A组模拟10.15】打膈膜
- 打膈膜 【NOIP2016提高A组模拟10.15】
- 【NOIP2016提高A组模拟10.15】打膈膜
- JZOJ 4821. 【NOIP2016提高A组模拟10.15】打膈膜
- JZOJ 4821 【NOIP2016提高A组模拟10.15】打膈膜
- R语言在线地图神器:Leaflet for R包(二)基础底图
- JSON.Net Self referencing loop detected
- python3中的configparse配置文件
- 对gcc 常用选项和简单编写
- 判断一个整数是否是回文
- 【jzoj4821】【打膈膜】
- Linux成长之路(二)——Linux目录结构和对文件的基本操作
- 拖拽案例
- C++中的纯虚函数
- zookeeper、dubbo整合搭建rpc(基于springMVC)
- 24. Swap Nodes in Pairs
- 循环链表
- BeautifulSoup安装
- HandsFree——OpenRE库学习(二)