【POJ1323】Game Prediction 博弈,或者说贪心(本博客用栈处理)

题意:

输入m,n,表示有若干张卡牌,权值两两不同,且最大为m*n,交给至多m个人。

每回合所有人各出一张牌,权值最大者胜!

现在主角手里有n张牌,问他至少能赢多少局。

题解:

贪心。每次出最大牌看是否可以有人压制你。

或者换一种说法,就是所有人一起坑你,而且提前知道了你出什么牌,总之就是各种坑你!所以我们不考虑能赢多少把,我们考虑有多少把会输!再转换一下就是看多少张牌必赢,怎么针对都没用!

实现:不存东西的栈。没看懂就看代码。。。水水的~

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 10000
using namespace std;
int n,m,top,ans;
bool visit[N];
int main()
{
//	freopen("test.in","r",stdin);
	int i,j,k,t=0;
	while(scanf("%d%d",&m,&n),m&&n)
	{
		printf("Case %d: ",++t);
		m*=n;ans=top=0;
		memset(visit,0,sizeof(visit));
		for(i=1;i<=n;i++)
		{
			scanf("%d",&k);
			visit[k]=1;
		}
		for(i=m;i;i--)
		{
			if(visit[i])
			{
				if(top)top--;
				else ans++;
			}
			else top++;
		}
		printf("%d\n",ans);
	}
	return 0;
}
时间: 2024-07-30 07:42:11

【POJ1323】Game Prediction 博弈,或者说贪心(本博客用栈处理)的相关文章

本博客已经搬家,更多阅读请移驾:http://www.doranwin.com

本博客已经搬家,更多阅读请移驾:http://www.doranwin.com

进程篇(1: 进程运行环境)--请参照本博客“操作系统”专栏

2014年5月30日  下午1:40:59 1. Unix 进程执行环境: 1.1 终止处理程序: ISO C 规定,一个程序可以登记多达32个函数,这些函数将由exit自动调用.我们称这些函数为终止处理程序(exit handler),并调用atexit函数来登记这些函数.该函数的原型如下: 1 #include <stdlib.h>2 3 int atexit(void (*function)(void)); exit调用这些终止程序的顺序与他们登记时的顺序相反(先登记后调用).同一个函数

重要声明——本博客已迁往博客园

由于CSDN经常打不开,经慎重考虑,决定迁往博客园. ====================================================== 写在博客园的博客,我会定期使用博客搬家功能搬往CSDN博客做备份. ====================================================== 新博客地址:http://www.cnblogs.com/wlsandwho/ =======================================

基于本博客版本中的循环缓冲的测试(Linux环境)

#include <stdlib.h> #include <stdio.h> #include <pthread.h> #include "ringbuffer.h" static int b_flag = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; #define TX_LOCK(lock) pthread_mutex_lock(&lock) #define TX_UNLOCK

本博客博文总目录-实时更新

开源Math.NET基础数学类库使用系列文章总目录:   1.开源.NET基础数学计算组件Math.NET(一)综合介绍    2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算    3.开源.NET基础数学计算组件Math.NET(三)C#解析Matlab的mat格式   4.开源.NET基础数学类库使用Math.NET(四)C#解析Matrix Marke数据格式   5.开源.NET基础数学类库使用Math.NET(五)C#解析Delimited Formats数据格式

进程篇(4: 基本进程控制:其他相关控制)--请参照本博客“操作系统”专栏

1. 更改进程的用户ID和组ID:为什么我们要更改用户ID和组ID的呢? 在UNIX系统中,特权是基于用户和组ID的.当用户需要增加特权,或要访问某个当前没有能力访问的文件时,我们需要更改自己的权限,以让新的ID具有合适的特权或访问权限.与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要跟换用户ID或组ID;一般而言,在设计应用程序时,我们总是试图使用"最小特权"模型.依照此模型,我们的程序应当值具有为完成特定的任务所需要的最小特权. NAME getuid, geteui

进程篇(2: C程序的存储空间布局)--请参照本博客“操作系统”专栏

1.  C程序的存储空间布局: C 程序由下面几个部分组成: 正文段(即是代码段): 这是由CPU执行的机器指令部分.通常,正文段是可以共享的,并常常是可读的,以防止程序因为意外原因而修改自身的代码! 初始化数据段(即数据段): 它包含了程序中需要明确的赋初值的变量. 非初始化数据段(bss段):在程序开始执行之前,内核将此段中的数据初始化为0或空指针. 栈.自动变量以及每次函数调用时所需保存的信息都存放在此段中.每次调用函数时,返回地址以及调用者的环境信息(如某些寄存器的值)都存放在栈中.然后

DBO权限日志备份专用一句话木马 - 寒龙网出品 以前的博客站因为程序错乱改为反病毒联盟后 本博客基于博客园地 感谢关注

备分专用一句话 加个response.end会有不一样的效果,也就是插入一句话后所有的代码都无效,在一句话这里打止,也就减小了webshell的大小. 日志备分WEBSHELL标准的七步: 1.InjectionURL';alter database XXX set RECOVERY FULL-- (把sql设置成日志完全恢复模式) 2.InjectionURL';create table cmd (a image)-- (新建立一个cmd表) 3.InjectionURL';backup lo

本博客停止更新

离线编辑工具又挂了,很生气很生气很生气,抓包分析了半天传大图片的时候总是给我RST,心累,决定弃用博客园改为自己开发独立博客,本博客不再更新. 独立博客正在开发中... by CC11001100 2017-7-29 17:42:56