解题报告 有人问我西来意解释能解释reduce方法吗 看不懂

《枭傲》里的看看不懂有人和我解释下吗?_龙印战神吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:12,650贴子:
《枭傲》里的看看不懂有人和我解释下吗?
接着这个贴吧问问
传的那么好,吴曦是射门...
Itano2:嘻嘻...应该是G...
乾如萍的阵法和修为,就...
为什么合卡的时候显示2...
人族有半圣,亚圣,圣人...
我这人接受新生事物比较...
调节贫富差距的意思是不...
只提供个人意见以供参考...
1.qy就是蚯蚓的意思2.cq...
好的话剧,坚决不能错过,价格也很重要!
半步出过番外的,里面有说
番外哪里有?
番外哪里有?我都没找到
贴吧也有番外
是在内测中找到的一个线索,后来公爵通过这个线索在公测版本中找到了那个道具,好像是叫奥术傀儡来的,看看不懂是公爵以前用的小号,那是审核还不严格,本来是以为到了夜爵不能用,结果在内测中找到了那个,其实烈火狂乱的会长也知道公爵有这个小号。
百度小说人气榜
贴吧热议榜
使用签名档&&
保存至快速回贴sohocoder收集全网最新、最全项目(pythontip出品)
reduce解法
【 解题报告】-- reduce解法
dym198921 发表于
14:31:19 |
global countercounter = 0def quwei(a,b):&&& global counter&&& c = a*b&&& while& c % 10 == 0:&&&&&&& c = c/10&&&&&&& counter = counter +1&&& return creduce(quwei,L) print counter
谈谈你的看法:&&&&&&&&&&&&&
P1978神奇的幻方
幻方是一种很神奇的 N & N 矩阵:它由数字 1,2,3, & & , N & N 构成,且每行、每列及两条对角线上的数字之和都相同。
当 N 为奇数时,我们可以通过以下方法构建一个幻方: 首先将 1 写在第一行的中间。
之后,按如下方式从小到大依次填写每个数 K(K = 2,3, & , N & N) :
若 (K & 1) 在第一行但不在最后一列,则将 K 填在最后一行, (K & 1) 所在列的右一列;
若 (K & 1) 在最后一列但不在第一行,则将 K 填在第一列,(K & 1) 所在行的上一行;
若 (K & 1) 在第一行最后一列,则将 K 填在 (K & 1) 的正下方;
若 (K & 1) 既不在第一行,也不在最后一列,如果 (K & 1) 的右上方还未填数, 则将 K 填在(K & 1)的右上方,否则将 K 填在 (K & 1) 的正下方。
现给定 N,请按上述方法构造 N & N 的幻方。
一个整数 N,即幻方的大小。
输出文件包含 N 行,每行 N 个整数,即按上述方法构造出的 N & N 的幻方。相邻两个整数之间用单个空格隔开。
对于 100% 的数据,1 & N & 39 且 N 为奇数。
P1979信息传递
有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为&TiTi&的同学。
游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?
输入共 2 行。
第 1 行包含 1 个正整数 n,表示 n 个人。
第 2 行包含 n 个用空格隔开的正整数&T1T1,&T2T2, & & ,&TnTn,其中第 i 个整数TiTi表示编号为 i 的同学的信息传递对象是编号为&TiTi&的同学,&TiTi&& n 且&TiTi&& i。
数据保证游戏一定会结束。
输出共 1 行,包含 1 个整数,表示游戏一共可以进行多少轮。
对于 30%的数据, n & 200;
对于 60%的数据,n & 2500;
对于 100%的数据,n & 200000。
【输入输出样例 1 说明】
游戏的流程如图所示。当进行完第 3 轮游戏后,4 号玩家会听到 2 号玩家告诉他自己的生日,所以答案为 3。当然,第 3 轮游戏后,2 号玩家、3 号玩家都能从自己的消息来源得知自己的生日,同样符合游戏结束的条件。
P1980斗地主
牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、 方片的 A 到 K 加上大小王的共 54 张牌来进行的扑克牌游戏。在斗地主中,牌的大小关系根据牌的数码表示如下:3&4&5&6&7&8&9&10&J&Q&K&A&2&小王&大王,而花色并不对牌的大小产生影响。每一局游戏中,一副手牌由 n 张牌组成。游戏者每次可以根据规定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。
现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它们打光。请你帮他解决这个问题。
需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。
具体规则如下:
第一行包含用空格隔开的 2 个正整数 T, n ,表示手牌的组数以及每组手牌的张数。
接下来 T 组数据,每组数据 n 行,每行一个非负整数对&ai,biai,bi,表示一张牌,其中&aiai&表示牌的数码,bibi&表示牌的花色,中间用空格隔开。特别的,我们用 1 来表示数码 A,11 表示数码 J,12 表示数码 Q,13 表示数码 K;黑桃、红心、梅花、方片分别用 1-4 来表示;小王的表示方法为 0 1,大王的表示方法为 0 2。
共 T 行,每行一个整数,表示打光第 i 组手牌的最少次数。
对于不同的测试点,我们约定手牌组数 T 与张数 n 的规模如下:
测试点编号
测试点编号
数据保证:所有的手牌都是随机生成的。
【输入输出样例 1 说明】共有 1 组手牌,包含 8 张牌:方片 7,方片 8,黑桃 9,方片 10,黑桃 J,黑桃 5,方片 A 以及黑桃 A。可以通过打单顺子(方片 7,方片 8,黑桃 9,方片 10,黑桃 J),单张牌(黑桃 5)以及对子牌(黑桃 A 以及方片 A)在 3 次内打光。
解题报告:
  第一题:直接模拟判断就可以了。
