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. 51nod1346 递归

    我终于知道我有多么蠢了...推规律根本不带我这么推的...跟51nod那场比赛的傻逼B题一样,想都不想想就打表找规律...智障啊找规律也要按照基本法! //f[1][2]=a[1][2] f[2][1 ...

  2. HDU 3790 最短路径问题【Dijkstra】

    题意:给出n个点,m条边,每条边的长度d和花费p,给出起点和终点的最短距离和花费,求最短距离,如果有多个最短距离,输出花费最少的 在用dijkstra求最短距离的时候,再用一个f[]数组保存下最少花费 ...

  3. java MVC设计模式

    MVC(Model View Control)模型-视图-控制器 一.MVC与模板概念的理解 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是 ...

  4. hibernate一个注册小例子

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXUAAAJ2CAIAAAAv44WsAAAgAElEQVR4nO29a3QUVaL33fPhfHrW8y

  5. IntelliJ IDEA使用总结篇

    解决控制台中文乱码的问题: 1.windows下改intellij安装目录下bin\idea.exe.vmoptions文件 加上 -Dfile.encoding=UT 2.设置IDEA server ...

  6. MySQL集群的可行方案

    如果单MySQL的优化始终还是顶不住压力时,这个时候我们就必须考虑MySQL的高可用架构(很多同学也爱说成是MySQL集群)了,目前可行的方案有: 一.MySQL Cluster优势:可用性非常高,性 ...

  7. erl0009 - erlang 读取时间瓶颈解决办法

    读取时间erlang提供有两种方式: 1.erlang:now(); 2.os:timestamp(); 以上两种方式由于erlang系统需要保证读取精度,当并发读取的时候会引起加锁.系统频繁读取时间 ...

  8. 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法

    课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...

  9. [转] gc tips(2)

    原文地址:http://kevincao.com/2011/08/actionscript-garbage-collection-1/ 谈谈ActionScript垃圾回收(上) 在<给AS程序 ...

  10. POJ 2249 Binomial Showdown

    // n 个 数 取 k个数的取法// C(n,k) 注意些细节#include <iostream> #include <string> #include<sstrea ...