1003 Mine

简单sg的博弈题,我们走入了nim博弈的误区,后来发现改了三四个字符就过了。。。。我只能说我是sbsbsbsbsbsb。。。判奇偶啊。。。

#pragma comment(linker,"/STACK:102400000,102400000")//用的是dfs搜索,写得挫,不加上这个且用C++交就跪了。。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<vector>
#define mem(a,b) memset(a,b,sizeof(a))
#define FOR(a,b,i) for(i=a;i<=b;++i)
#define For(a,b,i) for(i=a;i<b;++i)
#define N 9973
using namespace std;
inline void RD(int &ret)
{
char c;
do
{
c=getchar();
}
while(c<'0'||c>'9');
ret=c-'0';
while((c=getchar())>='0'&&c<='9')
{
ret=ret*10+(c-'0');
}
}
inline void OT(int a)
{
if(a>=10)
{
OT(a/10);
}
putchar(a%10+'0');
}
int n,m,k;
int sum[1005][1005];
int used[1005][1005];
int s[1000005];
int shu,shuk,ans;
int dx[9]={-1,-1,-1,0,0,1,1,1};
int dy[9]={-1,0,1,-1,1,-1,0,1};
void dfs(int x,int y)//用的就是施教主写的
{//这里的目的就是求空白部分周围的数字块数量
int i;
used[x][y]=1;
for(i=0;i<8;i++)
{
if(x+dx[i]>=0&&x+dx[i]<n&&y+dy[i]>=0&&y+dy[i]<m)
{
if(used[x+dx[i]][y+dy[i]]==0&&sum[x+dx[i]][y+dy[i]]==0)
{
dfs(x+dx[i],y+dy[i]);
}
}
}
for(i=0; i<8; i++)
{
if(x+dx[i]>=0&&x+dx[i]<n&&y+dy[i]>=0&&y+dy[i]<m)
{
if(used[x+dx[i]][y+dy[i]]==0&&sum[x+dx[i]][y+dy[i]]>0)
{
used[x+dx[i]][y+dy[i]]=1;
shuk++;
}
}
}
}
int main()
{
int t,cas,i,j,a,b;
while(scanf("%d",&t)!=EOF)
{
cas=0;
while(t--)
{
cas++;
RD(n);
RD(m);
RD(k);
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
sum[i][j]=0;
used[i][j]=0;
}
}
for(i=0; i<k; i++)
{
RD(a);
RD(b);
for(j=0; j<8; j++)
{
if(a+dx[j]>=0&&a+dx[j]<n&&b+dy[j]>=0&&b+dy[j]<m)
{
sum[a+dx[j]][b+dy[j]]++;
}
}
used[a][b]=1;
}
shu=0;
for(i=0; i<n; i++)
{
for(j=0; j<m;j++)
{
if(used[i][j]==0)
{
if(sum[i][j]==0)//判奇偶,如果为奇数算作两块,偶数为一块
{
shuk=0;
dfs(i,j);
s[shu]=shuk%2+1;//就这里改了一下就AC了,哭啊
shu++;
}
}
}
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(used[i][j]==0)//其它单独数字块各为1块
{
s[shu]=1;
shu++;
}
}
}
ans=0;
for(i=0;i<shu;i++)
{
ans^=s[i];//异或一下就行了
}
printf("Case #%d: ",cas);
if(ans!=0)
{
printf("Xiemao\n");
}
else
{
printf("Fanglaoshi\n");
}
}
}
return 0;
}

1006 String

一道求最长公共子串的水题。。。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof(a))
#define FOR(a,b,i) for(i=a;i<=b;++i)
#define For(a,b,i) for(i=a;i<b;++i)
using namespace std;
inline void RD(int &ret)
{
char c;
do
{
c=getchar();
}
while(c<'0'||c>'9');
ret=c-'0';
while((c=getchar())>='0'&&c<='9')
{
ret=ret*10+(c-'0');
}
}
inline void OT(int a)
{
if(a>=10)
{
OT(a/10);
}
putchar(a%10+'0');
}
char a[1005],b[1005],c[1005];
int dp1[1005][1005],dp2[1005][1005],sum[4005][2],tmp,l1,l2,l3;
void lcs(char *str,int l)//求最长公共子串
{
int i,j,k;
FOR(1,l,i)
{
if(str[i]==c[1])
{
k=1;
for(j=i;j<=l&&k<=l3;j++)
{
if(str[j]==c[k])
{
k++;
}
}
if(k!=l3+1)
{
break;
}
sum[tmp][0]=i;
sum[tmp][1]=j-1;
tmp++;
}
}
}
int main()
{
int t,cas=0,i,j,x,y,ans;
RD(t);
while(t--)
{
cas++;
scanf("%s%s%s",a+1,b+1,c+1);
l1=strlen(a+1);
l2=strlen(b+1);
l3=strlen(c+1);
mem(dp1,0);
mem(dp2,0);
FOR(1,l1,i)//dp过程
{
FOR(1,l2,j)
{
if(a[i]==b[j])
{
dp1[i][j]=dp1[i-1][j-1]+1;
}
else
{
dp1[i][j]=max(dp1[i-1][j],dp1[i][j-1]);
}
}
}
for(i=l1; i>=1; i--)
{
for(j=l2; j>=1; j--)
{
if(a[i]==b[j])
{
dp2[i][j]=dp2[i+1][j+1]+1;
}
else
{
dp2[i][j]=max(dp2[i+1][j],dp2[i][j+1]);
}
}
}
tmp=0;
lcs(a,l1);
x=tmp;
lcs(b,l2);
y=tmp-x;
ans=0;
For(0,x,i)
{
For(0,y,j)
{
ans=max(ans,dp1[sum[i][0]-1][sum[j+x][0]-1]+dp2[sum[i][1]+1][sum[j+x][1]+1]);
}
}
printf("Case #%d: %d\n",cas,ans+l3);
}
return 0;
}

