⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usaco 3_1_5 contact 题解_leokan的blog.mht

📁 美国USACO题库源程序
💻 MHT
📖 第 1 页 / 共 5 页
字号:
    =20
      =
print(ans[i]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
inc(p);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      if p=3D6=20
      =
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;=20
      =
writeln;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;=20
      =
p:=3D0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
end;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
hash[ans[i]]:=3D0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;=20
      end;<BR>&nbsp;&nbsp;&nbsp; if p&lt;&gt;0 then=20
      writeln;<BR>&nbsp;&nbsp;&nbsp; end;<BR>&nbsp;&nbsp;&nbsp;=20
      close(output);<BR>end;<BR>begin<BR>&nbsp;&nbsp;&nbsp;=20
      init;<BR>&nbsp;&nbsp;&nbsp; work;<BR>end.</STRONG></P>
      <P><STRONG><BR></STRONG></P><STRONG>
      <HR>
      </STRONG>
      <P><STRONG>USACO=B5=C4=B7=D6=CE=F6......=CE=DE=D3=EF</STRONG></P>
      <P><STRONG>For this problem, we keep track of every bit sequence =
we see.=20
      We could use the bit sequence itself as an index into a table of=20
      frequencies, but that would not distinguish between the 2-bit =
sequence=20
      "10" and the 4-bit sequence "0010". To solve this, we always add a =
1 to=20
      the beginning of the number, so "10" becomes "110" and "0010" =
becomes=20
      "10010". </STRONG></P>
      <P><STRONG>After reading the entire bit string, we sort the =
frequency=20
      table and walk through it to print out the top sequences. =
</STRONG></P><PRE><STRONG>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;assert.h&gt;

#define MAXBITS 12
#define MAXSEQ (1&lt;&lt;(MAXBITS+1))

typedef struct Seq Seq;
struct Seq {
    unsigned bits;
    int count;
};

Seq seq[MAXSEQ];

/* increment the count for the n-bit sequence "bits" */
void
addseq(unsigned bits, int n)
{
    bits &amp;=3D (1&lt;&lt;n)-1;
    bits |=3D 1&lt;&lt;n;
    assert(seq[bits].bits =3D=3D bits);
    seq[bits].count++;
}

/* print the bit sequence, decoding the 1&lt;&lt;n stuff */
/* recurse to print the bits most significant bit first */
void
printbits(FILE *fout, unsigned bits)
{
    assert(bits &gt;=3D 1);
    if(bits =3D=3D 1) /* zero-bit sequence */
 return;

    printbits(fout, bits&gt;&gt;1);
    fprintf(fout, "%d", bits&amp;1);
}

int
seqcmp(const void *va, const void *vb)
{
    Seq *a, *b;

    a =3D (Seq*)va;
    b =3D (Seq*)vb;

    /* big counts first */
    if(a-&gt;count &lt; b-&gt;count)
 return 1;
    if(a-&gt;count &gt; b-&gt;count)
 return -1;

    /* same count: small numbers first */
    if(a-&gt;bits &lt; b-&gt;bits)
 return -1;
    if(a-&gt;bits &gt; b-&gt;bits)
 return 1;

    return 0;
}

void
main(void)
{
    FILE *fin, *fout;
    int i, a, b, n, nbit, c, j, k;
    unsigned bit;
    char *sep;

    fin =3D fopen("contact.in", "r");
    fout =3D fopen("contact.out", "w");
    assert(fin !=3D NULL &amp;&amp; fout !=3D NULL);

    nbit =3D 0;
    bit =3D 0;

    for(i=3D0; i&lt;=3DMAXBITS; i++)
 for(j=3D0; j&lt;(1&lt;&lt;i); j++)
     seq[(1&lt;&lt;i) | j].bits =3D (1&lt;&lt;i) | j;

    fscanf(fin, "%d %d %d", &amp;a, &amp;b, &amp;n);

    while((c =3D getc(fin)) !=3D EOF) {
 if(c !=3D '0' &amp;&amp; c !=3D '1')
     continue;

 bit &lt;&lt;=3D 1;
 if(c =3D=3D '1')
     bit |=3D 1;

 if(nbit &lt; b)
     nbit++;

 for(i=3Da; i&lt;=3Dnbit; i++)
     addseq(bit, i);
    }

    qsort(seq, MAXSEQ, sizeof(Seq), seqcmp);

    /* print top n frequencies for number of bits between a and b */
    j =3D 0;
    for(i=3D0; i&lt;n &amp;&amp; j &lt; MAXSEQ; i++) {
 if(seq[j].count =3D=3D 0)
     break;

 c =3D seq[j].count;
 fprintf(fout, "%d\n", c);

 /* print all entries with frequency c */
 sep =3D "";
 for(k=3D0; seq[j].count =3D=3D c; j++, k++) {
     fprintf(fout, sep);
     printbits(fout, seq[j].bits);
     if(k%6 =3D=3D 5)
  sep =3D "\n";
     else
  sep =3D " ";
 }
 fprintf(fout, "\n");
    }

    exit(0);
}</STRONG></PRE></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=3Dopt><A =
title=3D=B2=E9=BF=B4=B8=C3=B7=D6=C0=E0=D6=D0=CB=F9=D3=D0=CE=C4=D5=C2=20
href=3D"http://hi.baidu.com/leokan/blog/category/Oi">=C0=E0=B1=F0=A3=BAOi=
</A> | <A=20
title=3D=BD=AB=B4=CB=CE=C4=D5=C2=CC=ED=BC=D3=B5=BD=B0=D9=B6=C8=CB=D1=B2=D8=
 onclick=3D"return addToFavor();"=20
href=3D"http://cang.baidu.com/do/add" =
target=3D_blank>=CC=ED=BC=D3=B5=BD=CB=D1=B2=D8</A> | =E4=AF=C0=C0(<SPAN=20
id=3Dresult></SPAN>) | <A=20
href=3D"http://hi.baidu.com/leokan/blog/item/92e842c2c41cec31e4dd3b5e.htm=
l#send">=C6=C0=C2=DB</A>&nbsp;(0)
<SCRIPT language=3Djavascript>
/*<![CDATA[*/
var pre =3D [true,'USACO 3.1.4 Shaping Regions=CC=E2=BD=E2', 'USACO =
3.1.4 Shaping =
Regions=CC=E2...','/leokan/blog/item/bf455f66b9046120ab184caa.html'];
var post =3D [true,'USACO 3.1.6 Stamps =CC=E2=BD=E2','USACO 3.1.6 Stamps =
=CC=E2=BD=E2', '/leokan/blog/item/b5895160134537db8cb10dcd.html'];
if(pre[0] || post[0]){
	document.write('<div =
style=3D"height:5px;line-height:5px;">&nbsp;</div><div id=3D"in_nav">');
	if(pre[0]){
		document.write('=C9=CF=D2=BB=C6=AA=A3=BA<a href=3D"' + pre[3] + '" =
title=3D"' + pre[1] + '">' +  pre[2] + '</a>&nbsp;&nbsp;&nbsp;&nbsp;');
	}
	if(post[0]){
		document.write('=CF=C2=D2=BB=C6=AA=A3=BA<a href=3D"' + post[3] + '" =
title=3D"' + post[1] + '">' +  post[2] + '</a>');
	}
	document.write('</div>');
}
/*]]>*/
</SCRIPT>
 </DIV>
<DIV class=3Dline></DIV>
<STYLE type=3Dtext/css>#in_related_doc A {
	TEXT-DECORATION: none
}
</STYLE>

<DIV id=3Din_related_tmp></DIV>
<SCRIPT language=3Djavascript type=3Dtext/javascript>
/*<![CDATA[*/
function HI_MOD_IN_RELATED_DOC_CALLBACK(arg){
    if(arg.length <=3D 1) return false;
    var hasMore =3D arg[0];
    var D=3Dfunction(A,B){A[A.length]=3DB;}
    if(arg.length % 2 =3D=3D 0) D(arg, ["","","",""]);

    var html =3D ['<div id=3D"in_related_doc"><div =
class=3D"tit">=CF=E0=B9=D8=CE=C4=D5=C2=A3=BA</div>'];
    D(html, '<table cellpadding=3D"0" cellspacing=3D"3" border=3D"0">');
    for(var i =3D 1, j =3D arg.length; i < j; i +=3D 2){
        D(html, '<tr>');
        D(html, '<td width=3D"15px"><a style=3D"font-size:25px" =
>&#8226;</a></td><td><a href=3D"http://hi.baidu.com/' + arg[i][3] + =
'/blog/item/' + arg[i][2] + '.html" target=3D"_blank" title=3D"' + =
arg[i][0] + '">' + arg[i][1] + '</a>');
        D(html, new Array(10).join('\u3000'));
        D(html, '</td>');
        if(arg[i + 1][0] !=3D "")
            D(html, '<td width=3D"15px"><a style=3D"font-size:25px" =
>&#8226;</a></td><td><a href=3D"http://hi.baidu.com/' + arg[i + 1][3] + =
'/blog/item/' + arg[i + 1][2] + '.html" target=3D"_blank" title=3D"' + =
arg[i + 1][0] + '">' + arg[i + 1][1] + '</a></td>');
        else
            D(html, '<td>&nbsp;</td><td>&nbsp;</td>');
        D(html, '</tr>');
    }
    if(hasMore) D(html, '<tr><td colspan=3D"4"><a target=3D"_blank" =
href=3D"/sys/search?pageno=3D1&type=3D7&sort=3D1&word=3DUSACO%203%2E1%2E5=
%20Contact%20%CC%E2%BD%E2&item=3D92e842c2c41cec31e4dd3b5e">=B8=FC=B6=E0&g=
t;&gt;</a></td></tr>');
    D(html, '</table></div><div class=3D"line">&nbsp;</div>');

    var div =3D document.getElementById('in_related_tmp');
    if(div){
        div.innerHTML =3D html.join('');
        while(div.firstChild){
            div.parentNode.insertBefore(div.firstChild, div);
        }
        div.parentNode.removeChild(div);
    }
}

if(RelatedDocData =3D=3D -1){	// not supported xhr
    var script =3D document.createElement('script');
    script.type =3D 'text/javascript';
    script.src =3D =
'/sys/search?type=3D8&word=3DUSACO%203%2E1%2E5%20Contact%20%CC%E2%BD%E2&i=
tem=3D92e842c2c41cec31e4dd3b5e&t=3D' + new Date().getTime();
    document.getElementsByTagName('HEAD')[0].appendChild(script);
}else if(RelatedDocData =3D=3D null){
	GetAndEval =3D true;
}else{
	eval(RelatedDocData);
}

/*]]>*/
</SCRIPT>

<DIV id=3Din_reader>
<DIV class=3Dtit>=D7=EE=BD=FC=B6=C1=D5=DF=A3=BA</DIV>
<SCRIPT>

	var g_spAnnony=3Dtrue;


var g_read=3D[

{}
];
g_read.length=3Dg_read.length-1;

var _rh1=3D"";
var _rh2=3D"";

function wrreader(){
	_rh1 +=3D '<table width=3D"100%" ><tr>';
	_rh2+=3D'<tr>';
	if(g_spAnnony){
		_rh1+=3D'<td align=3D"center" width=3D"10%" ><img border=3D"0" =
width=3D"55" height=3D"55" =
src=3D"http://img.baidu.com/hi/img/portraitn.jpg"></td>';
		_rh2+=3D'<td>&nbsp;</td>';
		if(g_read.length>0){
			_rh1+=3D'<td align=3D"left" width=3D"12%">';
		}else{
			_rh1+=3D'<td align=3D"left" width=3D"100%">';
		}
		_rh1+=3D"<a =
href=3D'http://passport.baidu.com/?login&tpl=3Dsp&tpl_reg=3Dsp&u=3D"+myre=
f+"' =
target=3D'_self'>=B5=C7=C2=BC</a>=BA=F3=A3=AC=C4=FA=BE=CD=B3=F6=CF=D6=D4=DA=
=D5=E2=C0=EF=A1=A3</td>";
		_rh2+=3D'<td>&nbsp;</td>'
	}
	if(g_read.length=3D=3D0){
		if(!g_spAnnony){
			_rh1+=3D'<td align=3Dleft =
width=3D"100%">=D7=EE=BD=FC=BB=B9=C3=BB=D3=D0=B5=C7=C2=BC=D3=C3=BB=A7=BF=B4=
=B9=FD=D5=E2=C6=AA=CE=C4=D5=C2=A1=AD=A1=AD</td>';
			_rh2+=3D'<td>&nbsp;</td>';
		}
	}else{
		for(i=3D0,len=3Dg_read.length;i<len;i++){
			_rh1+=3D'<td align=3D"center" valign=3D"bottom" width=3D"10%" =
class=3D"user"><a href=3D"/'+g_read[i][0]+'" target=3D"_blank"><img =
border=3D"0" =
src=3D"http://himg.baidu.com/sys/portraitn/item/'+g_read[i][1]+'.jpg"></a=
></td>';
			_rh2+=3D'<td align=3D"center" valign=3D"top" class=3D"user"><a =
href=3D"/'+g_read[i][0]+'" target=3D"_blank">'+g_read[i][2]+'</a></td>';
		}
	}
	_rh1+=3D'<td width=3D"100%"></td></tr>';
	_rh2+=3D'<td></td></tr></table>';
	document.write(_rh1+_rh2);
}

wrreader();
</SCRIPT>
</DIV>
<DIV class=3Dline></DIV>
<SCRIPT language=3DJavaScript>
allkey=3Dallkey+"142d077b0bb076f40bd18714_92e842c2c41cec31e4dd3b5e_";
</SCRIPT>

<DIV id=3Din_comment><A name=3Dcomment></A>
<DIV class=3Dtit>=CD=F8=D3=D1=C6=C0=C2=DB=A3=BA</DIV>
<SCRIPT>
function writecmt(type,id,cmtname,cmturl,portraitId){
	var html1=3D"";

	if(type=3D=3D1){
			html1=3D"<a name=3D'"+id+"' href=3D'"+cmturl+"' target=3D'_blank' =
title=3D'"+cmturl+"'><img  border=3D'0' =
src=3D'http://himg.baidu.com/sys/portraitn/item/"+portraitId+".jpg'><br>"=
+cmtname+"</a>";
	}else{
		if(cmtname=3D=3D"" || cmtname=3D=3D"=C4=E4=C3=FB=CD=F8=D3=D1"){
			if(cmturl=3D=3D""){
				html1=3D"<a name=3D'"+id+"'>=C4=E4=C3=FB=CD=F8=D3=D1</a>";
			}else{
				html1=3D"<a name=3D'"+id+"' href=3D'"+cmturl+"' target=3D'_blank' =
title=3D'"+cmturl+"'>"+cmtname+"</a>";
			}
		}else{
			if(cmturl=3D=3D""){
				html1=3D"<div class=3D'f14' style=3D'display:inline'>=CD=F8=D3=D1:<a =
name=3D'"+id+"'>"+cmtname+"</a></div>";
			}else{
				html1=3D"<div class=3D'f14' style=3D'display:inline'>=CD=F8=D3=D1:<a =
name=3D'"+id+"' href=3D'"+cmturl+"' target=3D'_blank' =
title=3D'"+cmturl+"'>"+cmtname+"</a></div>";
			}
		}
	}
	document.write(html1);
}

</SCRIPT>

<DIV id=3Dpage></DIV></DIV>
<DIV id=3Din_send><A name=3Dsend></A>
<FORM id=3DpopFormSubmit name=3Dform1 onsubmit=3D"return checkcmtform()" =

action=3D/leokan/commit method=3Dpost><INPUT type=3Dhidden value=3D8 =
name=3Dct> <INPUT=20
type=3Dhidden value=3D1 name=3Dcm> <INPUT type=3Dhidden =
value=3D92e842c2c41cec31e4dd3b5e=20
name=3DspBlogID>
<SCRIPT language=3DJavaScript>
	document.write("<input type=3D'hidden' name=3D'spRefURL' =
value=3D'"+window.location.href+"'>");
</SCRIPT>
=20
<DIV class=3Dtit>=B7=A2=B1=ED=C6=C0=C2=DB=A3=BA</DIV>
<TABLE cellSpacing=3D5 cellPadding=3D0 width=3D620 border=3D0>
  <TBODY>
  <TR>
    <TD class=3Df14>=D0=D5=A1=A1=C3=FB=A3=BA</TD>
    <TD><INPUT id=3DspBlogCmtor style=3D"WIDTH: 220px" =
onfocus=3DhidErr(1);=20
      tabIndex=3D1 maxLength=3D49 onchange=3D"checkname('spBlogCmtor')"=20
      name=3DspBlogCmtor>
      <SCRIPT>
document.write(" &nbsp;&nbsp; <a =
href=3D'http://passport.baidu.com/?reg&tpl=3Dsp&return_method=3Dget&skip_=
ok=3D1&u=3Dhttp://hi.baidu.com/sys/reg/' =
target=3D'_blank'>=D7=A2=B2=E1</a>");
document.write(" | <a =
href=3D'http://passport.baidu.com/?login&tpl=3Dsp&tpl_reg=3Dsp&u=3D"+myre=
f+"'>=B5=C7=C2=BC</a>");

</SCRIPT>
      =20
      <DIV id=3Dnmerror style=3D"DISPLAY: =
none">*=D0=D5=C3=FB=D7=EE=B3=A4=CE=AA50=D7=D6=BD=DA</DIV></TD></TR>
  <TR id=3D1_err style=3D"DISPLAY: none">
    <TD>&nbsp;</TD>
    <TD>
      <DIV class=3Derror id=3D1_err_con></DIV></TD></TR>
  <TR>
    <TD class=3Df14>=CD=F8=D6=B7=BB=F2=D3=CA=CF=E4=A3=BA</TD>
    <TD><INPUT id=3DspBlogCmtURL style=3D"WIDTH: 360px" =

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -