zoukankan      html  css  js  c++  java
  • 【BZOJ3709】 [PA2014]Bohater(贪心)

    传送门

    BZOJ

    Solution

    考虑如果可以回血肯定要打,那么就是按照伤害值从小到大排个序能打就打,不能打就(NIE)
    接着看不能够回血的,emmm,把这个过程反着看一下就是打一个怪扣(a_I)的血,加(d_i)的血。
    咦?怎么和上面那一个一样啊?然后就可以解决了!

    代码实现

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<queue>
    #include<set>
    #include<map>
    #include<iostream>
    using namespace std;
    #define re register
    #define ll long long
    #define int ll
    inline int gi()
    {
    	int f=1,sum=0;char ch=getchar();
    	while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    	while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
    	return f*sum;
    }
    const int N=100010;
    struct node
    {
    	int d,a,id;
    }a[N],live[N],fuck[N];
    int n,z,q1,q2;
    bool cmp1(node a,node b)
    {
    	return a.d<b.d;
    }
    bool cmp2(node a,node b)
    {
    	return a.a<b.a;
    }
    void naive()
    {
    	puts("NIE");
    	exit(0);
    }	  
    signed main()
    {
    	n=gi(),z=gi();int lz=z;
    	for(int i=1;i<=n;i++){a[i].id=i;a[i].d=gi(),a[i].a=gi();lz=lz-a[i].d+a[i].a;}
    	for(int i=1;i<=n;i++)
    		if(a[i].d<=a[i].a)live[++q1]=a[i];
    		else fuck[++q2]=a[i];
    	sort(live+1,live+q1+1,cmp1);
    	for(int i=1;i<=q1;i++)
    	{
    		if(z<=live[i].d)naive();
    		z-=live[i].d;z+=live[i].a;
    	}
    	sort(fuck+1,fuck+q2+1,cmp2);
    	for(int i=1;i<=q2;i++)
    	{
    		if(lz<=fuck[i].a)naive();
    		lz-=fuck[i].a;lz+=fuck[i].d;
    	}
    	puts("TAK");
    	for(int i=1;i<=q1;i++)
    		printf("%lld ",live[i].id);
    	for(int i=q2;i;--i)
    		printf("%lld ",fuck[i].id);
    	puts("");
    	return 0;
    }
    
  • 相关阅读:
    UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)
    Codeforces 482E ELCA (LCT)
    Codeforces 798D Mike and distribution (构造)
    AtCoder AGC017C Snuke and Spells
    HDU 6089 Rikka with Terrorist (线段树)
    HDU 6136 Death Podracing (堆)
    AtCoder AGC032D Rotation Sort (DP)
    jenkins+python+kubectl实现批量更新k8s镜像
    Linux 下载最新kubectl版本的命令:
    jenkins X 和k8s CI/CD
  • 原文地址:https://www.cnblogs.com/mleautomaton/p/10568959.html
Copyright © 2011-2022 走看看