真是没sei了,各种不在状态,又困又累,脑袋就和要炸了一样,也不知道怎么了。四个小时真是一点没浪费,真的算是重新审视了一下自己。这一阵一直乱七八糟的搞来搞去,也没点目的性,算是一直在看算法,算法也没说有多少精进,数学类型靠思维的真的感觉有点无力,反应真的很慢,感觉做题还是太少了,涉猎的面太窄,既然知道了,接下来就去做吧,时间略紧。下面进入正题:
FF喜欢博弈,今天又开始了一场博弈。
将n个棋子摆成一条直线,编号为1到n。两个人轮流取棋子,每回合取一次且只能按照下述两种方法的一种取。
1,任取一个棋子。
2,任取两个棋子且这两个棋子的编号是连续的。
FF为了彰显高手风范总是让对方先手。现在假设两个人都足够聪明,对于给出的n,FF是否能赢。取得最后一个棋子的选手获得胜利。
1 2
Why are you so ben? Why are you so ben?
这道题我真是不知道怎么说,一开始直接没画粗来,后来想着原先做过一个圆桌铺硬币,好像是先弄的那个人赢,所以我在想是不是这道题也是这样,然后。。。你懂得,A了。若是某位大牛此时再看,你恰好会,请留言,不胜感激。
#include
int main()
{
int n;
while(~scanf("%d",&n))
{
printf("Why are you so ben?\n");
}
return 0;
}
FF得到了一个有n个数字的集合。不要问我为什么,有钱,任性。
FF很好奇的想知道,对于数字x,集合中有多少个数字可以在x前面添加任意数字得到。
如,x = 123,则在x前面添加数字可以得到4123,5123等。
对于每组数据
首先输入n(1<= n <= 100000)。
接下来n行。每行一个数字y(1 <= y <= 100000)代表集合中的元素。
接下来一行输入m(1 <= m <= 100000),代表有m次询问。
接下来的m行。
每行一个正整数x(1 <= x <= 100000)。
3 12345 66666 12356 3 45 12345 356
1 0 1
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int a[100010];
int hash[100010];
int main()
{
int n,m,x;
int i,j,t;
int flag;
int cnt;
int site,site1;
while(~scanf("%d",&n))
{
memset(hash,0,sizeof(hash));
for(i=0; i
2 1 1 1 2
1
#include
#include
#include
#include
using namespace std;
#define inf 99999999
int map[310][310];
int dis[310];
int vis[310];
int sum;
struct node
{
int x,y;
}q[1010];
void prim(int n)
{
int i,j,k;
int min;
sum=0;
memset(vis,0,sizeof(vis));
for(i=1;i<=n;i++)
dis[i]=map[1][i];
dis[1]=0;
vis[1]=1;
for(i=2;i<=n;i++)
{
min=inf;
for(j=1;j<=n;j++)
{
if(dis[j]map[j][k]&&!vis[j])
{
dis[j] = map[j][k];
}
}
}
printf("%d\n",sum);
}
int main()
{
int n,m;
int i,j;
while(~scanf("%d",&n))
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)
map[i][j]=0;
else
map[i][j]=inf;
}
}
for(i=1;i<=n;i++)
{
scanf("%d %d",&q[i].x,&q[i].y);
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
{
m=((q[i].x-q[j].x)*(q[i].x-q[j].x) + (q[i].y-q[j].y)*(q[i].y-q[j].y));
map[i][j]=map[j][i]=m;
}
prim(n);
}
return 0;
}
否则输出 Why are you so ben? 。
1700 1 1 1699 100 1 0 0 0
0.000 1.000 Why are you so ben?
#include
#include
#include
#include
using namespace std;
int main()
{
int x,a,b;
int n;
double p;
double cnt;
double qw;
while(~scanf("%d %d %lf",&x,&a,&p))
{
if(x==1700)
printf("0.000\n");
else if(x>=0&&x<1700)
{
if(a==0||p==0)
printf("Why are you so ben?\n");
else
{
int b=1700-x;
if(b%a!=0)
cnt=b/a+1;
else
cnt=b/a;
qw=cnt/p;
//printf("%d\n",cnt);
printf("%.3lf\n",qw);
}
}
}
return 0;
}
FF有一本密码本,每一页上有一个数字x(1 <= x <= 2000000),并且两两不相等。
可以有一天一个小偷偷走了其中一页,FF想知道小偷偷走了那个数字。
首先一个数组n <= 2000000,代表密码本的页数。
接下来的一行有n个数,代表完整的密码本。
接下来的一行有n-1个数,代表残缺的密码本。
3 1 2 3 3 1
2
#include
#include
#include
#include
#include
using namespace std;
int a[2000010];
int b[2000010];
int main()
{
int n,i,j;
int flag=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(j=1;j<=n-1;j++)
scanf("%d",&b[j]);
sort(a+1,a+n+1);
sort(b+1,b+n);
for(i=1;i<=n;i++)
{
if(a[i]!=b[i])
{
printf("%d\n",a[i]);
flag=1;
break;
}
}
if(!flag)
printf("%d\n",a[i-1]);
return 0;
}