D1 模拟赛

T1 note 数组开小 菜的真实 60分

题目大意:

一个字符串 分成若干段 使每段内都没有重复的字符 求最少的段数

思路:

可以贪心

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstdlib>
 5 #include<cstring>
 6 #include<algorithm>
 7 #include<vector>
 8 #include<queue>
 9 #define inf 2139062143
10 #define ll long long
11 #define MAXN 601010
12 using namespace std;
13 inline int read()
14 {
15     int x=0,f=1;char ch=getchar();
16     while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
17     while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}
18     return x*f;
19 }
20 char ch[MAXN];
21 int n,ans,hsh[30];
22 int main()
23 {
24     freopen("note.in","r",stdin);
25     freopen("note.out","w",stdout);
26     scanf("%s",ch+1);
27     int n=strlen(ch+1);
28     for(int i=1;i<=n;i++)
29     {
30         if(hsh[ch[i]-'a']) {memset(hsh,0,sizeof(hsh));ans++;}
31         hsh[ch[i]-'a']=1;
32     }
33     printf("%d",ans+1);
34 }
View Code

 

T2 work 顺利a掉

题目大意:

一个数列A 取一些数 不能取连续k个数 求取的数的最大值

思路:

把问题转化为k个里面必须取一个 求取的数的最小值

可以使用单调队列优化dp

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstdlib>
 5 #include<cstring>
 6 #include<algorithm>
 7 #include<vector>
 8 #include<queue>
 9 #define inf 2139062143
10 #define ll long long
11 #define MAXN 201010
12 using namespace std;
13 inline ll read()
14 {
15     ll x=0,f=1;char ch=getchar();
16     while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
17     while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}
18     return x*f;
19 }
20 ll n,k,a[MAXN],dp[MAXN],q[MAXN],l,r,s,ans=inf;
21 int main()
22 {
23     freopen("work.in","r",stdin);
24     freopen("work.out","w",stdout);
25     n=read(),k=read();
26     for(int i=1;i<=n;i++) a[i]=read(),s+=a[i];
27     q[l=r=1]=0;
28     for(int i=1;i<=n;i++)
29     {
30         while(l<r&&q[l]<i-k) l++;
31         dp[i]=dp[q[l]]+a[i];
32         while(l<r&&dp[i]<dp[q[r]]) r--;
33         q[++r]=i;
34     }
35     ans=dp[n];
36     for(int i=n-k+1;i<n;i++)
37         ans=min(ans,dp[i]);
38     printf("%lld",s-ans);
39 }
View Code

 

T3 cave 在熊神的帮助下a掉

题目大意:

一棵树 每条边有边权x 走该条边会花费x点能量 可以重复走一条边 并会消耗2*x点能量

q次询问 每次询问k点能量可以最多走过多少个不同的点

思路:

首先可以想到dp i j 0/1 表示第i个点 用j点能量 进入子树是否回到i点 表示可以走过的最多不同点的个数

发现能量可能很大 就把 j 和dp表达的值调换

dp i j 0/1 表示第i个点 走j个不同点 进入子树是否回到i点 花费的最少能量

然后对于每个子树做背包

方程见代码

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstdlib>
 5 #include<cstring>
 6 #include<algorithm>
 7 #include<vector>
 8 #include<queue>
 9 #define inf 2139062143
