hdu 5090 Game with Pearls 2014上海全国邀请赛——题目重现
2014-11-15 18:44
495 查看
三门final exams结束之后继续我的水题大作战~~^^~~
这一题我第一眼还以为是博弈。。。最后一看N才100,直接枚举填数就可以了。
我之前还考虑会不会有这种case,比如已存在a,b,然后a+xK补b的位置,b+yK补c (c=b+yK),最后发现因为直接是K的倍数,直接a+(x+y)K补c不就行了,原先存在的数不会变动。简直智硬啊。。。
所以如果有多个a,直接+K,+2K,+3K..从小到大枚举即可。
#include<iostream>
#include<stdio.h>
#include<cstdio>
#include<stdlib.h>
#include<vector>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include <ctype.h>
using namespace std;
//hdu 5090;
int N;
int M;
int K;
int a[1000];
int main()
{
freopen("input.txt","r",stdin);
// freopen("data.txt","r",stdin);
//freopen("out1.txt","w",stdout);
scanf("%d",&M);
for(int i=0;i<M;i++)
{
memset(a,0,sizeof(a));
scanf("%d %d",&N,&K);
for(int i=1;i<=N;i++)
{
int t=0;
scanf("%d",&t);
a[t]++;
}
for(int i=1;i<=N;i++)
{
if(a[i]>1)
{
int cnt=1;
while(a[i]>1&&(i+cnt*K)<=N)
{
if(a[i+cnt*K]==0)
{
a[i]--;
a[i+cnt*K]++;
//break;
}
cnt++;
}
}
}
bool flg=true;
for(int i=1;i<=N;i++)
{
if(a[i]==0)
{
printf("Tom\n");
flg=false;
break;
}
}
if(flg)
{
printf("Jerry\n");
}
}
return 0;
}
这一题我第一眼还以为是博弈。。。最后一看N才100,直接枚举填数就可以了。
我之前还考虑会不会有这种case,比如已存在a,b,然后a+xK补b的位置,b+yK补c (c=b+yK),最后发现因为直接是K的倍数,直接a+(x+y)K补c不就行了,原先存在的数不会变动。简直智硬啊。。。
所以如果有多个a,直接+K,+2K,+3K..从小到大枚举即可。
#include<iostream>
#include<stdio.h>
#include<cstdio>
#include<stdlib.h>
#include<vector>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include <ctype.h>
using namespace std;
//hdu 5090;
int N;
int M;
int K;
int a[1000];
int main()
{
freopen("input.txt","r",stdin);
// freopen("data.txt","r",stdin);
//freopen("out1.txt","w",stdout);
scanf("%d",&M);
for(int i=0;i<M;i++)
{
memset(a,0,sizeof(a));
scanf("%d %d",&N,&K);
for(int i=1;i<=N;i++)
{
int t=0;
scanf("%d",&t);
a[t]++;
}
for(int i=1;i<=N;i++)
{
if(a[i]>1)
{
int cnt=1;
while(a[i]>1&&(i+cnt*K)<=N)
{
if(a[i+cnt*K]==0)
{
a[i]--;
a[i+cnt*K]++;
//break;
}
cnt++;
}
}
}
bool flg=true;
for(int i=1;i<=N;i++)
{
if(a[i]==0)
{
printf("Tom\n");
flg=false;
break;
}
}
if(flg)
{
printf("Jerry\n");
}
}
return 0;
}
相关文章推荐
- hdu 5092 Seam Carving 2014上海全国邀请赛——题目重现
- HDU 5097 Page Rank(矩阵模拟)——2014上海全国邀请赛——题目重现(感谢上海大学提供题目)
- HDU 5090 Game with Pearls(上海邀请赛水题)
- 【HDU】2014上海全国邀请赛——题目重现(感谢上海大学提供题目) 题解
- 2014上海全国邀请赛1001(hdu 5090)
- 2014上海全国邀请赛(hdu 5090 - 5099)dp+线段树+拓扑排序+bfs(状态压缩)
- 2014上海全国邀请赛——题目重现 4.24
- HDU5092 Seam Carving(2014上海全国邀请赛——题目重现)(DP)
- HDU5099——Comparison of Android versions(简单题)(2014上海邀请赛重现)
- HDU 5090 Game with Pearls
- 【二分匹配】 HDU 5090 Game with Pearls
- hdu 4576 robot 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现-1001-robot
- hdu 4497 GCD and LCM(2013 ACM-ICPC吉林通化全国邀请赛——题目重现)
- hdu 5090 Game with Pearls
- hdu 5090 Game with Pearls
- 2014上海全国邀请赛1003(hdu 5092)
- HDU 5090 Game with Pearls(贪心, 二部图最大匹配)
- hdu 5090 Game with Pearls(最大匹配)
- 2014上海全国邀请赛题解 HDOJ 5090-5099
- 2014上海全国邀请赛1010(hdu 5099)