01-07都没写...然后突然来写貌似有点突兀啊...不管了,难得前排记录一下...

吐槽一下赛制...不得不说很强... cf 套oi...很创新...不过还是兹磁ACM或者CF

A-1

数据才2<=n<=3 ...但是一眼过去就先打了个dfs 。

所以这个应该是A-2的题解。

a1应该打表就好了...

A-2

这个就是dfs啊...

搜索出所有的s串的子集,然后暴力判一下...

var s:string;
a:array[..]of string;
i,j:longint;
tot,x:longint;
procedure dfs(dep,last:longint;t:string);
var i:longint;
begin
if dep> then
begin
inc(tot);
a[tot]:=t;
end;
for i:=last+ to length(s) do
dfs(dep+,i,t+s[i]);
end;
begin
readln(s);
dfs(,,'');
for i:= to tot do
begin
x:=;
for j:= to tot do
if (a[i]=a[j])and(length(a[i])=length(a[j])) then inc(x);
if x= then
begin
writeln('Y');
exit;
end;
end;
writeln('N');
end.

A-2

A-3

貌似因为数据随机...所以可以用rp卡... 对于n>10 很可能是"Y" 所以A-2再加个特判可以水...

正解不会QAQ...会了再来补

悄悄咪咪的去看了HR的代码...自己推敲了一波基本上懂了

对于一个01串

很显然 如果 0 或 1 有且仅有两个 辣么就是 “Y” 这时 T 串为 0 或 1

当然还有 其他可能为“Y”。

辣么什么时候捏

就是 比如

0110101

这个串看起来好像很一般,但他就是“Y”。

他的T就是010101

因此我萌就可以发现了 如果s串中存在有且仅有2个连续1 或 0 辣么就可以是“Y”。

所以暴力判一下就好了...

ORZ HR!

var
c:array[''..'']of longint;
s:ansistring;
n,i:longint;
begin
readln(s);
n:=length(s);
for i:= to n do
inc(c[s[i]]);
if (c['']=)or(c['']=) then
begin
writeln('Y');
exit;
end;
if n= then
begin
writeln('N');
exit;
end;
if (s[]=s[])and(s[]<>s[]) then
begin
writeln('Y');
exit;
end;
if (s[n]=s[n-])and(s[n]<>s[n-]) then
begin
writeln('Y');
exit;
end;
for i:= to n- do
if (s[i]=s[i-])and(s[i]<>s[i-])and(s[i]<>s[i+]) then
begin
writeln('Y');
exit;
end;
writeln('N');
end.

A-3

B-1

很明显用dfs水...

搜索出所有子序列,然后暴力判...

var n,m:longint;
a,b,c:array[..]of longint;
ans:int64;
i:longint;
procedure dfs(dep,last:longint);
var i,j:longint;
x:boolean;
begin
if dep=m then
begin
x:=true;
for j:= to m do
if a[c[j]]+b[j]<a[c[j-]]+b[j-] then
begin
x:=false;
break;
end;
if x then inc(ans);
exit;
end;
for i:=last+ to n do
begin
c[dep+]:=i;
dfs(dep+,i);
end;
end;
begin
read(n,m);
for i:= to n do
read(a[i]);
for i:= to m do
read(b[i]);
dfs(,);
writeln(ans);
end.

B-1

B-2

不擅长dp啊QAQ

本来想不看代码自己手动推的...

写完之后一直炸...只能悄悄咪咪的去看葱神代码了...

然后发现貌似差不多啊...改成一样之后还是炸...(最后是一个sb问题)

然后我再改回原来代码就过辣!

思路是酱紫的:  设f[i,j] 表示 c数列以 i  结尾,长度为 j 且满足题目要求的c数列的方案数...

辣么肿么转移捏...

推了一下大概是酱紫的:   f[i,j]+=f[k,j-1]  1<=k<=i 且满足 a[i]+b[j]>=a[k]+b[j-1]

这个方程的意思就是说 因为考虑前一位,所以就通过j-1 长度来转移 j ...然后以 i 结尾,所以对于前面的1~(i-1) 都可以进行转移 然后在判是否满足条件

然后初始化就是 f[i,1]=1 因为 对于任意长度为1 的序列方案数就是1