10 #define ll long long
11 #define MAXN 530
12 using namespace std;
13 inline int read()
14 {
15     int x=0,f=1;char ch=getchar();
16     while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
17     while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}
18     return x*f;
19 }
20 int n,fst[MAXN],nxt[MAXN<<1],to[MAXN<<1],val[MAXN<<1],cnt;
21 int sz[MAXN],dp[MAXN][MAXN][2],t[MAXN][2];
22 void add(int u,int v,int w) {nxt[++cnt]=fst[u],fst[u]=cnt,to[cnt]=v,val[cnt]=w;}
23 void dfs(int x,int fa)
24 {
25     sz[x]=1;
26     for(int i=fst[x];i;i=nxt[i])
27         if(to[i]!=fa) {dfs(to[i],x);sz[x]+=sz[to[i]];}
28 }
29 void dfs(int x)
30 {
31     dp[x][1][1]=dp[x][1][0]=0;
32     for(int i=fst[x];i;i=nxt[i])
33         if(sz[to[i]]<sz[x]) dfs(to[i]);
34     for(int j=fst[x];j;j=nxt[j])
35         if(sz[to[j]]<sz[x])
36         {
37             memset(t,127,sizeof(t));
38             for(int i=2;i<=sz[x];i++)
39                 for(int k=1;k<=min(sz[to[j]],i-1);k++)
40                 {
41                     t[i][0]=min(t[i][0],min(dp[x][i-k][1]+dp[to[j]][k][0]+val[j],dp[x][i-k][0]+dp[to[j]][k][1]+2*val[j]));//从这个该儿子的子树里出来进入别的儿子的树或从别的儿子的树出来进入该儿子的树 
42                     t[i][1]=min(t[i][1],dp[x][i-k][1]+dp[to[j]][k][1]+2*val[j]);//需要从以儿子为根的树出来并从别的子树出来 
43                 }
44             //t数组因为忘记了背包要倒着dp导致需要t数组来保证不会改变被用到的dp值 
45             for(int i=1;i<=sz[x];i++)
46                 dp[x][i][0]=min(t[i][0],dp[x][i][0]),dp[x][i][1]=min(t[i][1],dp[x][i][1]);
47         }
48 }
49 int main()
50 {
51     freopen("cave.in","r",stdin);
52     freopen("cave.out","w",stdout);
53     n=read();int a,b,c,res;
54     for(int i=1;i<n;i++) {a=read(),b=read(),c=read();add(a,b,c);add(b,a,c);}
55     int T=read();memset(dp,127,sizeof(dp));
56     dfs(1,0);dfs(1);
57     while(T--)
58     {
59         a=read(),res=0;
60         for(int i=n;i>=1;i--) if(dp[1][i][0]<=a) {res=i;break;}
61         printf("%d\n",res);
62     }
63 }
View Code 

转载于:https://www.cnblogs.com/yyc-jack-0920/p/9299824.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模仿人脑视觉处理,助力神经网络应对对抗性样本

来源&#xff1a;混沌巡洋舰自从深度学习只能识别支票和信封上的手写字母以来&#xff0c;它已经取得了长足的进步。今天&#xff0c;深度神经网络已经成为许多计算机视觉应用的关键组成部分&#xff0c;从照片和视频编辑器到医疗软件和自动驾驶汽车。神经网络大致模仿了大脑的…

jsp四种范围对象

jsp的九大内置对象中又有四个被称为范围对象 四种范围对象&#xff1a;&#xff08;范围由小到大排列为&#xff09; pageContext jsp页面容器 &#xff08;也被称作page对象&#xff09; request 请求对象 session 会话对象 application 全局对象 以…

电子很可能具有意识

© Olhar Digital来源&#xff1a;利维坦文&#xff1a;Tam Hunt译&#xff1a;猫大郎校对&#xff1a;兔子的凌波微步2020年5月&#xff0c;“宇宙有意识吗&#xff1f;”作为标题出现在《新科学人》&#xff08;New Scientist&#xff09;周刊的一期封面上。德国慕尼黑数…

php改密后joomla无法登陆,php – Joomla 3.3禁用“重置密码”功能

您可以使用所需的重定向为这两个视图创建模板覆盖.您必须将文件放在&#xff1a;/templates/*your_template/html/com_users/remind/default.php/templates/*your_template/html/com_users/reset/default.php并在default.php中添加以下代码&#xff1a;/*** package Joomla.Sit…

JDBC--Java Database Connectivity

1.JDBC:Java DataBase Connectivity 可以为多种关系型数据库DBMS 提供统一的访问方式&#xff0c;用Java来操作数据库 2.JDBC API 主要功能&#xff1a; 三件事&#xff0c;具体是通过以下类/接口实现&#xff1a; DriverManager &#xff1a; 管理jdbc驱动 Connection&#x…

计蒜客 28437.Big brother said the calculation-线段树+二分-当前第k个位置的数 ( ACM训练联盟周赛 M)...

M. Big brother said the calculation 通过线段树维护。 这个题和杭电的一道题几乎就是一样的题目。HDU5649.DZY Loves Sorting 题意就是一个n的排列&#xff0c;执行Q次操作&#xff0c;每次操作是对某个区间从小到大排序或者从大到小排序。最后只查询一次&#xff0c;输出第k…

oracle乱码函数,jfinal oracle操作时decode函数填值乱码 求助什么原因????

