文章目录

  • 0 能量获取
  • 1 封印一击
  • 2 归途与征程
  • 荣耀永不散场

0 能量获取

“封印大典启动,请出Nescafe魂珠!”随着圣主applepi一声令下,圣剑护法rainbow和魔杖护法freda将Nescafe魂珠放置于封印台上。封印台是一个树形的结构,魂珠放置的位置就是根节点(编号为0)。还有n个其他节点(编号1-n)上放置着封印石,编号为i的封印石需要从魂珠上获取Ei的能量。能量只能沿着树边从魂珠传向封印石,每条边有一个能够传递的能量上限Wi,魂珠的能量是无穷大的。作为封印开始前的准备工作,请你求出最多能满足多少颗封印台的能量需求?

注意:能量可以经过一个节点,不满足它的需求而传向下一个节点。每条边仅能传递一次能量。

对于100%的数据,满足1<=n<=1000,0<=Fi<=n,0<=Ei,Wi<=100


贪心
正确性易证
每次选择需求能量最小的点,判断到根节点的边是否都满足能把该点需求满足,更新答案,路过的边的边权都减一下
假的证明:
如果在该节点的子节点中有更划算的点,那么更划算的点的能量需求一定是更小的(更划算就是指能满足更多的点啊)

#include <cstdio>
#include <algorithm>using namespace std;int n,ans;
struct cv{int f,e,w,h;
}a[1003];
int s[1003];bool comp(cv a,cv b){return a.e<b.e;
}void read(){scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d%d%d",&a[i].f,&a[i].e,&a[i].w);a[i].h=i;}sort(a+1,a+1+n,comp);for (int i=1;i<=n;i++){s[a[i].h]=i;}
}bool dfs(int x,int ww){if (x==0) return 1;if (a[x].w<ww) return 0;if (dfs(s[a[x].f],ww)) {a[x].w-=ww;return 1;}return 0;
}void dp(){for (int i=1;i<=n;i++){if (dfs(s[a[i].h],a[i].e)) ans++;}
}int main(){read();dp();printf("%d",ans);
}

1 封印一击

“圣主applepi于公元2011年9月创造了Nescafe,它在散发了16吃光辉之后与公元2011年11月12日被封印为一颗魂珠,贮藏于Nescafe神塔之中。公元2012年9月,圣主带领四大护法重启了Nescafe,如今已经是Nescafe之魂的第30吃传播了。不久,它就要被第二次封印,而变成一座神杯。。。”applepi思索着Nescafe的历史,准备着第二次封印。

Nescafe由n种元素组成(编号为1~n),第i种元素有一个封印区[ai,bi]。当封印力度E小于ai时,该元素获得ai的封印能量;当封印力度E在ai到bi之间时,该元素将获得E的封印能量;而当封印力度E大于bi时,该元素将被破坏从而不能获得任何封印能量。现在圣主applepi想选择恰当的E,使得封印获得的总能量尽可能高。为了封印的最后一击尽量完美,就请你写个程序帮他计算一下吧!

对于50%的数据,1<=N<=1000,1<=ai<=bi<=10000。

对于100%的数据,1<=N<=105,1<=ai<=bi<=109。


可以看出选择的E一定是在区间右端点的
假的证明:
如果已经选择了一个E且E不在任意区间右端点上,那么E可以移动到离它最近的区间右端点,这样的移动对E原来取得的值不会有减少,因为它没有移出任何一个区间,原来没选到的区间还是选不到;值会增加,因为在区间内的取值是它自己

所以排序一下枚举就好啦
话说这样算是离散(?)

#include <cstdio>
#include <algorithm>using namespace std;const int N=100005;
int n,c;
long long ans;
long long a[N],b[N],s[N];void read(){scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%lld%lld",&a[i],&b[i]);sort(a+1,a+1+n);sort(b+1,b+1+n);long long k=1;for (int i=n;i>=1;i--) s[i]=s[i+1]+a[i];for (int i=1;i<=n;i++){while (a[k]<=b[i]&&k<=n) k++;long long an=s[k]+(k-i)*b[i]; if (an>ans) ans=an,c=b[i];}
}int main(){read();printf("%d %lld",c,ans);
}

2 归途与征程


