学习笔记20:牛客周赛32

D

统计子节点中1的个数即可(类似树形dp?)

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>using namespace std;
typedef long long LL;
#define int long long
typedef pair<int,int> PII;
const int N=1000010;
int a[N];
string x;
int dp[N];
std::vector<int> v[N];
void dfs(int u,int fa){if(x[u]=='1') dp[u]=1;for(auto c:v[u]){if(c==fa) continue;dfs(c,u);dp[u]+=dp[c];}
}
void solve(){int n;cin>>n;cin>>x;x=","+x;for(int i=1;i<n;i++){int x,y;cin>>x>>y;v[x].push_back(y);v[y].push_back(x); }dfs(1,-1);for(int i=1;i<=n;i++){cout<<dp[i]-(x[i]=='1')<<endl;}}
signed main(){int t=1;//cin>>t;while(t--){solve();} 
}

E

我们思考如果当前可以和之前的点重排成一个回文数,那么有两种情况

1.之前出现过的奇偶性质完全相等的(奇-奇=偶 偶-偶=偶)

2.之前出现过的奇偶性质中有一个不同的(奇-偶=奇 偶-奇=奇,这样会有一个值出现次数为奇数,就行  39993 393 ……)

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>using namespace std;
typedef long long LL;
#define int long long
typedef pair<int,int> PII;
const int N=1000010;
int a[N];
void solve(){string x;cin>>x;int ans=0;map<vector<int>,int>mp;vector<int>sum;for(int i=0;i<10;i++) sum.push_back(0);mp[sum]++;for(int i=0;i<x.size();i++){sum[x[i]-'0']^=1;ans+=mp[sum];for(int i=0;i<10;i++){vector<int>tt=sum;tt[i]^=1;ans+=mp[tt];}mp[sum]++;}cout<<ans<<endl;
}
signed main(){int t=1;// cin>>t;while(t--){solve();}
}

F

状态压缩dp

变成r对应0

变成e对应1

变成d对应2

可以用三进制模拟

1.首先枚举自己可行的转变的状态j

        也就是,在自己这列中,相邻不相等的状态

2.然后再枚举上一列的状态k

        如果对于j和k,如果不冲突则可以直接转化

最终答案就是min(dp[m-1][k])

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>using namespace std;
typedef long long LL;
#define int long long
typedef pair<int,int> PII;
const int N=1000010;
int a[N];
string str[N];
int tmp[N];
int t[5]={1,3,9,27,81};
int dp[1010][1010];
int n,m;int b[4];
bool check(int num){for(int i=0;i<n;i++){b[i]=num%3;num/=3;}for(int i=1;i<n;i++) if(b[i]==b[i-1]) return false;return true;
}
bool check(int x,int y){for(int i=0;i<n;i++){if(x%3==y%3) return false;x/=3;y/=3;}return true;
}
void solve(){cin>>n>>m;for(int i=0;i<n;i++) cin>>str[i];int ans=1e18;map<char,int>mp;mp['r']=0;mp['e']=1;mp['d']=2;memset(dp,0x3f,sizeof dp);for(int i=0;i<m;i++){for(int j=0;j<t[n];j++){int res=0;int now=j;if(check(j)){if(!i){for(int k=0;k<n;k++){if(mp[str[k][i]]!=(now%3))res++;now/=3;}dp[i][j]=min(dp[i][j],res);}else{for(int k=0;k<n;k++){if(mp[str[k][i]]!=(now%3))res++;now/=3;}for(int k=0;k<t[n];k++){if(check(j,k)){dp[i][j]=min(dp[i][j],dp[i-1][k]+res);}}}if(i==m-1){ans=min(dp[i][j],ans);}}}}cout<<ans<<endl;
}
signed main(){int t=1;//cin>>t;while(t--){solve();}
}

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

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

相关文章

17.3.1.3 灰度

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 灰度的算法主要有以下三种&#xff1a; 1、最大值法: 原图像&#xff1a;颜色值color&#xff08;R&#xff0c;G&#xff0c;B&a…

.NET Core WebAPI中使用Log4net记录日志

一、安装NuGet包 二、添加配置 // log4net日志builder.Logging.AddLog4Net("CfgFile/log4net.config");三、配置log4net.config文件 <?xml version"1.0" encoding"utf-8"?> <log4net><!-- Define some output appenders -->…

【点云】生成有凹凸的平面

文章目录 前言高斯函数原理代码保存 测试测试1 &#xff1a;领域曲率代码测试2&#xff1a;高斯曲率代码 加上噪点测试1测试2 总结 前言 尝试用一些数据生成有凹凸面的点云。 我们姑且把z轴当成有凹凸的缺陷&#xff0c;x轴和y轴共同组成一个平面。 高斯函数 原理 高斯函数w…

可视化锻炼日记ExerciseDiary

什么是 ExerciseDiary &#xff1f; ExerciseDiary 是带有 GitHub 风格的年度可视化的锻炼日记。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 exercisediary &#xff0c;选择第一个 aceberg/exercisediary&#xff0c;版本选择 latest。 本文写作时&#xff0c; lat…

线程安全性的原理分析学习

初步认识Volatile 一段代码引发的思考 下面这段代码&#xff0c;演示了一个使用volatile以及没使用volatile这个关键字&#xff0c;对于变量更新的影响 package com.sp.demo;/*** author : lssffy* Description :* date : 2024/2/16 18:42*/ public class VolatileDemo {publi…

C++数据结构与算法——栈与队列

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

Excel TEXT函数格式化日期

一. 基本语法 ⏹Excel 的 TEXT 函数用于将数值或日期格式化为指定的文本格式 TEXT(value, format_text)二. 拼接路径案例 # 将当前单元格日期格式化 "ls -ld /data/jmw/01/"&TEXT(A2,"YYYYMMDD")&""# 此处的日期, 是名称管理器里面定…

视觉slam十四讲学习笔记(六)视觉里程计 1

本文关注基于特征点方式的视觉里程计算法。将介绍什么是特征点&#xff0c;如何提取和匹配特征点&#xff0c;以及如何根据配对的特征点估计相机运动。 目录 前言 一、特征点法 1 特征点 2 ORB 特征 FAST 关键点 BRIEF 描述子 3 特征匹配 二、实践&#xff1a;特征提取…

排序算法---桶排序

原创不易&#xff0c;转载请注明出处。欢迎点赞收藏~ 桶排序&#xff08;Bucket Sort&#xff09;是一种排序算法&#xff0c;它将待排序的数据分到几个有序的桶中&#xff0c;每个桶再分别进行排序&#xff0c;最后将各个桶中的数据按照顺序依次取出&#xff0c;即可得到有序序…

linux登录后提示语

linux登录后的提示一般是这样的&#xff1a; Last failed login: Wed Feb 14 19:18:07 CST 2024 from xx.xx.xx.xx on ssh:notty There were 138 failed login attempts since the last successful login. Last login: Tue Feb 13 09:08:11 2024 from xx.xx.xx.xxWelcome to H…

shell 编程:终端输入一个字符,判断是大写字母小写字母还是数字字符。

&#xff08;1&#xff09; #!/bin/bashread -p "Please input a character:" scase $s in[0-9])echo 数字;;[a-z])echo 小写字母;;[A-Z])echo 大写字母;; esac演示 &#xff08;2&#xff09; #!/bin/bash read -p "请输入一个字符: " char if [[ $ch…

JVM-垃圾回收(标记算法,收集器)

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 垃圾回收的基本原理 1 什么是垃圾&#xff1f; 在…