又来写题解辣~然而并不太清楚题目排列情况。。。不管辣先写起来~

T1:[bzoj1041]

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1041

一个赤果果的数学题~~~

首先坐标轴上一定有四个,

最大公约数搞一下然后判断一下就可以啦,细节全部都在代码~

代码如下:

 var i,j,ans,d:longint;
t,r,m:int64;
function flag(x,y:longint):longint;
var t:longint;
begin
if (x<y) then
begin
t:=x;
x:=y;
y:=t;
end;
x:=x mod y;
if (x=) then exit(y) else exit(flag(x,y));
end;
begin
readln(r);
ans:=;
t:=*r;
for d:= to trunc(sqrt(t)) do
if (t mod d=) then
begin
for i:= to trunc(sqrt(r/d)) do
begin
j:=trunc(sqrt(t/d-i*i));
if (j=sqrt(t/d-i*i)) and (i<>j) and (flag(i,j)=) then inc(ans);
end;
for i:= to trunc(sqrt(d/)) do
begin
j:=trunc(sqrt(d-i*i));
if (j*j=d-i*i) and (i<>j) and (flag(i,j)=) then inc(ans);
end;
end;
ans:=ans*+;
writeln(ans);
end.

T2:[bzoj1042]

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1042

又一个数学题hhh

先动态规划预处理,然后容斥原理就可以了。

代码如下:

 var i,j,k,l,tot,g:longint;
c,s:array[..] of longint;
f:array[..] of int64;
ans:int64;
function f1(x:longint):int64;
begin
if (x>=) then exit(f[x]) else exit();
end;
begin
fillchar(c,sizeof(c),);
fillchar(f,sizeof(f),);
readln(c[],c[],c[],c[],tot);
f[]:=;
for i:= to do
for j:=c[i] to do
f[j]:=f[j]+f[j-c[i]];
for i:= to tot do
begin
fillchar(s,sizeof(s),);
for j:= to do
read(s[j]);
readln(g);
ans:=f[g];
for j:= to do
ans:=ans-f1(g-(s[j]+)*c[j]);
for j:= to do
for k:=j+ to do
if (j<>k) then
ans:=ans+f1(g-(s[j]+)*c[j]-(s[k]+)*c[k]);
for j:= to do
for k:=j+ to do
for l:=k+ to do
if (j<>k) and (k<>l) and (j<>l) then
ans:=ans-f1(g-(s[j]+)*c[j]-(s[k]+)*c[k]-(s[l]+)*c[l]);
ans:=ans+f1(g-(s[]+)*c[]-(s[]+)*c[]-(s[]+)*c[]-(s[]+)*c[]);
writeln(ans);
end;
end.

(T3先留好坑。。。之后补)

T4:[bzoj1044]

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1044

第一问就是NOIP2015的day2T1(把我坑死的QAQQQ),

第二问就是动态规划就行了。

代码如下:

 var n,m,i,j,k,ans,left,right,max,anss,s,now1,x,y:longint;
l,sl,ty:array[..] of longint;
f,f1:array[..,-..] of longint;
function tryit(x:longint):boolean;
var i,j,s,left,right:longint;
begin
i:=;
j:=;
now1:=;
while (i<n) do
begin
left:=i+;
right:=n;
i:=(left+right) div ;
while (right-left>) do
begin
if (sl[i]-sl[now1]<=x) then left:=i else right:=i;
i:=(left+right) div ;
end;
if (sl[right]-sl[now1]<=x) then i:=right else i:=left;
if (sl[n]-sl[now1]>x) then inc(j);
now1:=i;
end;
if (j>m) then exit(false) else exit(true);
end;
begin
read(n,m);
fillchar(l,sizeof(l),);
fillchar(sl,sizeof(sl),);
s:=;
max:=;
for i:= to n do
begin
read(l[i]);
sl[i]:=sl[i-]+l[i];
if (l[i]>max) then max:=l[i];
s:=s+l[i];
end;
left:=max;
right:=s;
ans:=(left+right) div ;
while (right-left>) do
begin
if not(tryit(ans)) then left:=ans else right:=ans;
ans:=(left+right) div ;
end;
ans:=right;
if tryit(left) then ans:=left;
write(ans,' ');
fillchar(f,sizeof(f),);
fillchar(ty,sizeof(ty),);
fillchar(f1,sizeof(f1),);
anss:=;
f[,]:=;
for i:= to n do
f1[,i]:=;
k:=;
for j:= to n do
begin
while (sl[j]-sl[k]>ans) do inc(k);
ty[j]:=k;
end;
for i:= to m+ do
begin
x:=i mod ;
y:=-x;
for j:= to n do
begin
f[y,j]:=(f1[x,j-]-f1[x,ty[j]-]+) mod ;
f1[y,j]:=(f[y,j]+f1[y,j-]) mod ;
end;
anss:=(anss+f[y,n]) mod ;
end;
writeln(anss);
end.

T5:[bzoj1045]

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1045

这题。。。标准的组合数学嘛~~~

随便搞一下就粗来了。。。QAQ

辣么辣么多数学题QAQQQ