对于30%的数据,M<=20;

对于80%的测试点,M<=200;

对于100%的测试点,1<=N<=100,1<=M<=100000。



可以根据*的位置把A分成几个字符串,B的循环同构串就把它复制粘贴一遍,这样每个长度为B原长度m的子串都是它的循环同构串

题意就转化为在粘贴后的B中,有多少个长度为m的子串,包含了A转化出的所有子串

欸,一个字符串和多个字符串匹配呢,KMP搞一搞啦

KMP复习:
一个长的串B,判断小的串A是否它的子串,并找出A出现的位置
next[i]:A自匹配,A中以i结尾的非前缀子串,与A前缀匹配长度
f[i]:B中以i开头,与A的匹配长度 或 是否是A的一个匹配 或 其它什么需要的数据

这题
设f[i][j] 表示B中以i开头,是否匹配了A的第j个子串
g[i][j] 表示B中以i开头,最先匹配A的第j个子串的位置
其中f[i][j]可以直接由KMP得
g[i][j] 由f 得
后面就枚举B的循环同构串的开头,看看是否能在m长度内把A的所有子串匹配完
其中A的开头、结尾不是* 的需要特判,必须恰好和所枚举的串头或尾匹配
O ( n m ) O(nm) O(nm)

#include <cstdio>using namespace std;char a[105],b[200006];
int n,m,ans,st,ed,l;
int c[105],g[200005][55];
int f[200005][55],next[106];void kmp(char a[105],int len,int cd){for (int i=2,j=0;i<=n;i++){while (j>0&&a[j+1]!=a[i]) j=next[j];if (a[j+1]==a[i]) j++;next[i]=j;}for (int i=1,j=0;i<m;i++){while (j>0&&(j==n||a[j+1]!=b[i])) j=next[j];if (a[j+1]==b[i]) j++;if (j==len){f[i-len+1][cd]=1;j=next[j];}}g[m+1][cd]=m+1;for (int i=m;i>=1;i--){if (f[i][cd]==1) g[i][cd]=i;else g[i][cd]=g[i+1][cd];}
}void read(){char ch=getchar();while (ch!='*'&&(ch<'a')||ch>'z') ch=getchar();while (ch=='*'||(ch>='a'&&ch<='z')){a[++n]=ch;ch=getchar();}while (ch<'a'||ch>'z') ch=getchar();while (ch>='a'&&ch<='z'){b[++m]=ch;ch=getchar();}int cm=m;for (int i=1;i<=cm;i++){b[++m]=b[i];}if (a[1]=='*') st=1;if (a[n]=='*') ed=1;for (int i=1;i<=n;i++){while (a[i]=='*') i++;char s[105];int k=0;l++;while (a[i]!='*'&&i<=n){s[++k]=a[i];i++;}c[l]=k;kmp(s,k,l);}
}int main(){read();for (int i=1;i<=m/2;i++){int x=i,nn=i+m/2,ss=1,ee=l;if (st!=1){if (f[i][1]==0)    continue;x=i+c[1];ss++;} if (ed!=1){//&&ss<=lif (f[nn-c[l]][l]==0) continue;nn-=c[l];ee--;}for (int j=ss;j<=ee;j++){x=g[x][j];if (x>nn) break;x+=c[j];}if (x<=nn||ss>ee) ans++;}printf("%d",ans);
}

荣耀永不散场

注意第三题的题目——归途与征程
这个东西,放到百度搜索,翻到第二页(或者第一页,反正很前面),会有一个标题为“【高乔】归途与征程(1)-折戟沉沙 ” 的东西
你点开它,发现










它是一个全职同人文!!!!主角是乔一帆,第十七届职业联赛后退役,然后重生回第十区开区那天的故事
然后这还是一篇,纯爱??!!!cp是高英杰x乔一帆??!

我,震惊
LOFTER的魔爪已经伸到
我不是不喜欢耽美,只是有点震惊于我搜个信竞题目还会看到LOFTER
【高乔】归途与征程(1)-折戟沉沙 感兴趣的可以点开感受一下
我就不看了哈
哎我还是比较喜欢无cp的全职啦
虽然那么一大帮年轻气盛朝气蓬勃的男孩子们聚在一起这个状况非常诱人
我还是再坚持一下
如果我真香
那就再说吧
哎哎哎刚刚那个文只更了19章呐,写到小乔和叶神一起下冰霜森林副本,感情线几乎还没展开

 、                    、、、                 、、、、、             、、、、、、、          、、、、——————荣耀永不散场——————

2019.08.18【NOIP提高组】模拟 B 组 贪心+离散+KMP相关推荐

  1. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  2. 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结

    2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...

  3. ethos-专用系统 2019.08.18升级公告!

    ethos-专用系统2019.08.18 升级如下内容: 1.后台web界面,加入集控信息,用户可远程批量查看矿机运行情况(温度算力功耗)! 2.升级bminer软件至15.87版本,优化增加clay ...

  4. JZOJ 5281. 【NOIP提高组模拟A组8.15】钦点

    Description Input Output Sample Input 4 4 2 a a b b a a b b c c d d c c d d 1 1 3 3 2 2 3 1 1 3 2 2 ...

  5. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

    题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...

  6. 【二分,找规律】Day 14 提高组模拟C组 T1 小麦亩产一千八

    题目大意 给定斐波那契的第aaa项,求出第b" role="presentation">bbb项,默认第0项为1 解题思路 方法一:递推 找到规律后O(b)O(b) ...

  7. 2019.08.18 日记--迁移微雪2.9寸电子墨水屏代码到Stm32F407上

    今天起晚了,大约吃了午饭开始干的活..... 主要完成了 微雪2.9寸电子墨水屏的代码迁移. 官方提供的代码是 基于STM32F103的,我对他进行了 代码的迁移,使之能运行在Stm32F407上.  ...

  8. 《惢客创业日记》2019.08.18(周日)网络名词与低智商者的狂欢(三)

    用两篇日记也没有把这个主题写完,今天,做个总结吧.前两篇主要写自己的观察.分析和感受.今天,就在日记中记录一个人,但是,在文学领域,他可是长青树,不但当过文化部部长,还是一名老牌的作家.之所以提到他, ...

  9. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

最新文章

  1. Recommenders with TensorRT
  2. 解压缩工具 WinRAR 5.71 + x64 Final 中文汉化版
  3. mysql 权限管理 目录
  4. 转:Linux搭建git私服
  5. 57. Android之程序调试LogCat (转)
  6. c语言二叉树的生成,C语言实现二叉树的创建以及遍历(递归)
  7. 云场景实践研究第27期:袋鼠云
  8. 箫 音之乐 生(声)之乐
  9. linux安装weblogic界面,Weblogic11g 安装Linux下无Weblogic安装图形界面
  10. c++ 代码_C|函数调用约定与堆栈平衡的汇编代码分析
  11. ESP32-8位数码管
  12. ZEMAX | 如何对中间面进行优化
  13. feign Ambiguous mapping 解决方式
  14. antd修改Tooltip背景色
  15. [转载]创建、部署和调试 Apache Geronimo 应用程序
  16. 移动端获取手机自带的返回键并添加事件。
  17. 【报告分享】 2021年天猫618商务合作方案-天猫x阿里妈妈(附下载)
  18. 俄语考生学计算机难吗,俄语说的不好,没有计算机证书,甚至还是单身狗,怎么办?...
  19. 手机最好的html5浏览器,综合能力的较量 8大手机浏览器半年横评
  20. 如何禁用手机自带的输入法软键盘

热门文章

  1. 大话设计模式之爱你一万年:第二章 创建型模式:单例模式:我的女朋友只有你一个:1.单例模式的基本概念
  2. 一个落魄大学生的毕业设计【校园微信小程序】
  3. WEB端唤起 百度|腾讯|高德 地图一键导航功能
  4. 拼多多回应“差评”:将起诉并索赔1000万元 所涉店铺均已屏蔽
  5. 常用的开源MP3编解码器
  6. 网页直播源码与编解码
  7. Ubuntu18.04两个Cuda(cuda10.0+cuda9.0)、两个Cudnn(cudnn7.3.1+cudnn7.0.5),并进行自由切换
  8. 女人对性的态度,看完就明白了!
  9. 4g网络什么时候淘汰_4G会被淘汰?4G手机会退网?中国移动发话了
  10. GridView显示图片(图文)