9-25 解题报告

1.catfish

var
        n,k,ans,tot:int64;
        i,j:longint;
        a:array[0..100] of int64;
        f:array[0..40] of int64;

        begin
                assign(input,‘catfish.in‘);
                reset(input);
                assign(output,‘catfish.out‘);
                rewrite(output);
                readln(n);        f[1]:=1;
                for i:=2 to 31 do f[i]:=3*f[i-1];
                for j:=1 to n do
                begin
                        read(k); tot:=0;
                        ans:=0;
                        while k<>0 do
                        begin
                                inc(tot);
                                a[tot]:=k mod 2;
                                k:=k div 2;
                        end;
                        for i:=tot downto 1 do
                        if a[i]=1 then inc(ans,f[i]);
                        writeln(ans);
                end;
                close(input);
                close(output);
        end.

2.meal

var
        map,f,up,left,right,leftup,rightup,f1,f2:array[0..1,0..2505] of longint;
        temp,i,j,ii,k,l,m,n,max,t:longint;

        function min(a,b,c:longint):longint;
        begin
                if a<b then min:=a
                else min:=b;
                if c<min then min:=c;
        end;

        begin
                assign(input,‘meal.in‘);
                reset(input);
                assign(output,‘meal.out‘);
                rewrite(output);
                while not eof do
                begin
                        fillchar(up,sizeof(up),0);
                        fillchar(left,sizeof(up),0);
                        fillchar(right,sizeof(up),0);
                        fillchar(f1,sizeof(up),0);
                        fillchar(f2,sizeof(up),0);
                        fillchar(map,sizeof(up),10);

                        readln(n,m);
                        max:=0;
                        t:=1;
                        for i:=1 to m do
                        begin
                                read(map[t][i]);
                                if map[t][i]=1 then
                                begin
                                        rightup[t][i]:=1;
                                        leftup[t][i]:=1;
                                        f1[t][i]:=1;
                                        f2[t][i]:=1;
                                        max:=1;
                                        continue;
                                end;
                                up[t][i]:=1;
                        end;
                        readln;
                        for ii:=2 to n do
                        begin
                                t:=t xor 1;
                                for i:=1 to m do
                                begin
                                        left[t][i]:=0;
                                        right[t][i]:=0;
                                        up[t][i]:=0;
                                        leftup[t][i]:=0;
                                        rightup[t][i]:=0;
                                        f1[t][i]:=0;
                                        f2[t][i]:=0;
                                end;

                        for i:=1 to m do
                        begin
                                read(map[t][i]);
                                if map[t][i]=1 then
                                begin
                                        f1[t][i]:=1;
                                        f2[t][i]:=1;
                                        continue;
                                end;
                                left[t][i]:=1;
                                right[t][i]:=1;
                                up[t][i]:=1;
                        end;
                        readln;

                        for i:=1 to m do if map[t][i]=0 then
                        begin
                                if map[t][i-1]=0 then left[t][i]:=left[t][i-1]+1;
                                if map[t xor 1,i]=0 then up[t][i]:=up[t xor 1,i]+1;
                        end;

                        for i:=m downto 1 do if map[t][i]=0 then
                        begin
                                if map[t][i+1]=0 then right[t][i]:=right[t][i+1]+1;
                        end;

                        for i:=1 to m do if (map[t][i]=1) and (map[t xor 1][i-1]=1) then
                        begin
                                f1[t][i]:=min(left[t][i-1],up[t xor 1][i],f1[t xor 1][i-1])+1;
                                if max<f1[t][i] then max:=f1[t][i];
                        end;

                        for i:=1 to m do if (map[t][i]=1) and (map[t xor 1][i+1]=1) then
                        begin
                                f2[t][i]:=min(right[t][i+1],up[t xor 1][i],f2[t xor 1,i+1])+1;
                                if max<f2[t][i] then max:=f2[t][i];
                        end;
                        end;
                        writeln(max);
                end;
                close(input);
                close(output);
        end.

第三题指针,真心不会,熟悉pascal的大神求包养QvO

喜欢就收藏一下,vic私人qq:1064864324,加我一起讨论问题,一起进步^-^

时间: 2024-10-14 19:17:06

9-25 解题报告的相关文章

2016.8.25 NOIP2012 day1 解题报告