代码如下:

 var n,i,j:longint;
sum,ave,ans:int64;
a,p:array[..] of longint;
procedure qsort(lx,rx:longint);
var i,j,m,x:longint;
begin
i:=lx;
j:=rx;
m:=p[(i+j) div ];
repeat
while (p[i]<m) do inc(i);
while (p[j]>m) do dec(j);
if (i<=j) then
begin
x:=p[i];
p[i]:=p[j];
p[j]:=x;
inc(i);
dec(j);
end;
until (i>j);
if (i<rx) then qsort(i,rx);
if (j>lx) then qsort(lx,j);
end;
begin
readln(n);
fillchar(a,sizeof(a),);
fillchar(p,sizeof(p),);
sum:=;
for i:= to n do
begin
readln(a[i]);
sum:=sum+a[i];
end;
ave:=sum div n;
for i:= to n do
p[i]:=p[i-]-ave+a[i];
qsort(,n);
ans:=;
for i:= to n do
ans:=ans+abs(p[i]-p[n div +]);
writeln(ans);
end.

T6:[bzoj1054]

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1054

QAQ这题是一个赤果果的BFS。。。

不对。。。

BFS要判重。。。这题判重都不要hhh

代码如下:

 type arr=array[..,..] of longint;
const modp=;
tx:array[..] of longint=(,-,,);
ty:array[..] of longint=(,,,-);
var i,j,k,s,t,s1,s2,rx,ry,swap,rh:longint;
q:array[..*] of arr;
mark:array[..*] of boolean;
step:array[..*] of longint;
ans:arr;
ch:char;
function hash(x:arr):longint;
var i,j,ans,now:longint;
begin
ans:=;
now:=;
for i:= to do
for j:= to do
begin
ans:=(ans+int64(now*x[i,j]));
now:=(now+now);
end;
exit(ans);
end;
begin
s:=;
t:=;
fillchar(q,sizeof(q),);
fillchar(ans,sizeof(ans),);
for i:= to do
begin
for j:= to do
begin
read(ch);
while (ch<>'') and (ch<>'') do read(ch);
q[,i,j]:=ord(ch)-;
end;
end;
for i:= to do
begin
for j:= to do
begin
read(ch);
while (ch<>'') and (ch<>'') do read(ch);
ans[i,j]:=ord(ch)-;
end;
end;
s1:=hash(q[s]);s2:=hash(ans);
mark[s1]:=true;
fillchar(step,sizeof(step),);
if (s1=s2) then writeln('') else
begin
while (s<t) do
begin
for i:= to do
for j:= to do
if (q[s,i,j]>) then
begin
for k:= to do
begin
rx:=i+tx[k];ry:=j+ty[k];
if (<=rx) and (rx<=) and (<=ry) and (ry<=) and (q[s,rx,ry]=) then
begin
swap:=q[s,i,j];q[s,i,j]:=q[s,rx,ry];q[s,rx,ry]:=swap;
rh:=hash(q[s]);
if not(mark[rh]) then
begin
if (rh=s2) then
begin
writeln(step[s]+);
halt;
end;
mark[rh]:=true;
q[t]:=q[s];
step[t]:=step[s]+;
inc(t);
end;
swap:=q[s,i,j];q[s,i,j]:=q[s,rx,ry];q[s,rx,ry]:=swap;
end;
end;
end;
inc(s);
end;
end;
end.

T7:[bzoj1055]

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1055

又一个动态规划呢!

不过是一个记忆化搜索。。。

代码如下:

 const ch:array[..] of char=('W','I','N','G');
var i,j:longint;
f,flag:array[..,..,..] of boolean;
x:array[..,..,..] of char;
a:array[..] of longint;
s:string;
flagg:boolean;
function calc(x:char):longint;
begin
if (x='W') then exit()
else if (x='I') then exit()
else if (x='N') then exit()
else if (x='G') then exit();
end;
function f1(k,left,right:longint):boolean;
var i,j,t1,t2:longint;
begin
if flag[k,left,right] then exit(f[k,left,right]);
flag[k,left,right]:=true;
if (right=left) and (s[left]=ch[k]) then
begin
f[k,left,right]:=true;
exit(true);
end;
for i:= to a[k] do
begin
t1:=calc(x[k,i,]);
t2:=calc(x[k,i,]);
for j:=left to right- do
if f1(t1,left,j) and f1(t2,j+,right) then
begin
f[k,left,right]:=true;
exit(true);
end;
end;
f[k,left,right]:=false;
exit(false);
end;
begin
fillchar(a,sizeof(a),);
for i:= to do
read(a[i]);
readln;
fillchar(f,sizeof(f),false);
fillchar(flag,sizeof(flag),false);
for j:= to do
for i:= to a[j] do
readln(x[j,i,],x[j,i,]);
readln(s);
flagg:=false;
for i:= to do
if f1(i,,length(s)) then
begin
write(ch[i]);
flagg:=true;
end;
if not(flagg) then write('The name is wrong!');
writeln;
end.

(T8的坑也先留着。。。QAQQQ)