var
n,m:longint;
a,b:array[..]of longint;
i,j,k:longint;
f:array[..,..]of longint;
ans:int64;
begin
read(n,m);
for i:= to n do
read(a[i]);
for i:= to m do
read(b[i]);
for i:= to n do
f[i,]:=;
for i:= to n do
begin
for j:= to m do
for k:= to i- do
if a[i]+b[j]>=a[k]+b[j-] then
f[i,j]:=(f[i,j]+f[k,j-]) mod ;
end;
for i:= to n do
ans:=(ans+f[i,m]) mod ;
writeln(ans);
end.

B-2

B-3

到处搜刮题解QAQ...太笨不懂啊QAQ...

大概就是用个树状数组来优化...

具体优化不会QAQ...

貌似B-3数据没弄啊...悄悄咪咪去交个B-2

C-1

发现n比较小,所以floyd跑一下,然后暴力判k个特殊点...这样就水过去?

比赛时KPM提醒了一下有重边...所以记得去重边,就加个min而已...

var n,m,q:longint;
i,j,k:longint;
x,y,z:longint;
c:array[..]of longint;
dist:array[..,..]of longint;
min:longint;
function mn(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
begin
read(n,m,q);
for i:= to q do
read(c[i]);
for i:= to n do
for j:= to n do
dist[i,j]:= << ;
for i:= to m do
begin
read(x,y,z);
dist[x,y]:=mn(dist[x,y],z);
dist[y,x]:=dist[x,y];
end;
for k:= to n do
for i:= to n do
for j:= to n do
if dist[i,k]+dist[k,j]<dist[i,j] then
dist[i,j]:=dist[i,k]+dist[k,j];
min:=maxlongint;
for i:= to q do
for j:= to q do
if (i<>j) then
if dist[c[i],c[j]]<min then min:=dist[c[i],c[j]];
writeln(min);
end.

C-1

C-2

发现n变大了...但是k很小,所以可以跑k次最短路

只会spfa...QAQ...

对于每个特殊点为s跑spfa,然后在暴力更新答案

n比较大所以记得要邻接表,邻接矩阵会炸...

然后边记得开两倍,因为是双向的...貌似挺多在这re了...

type
node=record
y,z:longint;
next:longint;
end;
var e:array[..]of node;
i,j:longint;
dist,first,c:array[..]of longint;
x,y,z:longint;
q:array[..]of longint;
v:array[..]of boolean;
tot:longint;
n,m,p:longint;
min:longint;
procedure adde(x,y,z:longint);
begin
e[tot].next:=first[x];
e[tot].y:=y;
e[tot].z:=z;
first[x]:=tot;
inc(tot);
end;
procedure spfa(s:longint);
var head,tail:longint;
i,now,y:longint;
begin
head:=;
tail:=;
for i:= to n do
begin
dist[i]:= << ;
v[i]:=false;
end;
q[]:=s;
v[s]:=true;
dist[s]:=;
while head<=tail do
begin
now:=q[head];
i:=first[now];
while i<>- do
begin
y:=e[i].y;
if dist[y]>dist[now]+e[i].z then
begin
dist[y]:=dist[now]+e[i].z;
if not v[y] then
begin
inc(tail);
q[tail]:=y;
v[y]:=true;
end;
end;
i:=e[i].next;
end;
inc(head);
v[now]:=false;
end;
end;
begin
read(n,m,p);
for i:= to p do
read(c[i]);
for i:= to n do
first[i]:=-;
for i:= to m do
begin
read(x,y,z);
adde(x,y,z);
adde(y,x,z)
end;
min:=maxlongint;
for i:= to p do
begin
spfa(c[i]);
for j:= to p do
if (i<>j)and(dist[c[j]]<min) then min:=dist[c[j]];
end;
writeln(min);
end.

C-2

C-3

还是搜刮题解没看懂...貌似是dijkstra...没学QAQ

bfs貌似也行...但是看不懂...

TJM的神奇分集合也不是很懂...

实在不会啊QAQ

先水这一点...然后去补题了...

Contest-hunter 暑假送温暖 SRM08的更多相关文章

  1. Contest-hunter 暑假送温暖 SRM01

    一直找不到好的题去做...于是想到了srm...回来补题...QAQ 从srm01补起 A 题意:n个数,排成一列,刚开始都是1,如果左右相等就可以合并,问最后的数列长什么样. 思路:比赛的时候直接敲 ...

  2. bzoj4693: 雪中送温暖

    Description 每年的1月10日是温暖节,在这一天,化身出题人的C_SUNSHINE将会给OIer们送温暖.OIer们只要在门口放上一个 仙人掌,就能在早上的某个时刻听到门外传来一声:“开门, ...

  3. Contest Hunter 3101

    题目 Contest Hunter 3101 阶乘分解 原题传送门 题目分析 这里介绍一个本蒟蒻自己\(yy\)出来的方法. 我们发现,对于某一个单个的整数\(n\),若\(n\)能被某一个数\(x\ ...

  4. 【Contest Hunter【弱省胡策】Round #0-Flower Dance】组合数学+DP

    题目链接: http://ch.ezoj.tk/contest/%E3%80%90%E5%BC%B1%E7%9C%81%E8%83%A1%E7%AD%96%E3%80%91Round%20%230/F ...

  5. [Contest Hunter#17-C] 舞动的夜晚

    [题目链接] http://contest-hunter.org:83/contest/CH%20Round%20%2317/%E8%88%9E%E5%8A%A8%E7%9A%84%E5%A4%9C% ...

  6. Contest Hunter Round #70 - 连续两大交易事件杯省选模拟赛

    orz lydrainbowcat [Problem A]「艦これ市」70万幕后交易事件 排序机器=-=.重要的是相同的处理. 我们可以从小到大添加数字,然后维护一个位置的序列.每一种相等的数字都在一 ...

  7. 某次送温暖考试的 c题

    题目大意: 给定n个点的无根树,树上每个点都有一个非负的点权. 树上的路径的价值定义为树上路径的点权和-树上路径的点权最大值; 现在给定一个参数P询问有多少条路径的价值是P的倍数(注意单点也算路径,路 ...

  8. 【Contest Hunter 5302】金字塔

    [原题链接]传送门 [题解思路] 1.考虑如何将序列与树相对应,想到类似dfs序和欧拉序,同一个子树对应序列连续 2.暴力分子树过于复杂,考虑简化(划重点: 若当前区间为[l,r],考虑第一颗子树所在 ...

  9. Contest Hunter 1401 兔子与兔子

    1401 兔子与兔子 0x10「基本数据结构」例题 描述 很久很久以前,森林里住着一群兔子.有一天,兔子们想要研究自己的 DNA 序列.我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DN ...

随机推荐

  1. 第二只Python爬虫

    同样参照网上教程,同时把会的不多的html标签又复习了一下 同时安利一个网站,我唯一加入过的一个社团官网(web开发协会 www.nutjs.com 前任会长是属于大牛级的存在,目前网站已多次重构,花 ...

  2. ios中沙盒

    打开模拟器沙盒目录 下面看看模拟器的沙盒文件夹在mac电脑上的什么位置. 文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library. 2.1 方法1.可以设置显示隐藏文 ...

  3. spring定时器的cronexpression表达式

    转自:https://www.cnblogs.com/yaowen/p/3779284.html 相关配置: import com.alibaba.dubbo.config.annotation.Se ...

  4. 【微信】QQ邮箱助手不提醒解决

    1.问题及原因: 微信上的QQ邮箱提醒功能失效了,收到信后不提醒.忘了是使用了TIM,还是使用了QQ邮箱之后才出现的. 不过原因是:QQ邮箱提醒被设置为仅在QQ邮箱客户端提醒 2.解决: 重新安装QQ ...

  5. curl post CURLOPT_POSTFIELDS

    PHP: curl_setopt - Manual http://php.net/manual/en/function.curl-setopt.php CURLOPT_POST TRUE to do ...

  6. I/O多路复用技术(multiplexing)是什么?

    作者:知乎用户链接:https://www.zhihu.com/question/28594409/answer/52763082来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  7. sqlalchemy(二)高级用法 2

    转自:https://www.cnblogs.com/coder2012/p/4746941.html 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此 ...

  8. django_forms组件用ajax发送数据验证注册

    forms组件 -forms是什么? 就是一个类,可以校验字段(前台传过来的字段) -怎么用: -校验字段功能: -先写一个类,继承Form from django.shortcuts import ...

  9. oradebug工具使用2(转载)

    oradebug的前身是在ORACLE 7时的ORADBX,它可以启动用停止跟踪任何会话,dump SGA和其它内存结构,唤醒ORACLE进程,如SMON.PMON进程,也可以通过进程号使进程挂起和恢 ...

  10. 华为大数据项目fusionInsight

    项目简述:基于开源Hadoop2.0架构的集群网络,进行海量数据的分布式计算.由于Hadoop集群规模不断扩大,而搭建一个同等规模的测试集群需要一笔昂贵的开销.目前有100台左右物料,期望预测计算节点 ...