考试总结: 1.  显然第一道送分题,我差一点直接打表来对拍了,后来发现我们的pdf有问题不能复制,并且我没有YJQ大神那样足够的时间每道题都对拍,就只能试过样例就遁,(其实这种密码我玩过,密码学入门密码,当时好像叫凯撒密码233):对了,ASCII的掌握也很重要,我之前一直以为大写在小写后面啧.(之间漏掉过大于以后减的步骤,这种简单题还是做少了居然耗了30min,以后好好检查争取一次过): 2.  这道题我拿到的第一反应就是贪心,马上想了一个贪心规则但自己总觉得是错的,花了很长的时间举反例举不

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

Winter-2-STL-E Andy&#39;s First Dictionary 解题报告及测试数据

use stringstream Time Limit:3000MS     Memory Limit:0KB Description Andy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy task for him, as the number of words that he knows is, well, not quite enough. Instead of thin

codeforces 505A. Mr. Kitayuta&#39;s Gift 解题报告

题目链接:http://codeforces.com/problemset/problem/505/A 题目意思:给出一个长度不大于10的小写英文字符串 s,问是否能通过在字符串的某个位置插入一个字母,使得新得到的字符串成为回文串. /**************************************(又到自我反省时刻) 做的时候,通过添加一个单位使得长度增加1,找出中点,检验前一半的位置,找出对称位置替换成对应的前一半位置的字符,然后原字符串剩下的部分追加到后面,再判断回文.但是由于

CH Round #56 - 国庆节欢乐赛解题报告

最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树,其中一些树上结有能够产生能量的魔力水果.已知每个水果的位置(Xi,Yi)以及它能提供的能量Ci.然而,魔幻森林在某些时候会发生变化:(1) 有两行树交换了位置.(2) 有两列树交换了位置.当然,树上结有的水果也跟随着树一起移动.不过,只有当两行(列)包含的魔力水果数都大于0,或者两行(列)都没有魔

uva 10881 Piotr&#39;s Ants 解题报告

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1822 题目意思:有一条 L 厘米长的杆,上面有 n 只蚂蚁,给出每只蚂蚁的朝向以及离杆上最左端的距离,问 T 秒之后每只蚂蚁到达的位置,如果 T 秒后某个位置有多只蚂蚁同时到达,那么这堆蚂蚁处于的位置 + Turning,如果超过这条杆的长度,输出F

poj 3020 Antenna Placement 解题报告

题目链接:http://poj.org/problem?id=3020 题目意思:首先,请忽略那幅有可能误导他人成分的截图(可能我悟性差,反正有一点点误导我了). 给出一幅 h * w 的图,  “ * ” 表示 point of interest,“ o ” 忽略之.你可以对 " * " (假设这个 “* ”的坐标是 (i, j))画圈,每个圈只能把它四周的某一个点括住(或者是上面(i-1, j) or 下面(i+1, j) or 左边(i, j-1)  or 右边(i, j+1))

hdu 4956 Poor Hanamichi 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956(它放在题库后面的格式有一点点问题啦,所以就把它粘下来,方便读者观看) 题目意思:给出一个范围 [l, r] 你, 问是否能从中找到一个数证明 Hanamichi’s solution 的解法是错的. Hanamichi’s solution 是这样的: 对于某个数 X,从右往左数它的每一位数字(假设第一位是从0开始数).它 偶数位的数字之和 -  奇数位的数字之和  = 3  而且 这个 X

poj 1469 COURSES 解题报告

题目链接:http://poj.org/problem?id=1469 题目意思:略 for 循环中遍历的对象要特别注意,究竟是遍历课程数P 还是 学生数N,不要搞混! 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 const int maxn = 300 + 5; 7 int match[maxn], map[maxn][maxn];

poj 1789 Truck History 解题报告

题目链接:http://poj.org/problem?id=1789 题目意思:给出 N 行,每行7个字符你,统计所有的 行 与 行 之间的差值(就是相同位置下字母不相同),一个位置不相同就为1,依次累加.问最终的差值最少是多少. 额.....题意我是没看懂啦= =......看懂之后,就转化为最小生成树来做了.这是一个完全图,即每条边与除它之外的所有边都连通.边与边的权值是通过这个差值来算出来的. 1 #include <iostream> 2 #include <cstdio>