9-22考试题目 结题报告

const letter=[‘0‘..‘9‘]+[‘a‘..‘f‘];
      inf=‘encode.in‘;
      ouf=‘encode.out‘;
var
        a:array [1..9,1..32] of longint;
        f:array [1..33,0..100] of longint;
        pa:array [1..33,0..100] of longint;
        ans,m:string;

        procedure getstr(var s:string);
        var ch:char;
        begin
        repeat
                read(ch);
                until ch in letter;
                s:=‘‘;
                repeat
                case ch of
                ‘0‘:s:=s+‘0000‘;
                ‘1‘:s:=s+‘0001‘;
                ‘2‘:s:=s+‘0010‘;
                ‘3‘:s:=s+‘0011‘;
                ‘4‘:s:=s+‘0100‘;
                ‘5‘:s:=s+‘0101‘;
                ‘6‘:s:=s+‘0110‘;
                ‘7‘:s:=s+‘0111‘;
                ‘8‘:s:=s+‘1000‘;
                ‘9‘:s:=s+‘1001‘;
                ‘a‘:s:=s+‘1010‘;
                ‘b‘:s:=s+‘1011‘;
                ‘c‘:s:=s+‘1100‘;
                ‘d‘:s:=s+‘1101‘;
                ‘e‘:s:=s+‘1110‘;
                ‘f‘:s:=s+‘1111‘;
        end;
        if eoln then break;
        read(ch);
        until not (ch in letter);
        end;

        procedure init;
        var p,q:longint;
        st:string;

        begin
                assign(input,inf);
                reset(input);
                for p:=1 to 9 do
                begin
                getstr(st);
                while length(st)<32 do st:=‘0‘+st;
                for q:=1 to 32 do
                a[p,q]:=ord(st[33-q])-ord(‘0‘);
                end;
        close(input);
        fillchar(f,sizeof(f),$ff);
        end;

        function getsum(x,y,num:longint):longint;
        var tmp,u               :longint;
        begin
                tmp:=y;
                for u:=1 to 8 do
                tmp:=tmp+(a[u,x] xor num);
                getsum:=tmp;
        end;

        procedure getvalue(x,y:longint);
        var now,num:longint;
        begin
                if f[x,y]<>-1 then exit;
                if x>32 then begin
                f[x,y]:=1;
                exit;
                end;
                f[x,y]:=0;
                for num:=0 to 1 do begin
                now:=getsum(x,y,num);
                if now and 1<>a[9,x] xor num then continue;
                getvalue(x+1,now shr 1);
                if f[x+1,now shr 1]=1 then begin
                f[x,y]:=1;
                pa[x,y]:=num;
                break;
                end;
                end;
        end;

        procedure getans;
        var p,q:longint;
        begin
                ans:=‘‘;
                p:=1;
                q:=0;
                while p<=32 do begin
                        ans:=chr(48+pa[p,q])+ans;
                        q:=getsum(p,q,pa[p,q]) shr 1;
                        inc(p);
                end;
        end;

        procedure main;
        var tmp:string;
        begin
                getvalue(1,0);
                getans;
                m:=‘‘;
                while ans<>‘‘ do begin
                tmp:=copy(ans,1,4);
                if tmp=‘0000‘ then m:=m+‘0‘ else
                if tmp=‘0001‘ then m:=m+‘1‘ else
                if tmp=‘0010‘ then m:=m+‘2‘ else
                if tmp=‘0011‘ then m:=m+‘3‘ else
                if tmp=‘0100‘ then m:=m+‘4‘ else
                if tmp=‘0101‘ then m:=m+‘5‘ else
                if tmp=‘0110‘ then m:=m+‘6‘ else
                if tmp=‘0111‘ then m:=m+‘7‘ else
                if tmp=‘1000‘ then m:=m+‘8‘ else
                if tmp=‘1001‘ then m:=m+‘9‘ else
                if tmp=‘1010‘ then m:=m+‘a‘ else
                if tmp=‘1011‘ then m:=m+‘b‘ else
                if tmp=‘1100‘ then m:=m+‘c‘ else
                if tmp=‘1101‘ then m:=m+‘d‘ else
                if tmp=‘1110‘ then m:=m+‘e‘ else
                if tmp=‘1111‘ then m:=m+‘f‘;
                delete(ans,1,4);
                end;
                while (length(m)>1) and (m[1]=‘0‘) do delete(m,1,1);
                assign(output,ouf);
                rewrite(output);
                writeln(m);
                close(output);
        end;

        begin
                init;
                main;
        end.
const
        maxn=1000;
        maxt=1100;
        inf=‘work.in‘;
        ouf=‘work.out‘;
var
        t,a,b :array [0..maxn] of longint;
        f:array [0..maxt+1] of longint;
        n,start:longint;

procedure init;
var p:longint;
begin
        start:=maxt;
        assign(input,inf);
        reset(input);
        readln(n);
        for p:=1 to n do begin
            readln(t[p],a[p],b[p]);
            if a[p]<start then start:=a[p];
        end;
    close(input);
end;

procedure main;
var
    i,j:longint;
    find:boolean;