1 #include&iostream&
2 #include&cstdio&
3 #include&cstring&
4 using namespace
5 int x,y,n,mp[44][44];
6 int main()
freopen("magic.in","r",stdin);
freopen("magic.out","w",stdout);
if (n==1){
x=1,y=n/2+1;
mp[x][y]=1;
for (int i=2;i&=n*n;i++)
if (x==1&&y!=n) {
mp[n][y+1]=i;
x=n;y=y+1;
else if (x!=1&&y==n){
mp[x-1][1]=i;
x=x-1;y=1;
else if (x==1&&y==n){
mp[x+1][y]=i;
else if (x!=1&&y!=n){
if (!mp[x-1][y+1]){
mp[x-1][y+1]=i;
x-=1;y+=1;
mp[x+1][y]=i;
for (int i=1;i&=n;i++)
for (int j=1;j&n;j++)
printf("%d ",mp[i][j]);
printf("%d\n",mp[i][n]);
  第二题:本来想直接dfs,结果忽略了可能有很多个图的情况。改了之后,发先还是有问题,因为如果用vis来判断的话,有可能进入dfs的下一个节点就是vis=true的,但是并不是一个环,这里就退出肯定会影响结果。当然,也不用找到环后再递归路径,直接一个数组记录时间戳,找到后相减就可以。当然,tarjan肯定可以解决这个问题。
1 #include&iostream&
2 #include&cstring&
3 #include&cstdio&
4 #define maxn 200005
5 using namespace
6 int n,u[maxn],ans=,tme[maxn],now = 1;
7 bool ben[maxn];
8 void dfs(int p){
memset(ben,0,sizeof(ben));
while(!tme[p]){
tme[p]=now++;
if(ben[u[p]]){
ans=min(tme[p]-tme[u[p]]+1,ans);
20 int main(){
freopen("message.in","r",stdin);
freopen("message.out","w",stdout);
scanf("%d",&n);
for(int i = 1;i&=n;i++)scanf("%d",&u[i]);
for(int i = 1;i&=n;i++){
if(!tme[i]) dfs(i);
printf("%d\n",ans);
  第三题:dfs。但是考试的时候并不想写,写了一个30分结果都错了。。。预处理出每种牌的个数,把大小王存在p[0],p[1]中,A存在p[14]中,先贪心先算顺子(单、双、三顺子),然后再在每次dfs时算四带二(或四张牌)和三带一(或三张牌)(这之中要有一个cnt数组记录有1、2、3、4张的牌有几种,并且要排除大小王充当对子的情况!)。
1 #include&iostream&
2 #include&cstdio&
3 #include&cstring&
4 #include&algorithm&
6 #define ll long long
7 using namespace
8 int n,t,cnt[maxn],p[maxn];
10 int find()
int x=0;// 局部步数
memset(cnt,0,sizeof (cnt));
for (int i=0;i&15;i++) cnt[p[i]]++;
while (cnt[4]){
cnt[4]--;x++;
if (cnt[2]&=2) cnt[2]-=2;
else if (cnt[1]&=2) cnt[1]-=2;
while (cnt[3]){
cnt[3]--;x++;
if (cnt[2]) cnt[2]-=1;
else if (cnt[1]) cnt[1]-=1;
if (p[0]&&p[1]&&cnt[1]&=2) x--;
return x+cnt[1]+cnt[2];
28 void dfs(int x)
if (x&ans) return ;
int tmp=find();
if (x+tmp&ans) ans=x+
for (int i=3;i&15;i++)//单顺子
while (p[j]&&j&15){
if (j-i+1&=5) dfs(x+1);
while (j&i) p[--j]++;
for (int i=3;i&15;i++)//双顺子
while (p[j]&=2&&j&15){
if (j-i+1&=3) dfs(x+1);
while (j&i) p[--j]+=2;
for (int i=3;i&15;i++)//三顺子
while (p[j]&=3&&j&15){
if (j-i+1&=2) dfs(x+1);
while (j&i) p[--j]+=3;
64 int main()
freopen("landlords.in","r",stdin);
freopen("landlords.out","w",stdout);
cin&&t&&n;
for (int k=1;k&=t;k++)
memset(p,0,sizeof (p));
for (int i=1;i&=n;i++)
scanf("%d%d",&x,&y);
if (x==0) p[y-1]++;
else if (x==1) p[14]++;
else p[x]++;
printf("%d\n",ans);
&posted on
阅读(...) 评论()

我要回帖

更多关于 有人问我西来意解释 的文章

 

随机推荐