8.18 纪中集训 Day18
T1能量获取
Description
注意:能量可以经过一个节点,不满足它的需求而传向下一个节点。每条边仅能传递一次能量。
Input
接下来n行,第i+1行有三个整数Fi、Ei、Wi,分别表示i号节点的父节点、i号节点上封印石的能量需求、连接节点i与Fi的边最多能传递多少能量。
Output
Sample Input
4 0 3 2 0 100 100 1 1 1 2 75 80
Sample Output
2
Data Constraint
考场思路/正解
细读题目,不然发现,每一个节点如果能到达根,它们的贡献是一样的,所以我们只要每次去判断代价最小的节点能否到达根,如果可以,ans就++。
Code
#include<cstdio> #include<algorithm> using namespace std;int n,ans; struct thm {int zhi;int id; }sz[1010]; struct TREE {int fa;int e;int w; }tree[1010];bool cmp(thm a,thm b) <%return a.zhi<b.zhi;%>;bool check(int id,int k) {if(id==0)return true;if(tree[id].w>=k && check(tree[id].fa,k)){tree[id].w-=k;return true;}elsereturn false; }int main() {scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%d",&tree[i].fa,&tree[i].e,&tree[i].w);sz[i].id=i,sz[i].zhi=tree[i].e;}sort(sz+1,sz+1+n,cmp);for(int i=1;i<=n;i++){if(check(sz[i].id,sz[i].zhi))ans++;}printf("%d",ans);return 0; }
T2封印一击
Description
Nescafe由n种元素组成(编号为1~n),第i种元素有一个封印区[ai,bi]。当封印力度E小于ai时,该元素获得ai的封印能量;当封印力度E在ai到bi之间时,该元素将获得E的封印能量;而当封印力度E大于bi时,该元素将被破坏从而不能获得任何封印能量。现在圣主applepi想选择恰当的E,使得封印获得的总能量尽可能高。为了封印的最后一击尽量完美,就请你写个程序帮他计算一下吧!
Input
接下来N行每行两个整数ai、bi,第i+1行表示第i种元素的封印区间。
Output
Sample Input
2 5 10 20 25
Sample Output
10 30
Data Constraint
对于100%的数据,1<=N<=10^5,1<=ai<=bi<=10^9。
考场思路/正解
就是直接将它们的端点排一个序,然后可证E的位置一定在某个右端点上,然后在巧妙的处理一下就行了。
Code
#include<cstdio> #include<algorithm> #define LL long long using namespace std;LL n,a,b,sl,qzh,jl,ans,zx; struct thm {LL v;int pd; }sz[200020];bool cmp(thm a,thm b) <%return a.v<b.v;%>int main() {scanf("%lld",&n);for(LL i=1;i<=n;i++){scanf("%lld%lld",&a,&b);sz[++sl].v=a;sz[++sl].v=b;sz[sl].pd=1;qzh+=a;}sort(sz+1,sz+1+sl,cmp);for(LL i=1;i<=sl;i++){if(!sz[i].pd){qzh-=sz[i].v;jl++;}else{if(qzh+jl*sz[i].v>ans)ans=qzh+jl*sz[i].v,zx=sz[i].v;jl--;}}printf("%lld %lld",zx,ans);return 0; }
T3归途与征程
Description
Input
第二行为字符串B。
Output
Sample Input
输入1: aaaa aaaa 输入2: a*a aaaaaa 输入3: *a*b*c* abacabadabacaba
Sample Output
输出1: 4 输出2: 6 输出3: 15
Data Constraint
对于80%的测试点,M<=200;
对于100%的测试点,1<=N<=100,1<=M<=100000。
考场思路
天啊,是字符串,于是我就放弃挣扎了。
正解
Code
#include<cstdio> #include<cstring> #include<algorithm> using namespace std;int len1,len2,sl,k,zx,end,ans; int cnt[110],Next[110][110],nt[110][200020]; char s1[110],s2[200020],ch[110][110];int main() {scanf("%s%s",s1+1,s2+1);len1=strlen(s1+1);len2=strlen(s2+1);for(int i=1;i<=len2;i++)s2[i+len2]=s2[i];for(int i=1;i<=len1;i++){while(i<=len1 && s1[i]=='*')i++;sl++;while(i<=len1 && s1[i]!='*'){ch[sl][++cnt[sl]]=s1[i];i++;}}for(int i=1;i<=sl;i++){k=0;for(int j=2;j<=cnt[i];j++){while(k && ch[i][k]!=ch[i][j])k=Next[i][k];if(ch[i][k+1]==ch[i][j])k++;Next[i][j]=k;}}for(int i=1;i<=sl;i++){k=0;for(int j=1;j<=2*len2;j++){while(k && ch[i][k+1]!=s2[j])k=Next[i][k];if(ch[i][k+1]==s2[j])k++;if(k!=cnt[i])continue;zx=j-cnt[i]+1;while(zx && !nt[i][zx]){nt[i][zx]=j;zx--;}k=Next[i][k];}}for(int i=1;i<=len2;i++){end=i+len2-1;k=1;zx=i-1;if(s1[1]!='*' && i+cnt[k]-1!=nt[k][i])continue;while(zx<=end && k<=sl){zx++;zx=nt[k][zx];if(!zx) break;k++;}if(s1[len1]=='*'){if(zx<=end && sl+1==k)ans++;}else{if(sl+1!=k)continue;while(zx<end && zx)zx=nt[k-1][zx-cnt[k-1]+2];ans+=zx==end;}}printf("%d",ans);return 0; }
总结
还是感觉有种说不出的累。
明天也要加油鸭。。
转载于:https://www.cnblogs.com/Thm-V/p/11374029.html
8.18 纪中集训 Day18相关推荐
- 2019寒假纪中集训总结学期总结(流水账)
学期总结 这学期上了初三,学校的初.高中校区对调,我们的班主任也由一个生物老师换成了一个化学老师. 之前的班主任比较年轻,跟我们这群学生有这很好的感情,亦师亦友,陪伴我们度过了几乎没有中考压力的初一. ...
- [2021.8纪中集训Day14]
文章目录 1312. 老曹的忧郁 题目 思路 代码 1313. 老曹骑士 题目 思路 代码 1314. 稳定的数字 题目 思路 代码 封锁阳光大学 题目 题目描述 输入格式 输出格式 输入输出样例 说 ...
- 纪中集训2020.01.13【NOIP普及组】模拟赛C组总结————My First Time Write Summary
纪中集训2020.01.13[NOIP普及组]模拟赛C组总结 题目编号 标题 0 [NOIP普及组模拟]取值( numbers.pas/cpp) 1 [NOIP普及组模拟]数对(pairs.pas/c ...
- 纪中集训2020.01.16【NOIP普及组】模拟赛C组总结+【0.Matrix】分析
纪中集训2020.01.16[NOIP普及组]模拟赛C组总结+[0.Matrix]分析 题目: 0.matrix 1.product 2.binary 3.value 巨佬估分:100+100+40+ ...
- 2018纪中集训游记
DAY 0 从家出发的时候,阴天了,开始祈祷不要下雨(之后貌似起飞的时候下了大雨,不过当时在云层里只感觉到了一丢丢颠簸?) 飞机给咕咕了半个小时,期间一直在被老头子呵斥不要奶飞机,我一直在叨叨:飞机 ...
- 2019纪中集训总结
其实用一句话总结的话,那么就是: We still have a long way to go. 来到纪中,才知道全国还有这么多优秀的OI神犇,才知道自己不过是井下之蛙,才知道自己之前的幼自满的幼稚. ...
- 中山纪中集训游记Day2+8.2模拟赛题解
Part.I游记 纪中的OJ真的...今天下午又炸一次... 今天模拟赛竟然是考的集训队互测的题...做到自闭... 一开考看见第一题,给我的感觉是要写树套树...然而我不想写... 然后就去看了第二 ...
- 【单调队列优化dp】jzoj4883灵知的太阳信仰 纪中集训提高B组
[NOIP2016提高A组集训第12场11.10]灵知的太阳信仰 (File IO): input:array.in output:array.out Time Limits: 1000 ms Mem ...
- 【纪中集训2019.3.26】动态半平面交
题目 描述 : 给出强制在线参数\(k\),树的大小\(n\),和每个点的点权\(a_i\); 有\(m\)个询问,每个询问是$u ,d $ 的形式: 表示询问\(u\)为根的子树中,和\(u\)的距 ...
最新文章
- 数据库连接池,实现及分析
- Nature:环境vs基因,谁对肠道菌群影响更大?
- php 协程怎么用,PHP yield 协程 生成器用法的了解
- WebSocket+MSE——HTML5 直播技术解析
- Docker:Nginx-Redis-Mysql-PHP 部署
- [从C到C++] 1.3 C++布尔类型(bool)
- python生成词云代码无错窗口空框_10分钟教你用Python生成属于自己的词云图
- linux云存储软件,推荐5个Linux云存储解决方案
- js match()方法
- activemq消息丢失_面试必问之消息中间件
- VS2008都出來了﹐看來我們升級VS2005的計划要改了。
- 使用OStressSQL Server压力测试
- Euclidean, Manhattan, hop-count distance 区别
- c++ python 计算100以内的素数
- 单元测试框架TestableMock快速入门(三):校验Mock调用
- 浪曦视频在线的ASP.NET AJAX视频教程下载(转载)
- AltiumDesigner绘制PCB(一)
- 利用python处理pdf文本,帮我省下不少钱
- envi神经网络分类原理,ENVI神经网络分类
- smplayer 字幕!解决smplayer字幕乱码的方法