begin
    fillchar(f,sizeof(f),$ff);
    f[start]:=0;
    for i:=start to maxt do
    if f[i]<>-1 then begin
        find:=false;
        for j:=1 to n do
            if (a[j]<=i) and (i+t[j]<=b[j]) then begin
            find:=true;
            if (f[i+t[j]]=-1) or (f[i+t[j]]>f[i]+t[j]) then
            f[i+t[j]]:=f[i]+t[j];
        end;
        if not find then
        if (f[i+1]=-1) or (f[i+1]>f[i]) then f[i+1]:=f[i];
    end;
    assign(output,ouf);
    rewrite(output);
    writeln(f[maxt]);
    close(output);
end;

begin
    init;
    main;
end.
时间: 2024-10-18 12:27:03

9-22考试题目 结题报告的相关文章

初步了解--状态压缩dp---poj1185炮兵布阵结题报告

好吧,借助poj1185炮兵布阵这题,仔仔细细的了解了一下状态压缩动态规划 首先,借助题目,我们来看看状态压缩是个虾米东西..Ok follow me 一,所谓状态压缩 根据题意,我们得在长度为M 的地图上放置一些大炮(后面简称"放炮",应该不会被和谐吧),那么,首先不考虑山地,我们得把所有的放置方法都找出来,并且注意,这里只对于一行且长度为M(好吧,你可能要问考虑一行,左右互相隔2,互相不在攻击范围,那么上下呢?这里先不急,一步步来) 1,找出所有放炮的方法 假设长度为7,那么看下图

poj1185炮兵布阵结题报告--初步了解--状态压缩dp

好吧,借助poj1185炮兵布阵这题,仔仔细细的了解了一下状态压缩动态规划 首先,借助题目,我们来看看状态压缩是个虾米东西..Ok follow me 一,所谓状态压缩 根据题意,我们得在长度为M 的地图上放置一些大炮(后面简称"放炮",应该不会被和谐吧),那么,首先不考虑山地,我们得把所有的放置方法都找出来,并且注意,这里只对于一行且长度为M(好吧,你可能要问考虑一行,左右互相隔2,互相不在攻击范围,那么上下呢?这里先不急,一步步来) 1,找出所有放炮的方法 假设长度为7,那么看下图

《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告

<基于Cortex-M4的ucOS-III的应用>课程设计 结题报告 小组成员姓名:20155211 解雪莹 20155217 杨笛 20155227 辜彦霖 指导教师:娄嘉鹏 一.设计方案及可行性分析 题目要求:ucOS-III的移植:设计三个小实验:单一任务.多任务.并发任务. 1.设计方案 首先运行老师给的范例代码熟悉开发软件和开发板的使用:收集资料简单了解UCOSIII的基本概念,然后进行UCOSIII移植(移植到STM32f407开发板):移植成功后开始进行UCOSIII实例编程(实

20155211课程设计个人结题报告

20155211课程设计个人结题报告 个人贡献 参与课设题目讨论及完成全过程 辅助调试代码 资料收集 撰写小组结题报告 实践过程中的问题及解决: 编译之后出现如下错误:..\OBJ\HZ.axf: error: L6050U: The code size of this image (47788 bytes) exceeds the maximum allowed for this version of the linker. 出现错误的原因是:没有完全破解. 解决办法是:按照D:\实验箱资料2

关于填报《国家自然科学基金资助项目结题报告》的补充说明

项目负责人在线提交<结题报告>后,只需打印系统生成的PDF版本,签字后交依托单位. 原<结题报告>撰写提纲与说明中第三项,要求随纸质结题报告提供的附件材料,在电子化后上传即可,无需再随结题报告报送纸质附件材料. <结题报告>中的摘要包括项目摘要和结题摘要两部分,其中项目摘要的内容从计划书中自动生成,结题摘要须以深入浅出的语言简明扼要地概括出项目的精华,如背景.方向.主要内容.重要结果.关键数据及其科学意义等.

有向图强连通分支的Tarjan算法讲解 + HDU 1269 连通图 Tarjan 结题报告

题目很简单就拿着这道题简单说说 有向图强连通分支的Tarjan算法 有向图强连通分支的Tarjan算法伪代码如下:void Tarjan(u) {dfn[u]=low[u]=++index//进行DFS,每发现一个新的点就对这个点打上时间戳,所以先找到的点时间戳越早,dfn[U]表示最早发现u的时间,low[u]表示u能到达的最早的时间戳.stack.push(u)//将U压入栈中for each (u, v) in E {if (v is not visted)//如果V点没有经历过DFS,则

[程序设计与算法(2)]第五周第二题结题报告: Zipper

题目链接:http://cxsjsxmooc.openjudge.cn/2017t2springhw5/2/ ----------------------------------------------题目------------------------------------------------------ 描述 Given three strings, you are to determine whether the third string can be formed by combi

浙江省第6届程序设计竞赛结题报告汇总 zoj3202-3212

zoj 3202 Second-price Auction 水题,不解释了,直接贴代码 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct node{ int x; int y; }; struct node number[105]; int cmp(struct node a,struct node b){

结题报告——2018级2016第二学期第三周作业9.24

题目一:[NOIP2002P]过河卒 描述 如图,A 点有一个过河卒,需要走到目标 B   点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点.例 如上图 C  点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C).卒不能通过对方马的控制点. 棋盘用坐标表示,A 点(0,0).B 点(n,m)(n,m 为不超过 20  的整数,并由键盘输入),同样马的位置坐标是需要给出的(约定: C<>A,同