1004 我们队也做出来了,但我暂时还没有研究,据说是个treeDP,但貌似是枚举树的直径。。不懂啦,等待AC

[置顶] 2013 Multi-University Training Contest 8的更多相关文章

  1. Integer Partition(hdu4658)2013 Multi-University Training Contest 6 整数拆分二

    Integer Partition Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...

  2. Partition(hdu4651)2013 Multi-University Training Contest 5

    Partition Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków

    ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...

  4. Partition(hdu4651)2013 Multi-University Training Contest 5----(整数拆分一)

    Partition Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  5. JSU 2013 Summer Individual Ranking Contest - 5

    JSU 2013 Summer Individual Ranking Contest - 5 密码:本套题选题权归JSU所有,需要密码请联系(http://blog.csdn.net/yew1eb). ...

  6. 2016 Multi-University Training Contest 2

    8/13 2016 Multi-University Training Contest 2官方题解 数学 A Acperience(CYD)题意: 给定一个向量,求他减去一个  α(>=0)乘以 ...

  7. HDU4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)

    Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. Delphi窗体置顶及失去焦点后取得焦点

    unit u_FrmTopMostActive; interface uses Winapi.Windows; implementation // 窗体置顶 procedure SetXwForegr ...

  9. HDU 2018 Multi-University Training Contest 3 Problem A. Ascending Rating 【单调队列优化】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/500 ...

随机推荐

  1. HDU 1074 Doing Homework

    第一次做这道题大概是半个月前了吧,状压DP一个很新鲜的名词 当时看题解怎么也看不懂,现在看懂了以后还是很简单的 所谓状态压缩就是用一个整数的二进制来表示一个状态,比如有三个作业 000表示一科作业也没 ...

  2. 【经验】Windows7、8、8.1 MSI安装错误Error Code 2502 & 2503 解决方法

    [因] 今天升级TortoiseSVN到1.8.8,出现问题:Error Code 2502 & 2503,一直不能安装成功. 上网一搜,国内没找到好的解决方法,在一个外文网上找到了方案,原链 ...

  3. 如何拷贝CMD命令行文本到粘贴板

    /********************************************************************* * 如何拷贝CMD命令行文本到粘贴板 * To copy ...

  4. Android Studio 学习 - 基本控件的使用;Intent初学

    Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本 ...

  5. 实现输出h264直播流的rtmp服务器

    RTMP(Real Time Messaging Protocol)是常见的流媒体协议,用来传输音视频数据,结合flash,广泛用于直播.点播.聊天等应用,以及pc.移动.嵌入式等平台,是做流媒体开发 ...

  6. Android 动画 6问6答

    1.view 动画有哪些需要注意的? 答:view动画 本身比较简单.http://www.cnblogs.com/punkisnotdead/p/5179115.html 看这篇文章的第五问就可以了 ...

  7. 设计模式-单键(Singleton)

    [摘要]   在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率. 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这应该 ...

  8. synchronized作用范围及用法

    1.多线程的同步: 1.1.同步机制: 在多线程中,可能有多个线程试图访问一个有限的资源,必须预防这种情况的发生.所以引入了同步机制:在线程使用一个资源时为其加锁,这样其他的线程便不能访问那个资源了, ...

  9. [转] VS 整合NUnit进行单元测试

    Jeff Wong原文 5分钟实现VS2010整合NUnit进行单元测试 1.下载安装NUnit(最新win版本为NUnit-2.6.0.12051.msi) http://www.nunit.org ...

  10. Oracle数据库中有关记录个数的查询

    一.查询表中全部的记录个数 可用两种方法,一种是在oracle的系统表中统计,另一种需要写存储过程统计,方法分别如下. 1.系统表中统计: SELECT sum(num_rows) FROM user ...