终于写完啦~~~撒花撒花~~~

HAOI2008题解的更多相关文章

  1. 题解:[HAOI2008]下落的圆盘

    时空限制:1000ms / 128MB 原题链接: 洛谷 bzoj Description 有n个圆盘从天而降,后面落下的可以盖住前面的.求最后形成的封闭区域的周长.看下面这副图, 所有的红 色线条的 ...

  2. 洛谷 4290 [HAOI2008]玩具取名 题解

    P4290 [HAOI2008]玩具取名 题目描述 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用&qu ...

  3. 题解 P4289 【[HAOI2008]移动玩具】

    题目地址:https://www.luogu.com.cn/problem/P4289 题解原地址:https://createsj.blog.luogu.org/solution-p4289 让我们 ...

  4. 题解—P2511 [HAOI2008]木棍分割

    这道题第一眼直接一个二分板子把第一问解决掉,然后主要是统计方案. 其实这个方程还不算难推,只要推出来朴素 \(dp\) ,之后的一步一步也很顺理成章,所以这种题主要看能不能静下心来慢慢做. solut ...

  5. 【题解】 bzoj1055: [HAOI2008]玩具取名 (动态规划)

    bzoj1055,懒得复制,戳我戳我 Solution: 区间动规(以后开始动规会在solution前面标注是啥动规 我觉的这道题挺难想了,但其实状态定义了一下子就出来了(还是不行啊) 我们定义状态\ ...

  6. BZOJ1043:[HAOI2008]下落的圆盘——题解(配图片)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1043 Description 有n个圆盘从天而降,后面落下的可以盖住前面的.求最后形成的封闭区域的周 ...

  7. 【题解】HAOI2008硬币购物

    1A什么的实在是太开心啦~~洛谷P1450 这道题目主要是考察对于容斥原理的掌握. 首先,注意到如果不存在有关硬币数量的限制而单纯询问方案的总数,就是一个简单的完全背包.这个思路提醒我们:如果能够求出 ...

  8. 【题解】HAOI2008木棍分割

    对于这道题目的两问,第一问直接二分答案求出最短长度.关键在于第二问应当如何求:建立dp方程,dp[i][j]代表到第i个分界线,切了j次(强制在第i处切一刀.这样就不会对后面的状态产生影响).状态转移 ...

  9. 洛谷 P2512 [HAOI2008]糖果传递 题解

    每日一题 day47 打卡 Analysis 首先,最终每个小朋友的糖果数量可以计算出来,等于糖果总数除以n,用ave表示. 假设标号为i的小朋友开始有Ai颗糖果,Xi表示第i个小朋友给了第i-1个小 ...

随机推荐

  1. 洛谷 P1346 电车

    这道题的关键在建图 把每一个车站看成一个点,将这个车站相连的第一个车站建立一条边权为0的边,对于它所相连的其他车站,建立边权为1的边: 这样我们可以得到一张图: 起点,终点都知道了,跑一边最短路即可 ...

  2. 认识mysql(1)

    ---恢复内容开始--- 1.MySQL概述 1.什么是数据库? 存储数据的仓库 2.都有哪些公司在用数据库? 金融机构.游戏公司.购物网站.论坛网站... 3.提供数据库服务的软件? 1.软件分类 ...

  3. [Wolfgang Mauerer] 深入linux 内核架构 第十三章 系统调用

    作为Linux开发爱好者,从事linux 开发有三年多时间.做过bsp移植,熟悉u-boot代码执行流程:看过几遍<linux 设备驱动程序开发>,分析过kernel启动流程,写过驱动,分 ...

  4. [译]The Python Tutorial#2. Using the Python Interpreter

    [译]The Python Tutorial#Using the Python Interpreter 2.1 Invoking the Interpreter Python解释器通常安装在目标机器的 ...

  5. 算法训练 Eurodiffusion

    Eurodiffusion /***********并未完全AC***********/ #include<iostream> #include<algorithm> #inc ...

  6. [BZOJ1588]营业额统计(Splay)

    Description 题意:给定 n个数,每给定一个数,在之前的数里找一个与当前数相差最小的数,求相差之和(第一个数为它本身) 如:5 1 2 5 4 6 Ans=5+|1-5|+|2-1|+|5- ...

  7. ZOJ Monthly, January 2018 训练部分解题报告

    A是水题,此处略去题解 B - PreSuffix ZOJ - 3995 (fail树+LCA) 给定多个字符串,每次询问查询两个字符串的一个后缀,该后缀必须是所有字符串中某个字符串的前缀,问该后缀最 ...

  8. 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式

    1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1469  Solved: ...

  9. TCP的运输连接管理

    TCP的运输连接管理 TCP是面向连接的协议,有三个阶段:连接建立.数据传送 和 连接释放.运输连接的管理就是使运输连接的简历和释放都能正常地进行. 在TCP连接建立过程中要解决一下三个问题: 1.  ...

  10. luogu2120 [ZJOI2007]仓库建设

    大米饼写的太棒辣qwqqwq #include <iostream> #include <cstdio> using namespace std; typedef long l ...