![输入图片说明](https://git.oschina.net/uploads/images/2017/0527/151633_3e7d8cc4_403754.png "在这里输入图片标题")![输入图片说明](https://git.oschina.net/uploads/images/2017/0527/151852_563c21cd_403754.png "在这里输入图片标题")**sql映射文…

数字孪生:连结现实与数字世界

作者&#xff1a;德勤洞察来源&#xff1a;《软件与集成电路》2020年第5期试想一下&#xff0c;你拥有一个现实世界的完美数字副本&#xff1a;数字孪生。它可以帮助你开展虚拟协作&#xff0c;快速获取传感器数据并模拟条件&#xff0c;清楚地了解假设情景&#xff0c;更能精准…

phalanger php compiler,phalanger-php的.net编译器 _php技巧

除了IronPython&#xff0c;微软正试着让.NET平台支持更多你我熟知的动态语言&#xff0c;例如Perl、PHP、Ruby。根据IronPython的创造者、也是微软CLR开发部门主管Jim Hugunin表示&#xff0c;微软正试着以不同的方式协助动态语言进驻.NET平台&#xff0c;不论是加强.NET底层的…

微软和谷歌的人工智能,在SuperGLUE基准测试中超越了人类

大数据文摘出品来源&#xff1a;venturebeat编译&#xff1a;千雪2019年底&#xff0c;Facebook、纽约大学、华盛顿大学和DeepMind的研究人员联合提出了SuperGLUE&#xff0c;这是人工智能的一个新基准&#xff0c;旨在总结多种语言任务的研究进展。基于一年前推出的GLUE基准&a…

[leetcode]从中序与后序/前序遍历序列构造二叉树

从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7] 后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&#xff1a; 3/ \9 20/ \15 7 思路&…

Leetcode--56. 合并区间

给出一个区间的集合&#xff0c;请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为…

oracle课程设计摘要,Oracle程序设计课程设计概要(doc 35页)

Oracle程序设计课程设计概要目录&#xff1a;《Oracle数据库应用与开发实例教程》是学习数据库技术的高级阶段课程&#xff0c;读者应该在选择学习《数据库应用基础实例教程》、《Access2003数据库实用教程》、《SQL Server 数据库应用基础与实现》和《SQL Server2005 实例教程…

2020年度中国生命科学十大进展公布 | 中国科协生命科学学会联合体

来源&#xff1a;中国科协生命科学学会联合体本年度的评选&#xff0c;联合体成员学会推荐的项目较往年数量明显增加&#xff0c;体现了“中国生命科学十大进展”评选日臻完善&#xff0c;社会影响力与关注度不断扩大&#xff1b;获奖项目中非院士主导项目所占比例较往年大&…

springmvc log4j配置

1. web.xml <!-- 加载Log4J 配置文件 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/conf/log4j.properties</param-value> </context-param> <context-param> <pa…

debian php安装pdo扩展,在debian下为PHP5.0.3安装pdo模块

pdo作为下一个php的数据库统一接口&#xff0c;目前的版本是0.9&#xff0c;看来不久就可以release了&#xff0c;抢先尝鲜。经过测试&#xff0c;pdo联结比adodb快3倍左右&#xff0c;和直接联结相差很小。测试工具&#xff1a;AB测试条件Apache/2.0.54 (Debian GNU/Linux) mo…

Leetcode--238. 除自身以外数组的乘积

给定长度为 n 的整数数组 nums&#xff0c;其中 n > 1&#xff0c;返回输出数组 output &#xff0c;其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法&#xff0c;且在 O(n) 时间复杂度内完…

百度研究院发布2021年十大科技趋势预测

来源&#xff1a;百度智能云作者&#xff1a;刘瑾疫情加速 AI 融合落地AI 将更加深入大众生活2020年&#xff0c;全球抗疫促使 AI 与 5G、大数据、物联网等新一代信息技术相互融合&#xff0c;AI 测温、AI 问诊、智能外呼、服务机器人等创新应用开始大规模普及&#xff0c;从生…

oracle的删除的row如何,Oracle 删除大表中部分数据

需求&#xff1a;项目中有一张表大概有7000多万条数据&#xff0c;造成表空间已满&#xff0c;需要清理部分数据&#xff0c;打算清理3000万。2B 做法&#xff1a;delete from table_name where ID > 40000000;备注&#xff1a;select count(1) from table_name where ID &g…

promise请求数据用法

promise请求数据用法 Promise简介 Promise 是异步编程的一种解决方案&#xff0c;比传统的解决方案–回调函数和事件&#xff0d;&#xff0d;更合理和更强大。ES6将其写进了语言标准&#xff0c;统一了语法&#xff0c;里面保存着某个未来才回结束的事件(通常是一个异步操作&a…