当前位置:网站首页>8/1 思维+扩展欧几里得+树上dp
8/1 思维+扩展欧几里得+树上dp
2022-08-02 05:35:00 【钟钟终】
> 活动地址:CSDN21天学习挑战赛
D. Gargari and Permutations
题意:1900难度的dp题,给定k个长度为n的数字排列,找到最长的公共子序列的长度。
思路:
1.属于经典dp问题,最长公共子序列。复杂度在O(n^2)
2.记录每个串数字所在的位置;p[i][a[i][j]]=j
3.对比第二个之后的排列,满足排列1中的数字的相对位置关系,方向应一致不满足则无法进行更新长度
4.f[i]表示截止到i的最长公共徐磊长度。
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=5e5+5;
const int mod=1e9+7;
int n,k,a[15][1005],p[15][1005],f[1005];
signed main()
{
IOS;
cin>>n>>k;
for(int i=1;i<=k;i++)
{
for(int j=1;j<=n;j++)
cin>>a[i][j],p[i][a[i][j]]=j;
}
for(int i=1;i<=n;i++)
{
f[i]=1;
for(int j=1;j<i;j++)
{
int flag=1;
for(int g=2;g<=k;g++)
if(p[g][a[1][j]]>p[g][a[1][i]])
{
flag=0;break;
}
if(flag) f[i]=max(f[i],f[j]+1);
}
}
int ans=0;
for(int i=1;i<=n;i++)
ans=max(ans,f[i]);
cout<<ans<<endl;
return 0;
}
D. Binary String Minimizing
思路:
1.思路倒是不复杂,利用k的次数将0尽可能的向前移动。
2.我得问题是代码敲得太繁琐了。本题可考虑在原串上进行更改,利用swap函数,使用g来记录前面已经放了多少个0,待放‘0’的下标
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=5e5+5;
const int mod=1e9+7;
int n,k,pos[N];
string s;
signed main()
{
IOS;
int q;cin>>q;
while(q--)
{
cin>>n>>k;
cin>>s;
int g=0;
for(int i=0;i<n;i++)
{
if(s[i]=='0')
{
if(i-g<=k)
k-=i-g,swap(s[g],s[i]),g++;
else
{
swap(s[i],s[i-k]);break;
}
}
}
cout<<s<<endl;
}
return 0;
}
CF7C Line
题意:给定一条直线Ax+By+C=0,找到一个点使得横纵坐标都为整数。
思路:
1.刚开始以为是计算几何,没想到本质竟然是扩展欧几里得的裸题。
2.扩欧模板:
解线性方程,定义:
1.定义形如 ax+by=c的方程(其中x,y为未知数)的方程叫做“线性方程”;
2.它的解总是成对出现的(类比线的上点);
3.它等价于求解ax≡c(mod b);
4.它有整数解的充要条件是c%gcd(a,b)=0。
以前写的证明:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=5e5+5;
const int mod=1e9+7;
int a,b,c,ans;
ll exgcd(int A,int B,int &x,int &y) //扩展欧几里得 模板
{
if(!B)
{
x=1,y=0;
return A;
}
int d=exgcd(B,A%B,x,y);
int tmp=x;
x=y , y=tmp-A/B*y;
return d;
}
signed main()
{
IOS;
cin>>a>>b>>c;
c=-c;
int x,y;
int d=exgcd(a,b,x,y);
x=c/d*x;
y=c/d*y;
cout<<x<<" "<<y<<endl;
return 0;
}
P1272 重建道路
思路:
1.f[i][j]表示保留以i结点为根的子树,结点个数为j,需要删去几条线
2.f[u][1]=c[u]表示只选u为根需要删去几条边
3.u和e[i].to相连接的节点给砍掉了,但是u和e[i].to相连的的度应该保留,而这段相连的度,在u中算了一次,在edge[i].to中也算了一次,所以应该-2
#include<bits/stdc++.h>
using namespace std;
const int N=5e2+5;
const int inf=0x3f3f3f3f;
int n,p,c[N],f[N][N],head[N],cnt;
struct edge
{
int nxt,to;
}e[N];
void add(int from,int to)
{
e[++cnt].nxt=head[from];
e[cnt].to=to;
head[from]=cnt;
}
void dfs(int u,int root)
{
f[u][1]=c[u];
for(int i=head[u];i;i=e[i].nxt)
{
if(e[i].to!=root)
{
dfs(e[i].to,u);
for(int j=p;j>=1;j--)
for(int k=1;k<j;k++)
f[u][j]=min(f[u][j],f[u][k]+f[e[i].to][j-k]-2);
}
}
}
int main()
{
cin>>n>>p;
for(int i=1;i<n;i++)
{
int a,b;cin>>a>>b;
c[a]++,c[b]++;
add(a,b);
add(b,a);
}
memset(f,inf,sizeof(f));
dfs(1,0);
int ans=inf;
for(int i=1;i<=n;i++)
ans=min(f[i][p],ans);
cout<<ans<<endl;
return 0;
}
边栏推荐
- MySql - there is no insert, there is update or ignored
- Point Density-Aware Voxels for LiDAR 3D Object Detection Paper Notes
- pytorch basic operations: classification tasks using neural networks
- View source and switch mirrors in two ways: npm and nrm
- DNS resolution process
- MySQL high-level statements (1)
- leetcode solves the linked list merge problem in one step
- Leetcode周赛304
- 点云旋转到参考坐标系方向(最小方向包围盒方法)
- How the Internet of Things is changing the efficiency of city operations
猜你喜欢

Nacos installation configuration and single-machine deployment tutorial

Analysis of port 9848 error at startup of Nacos client (non-version upgrade problem)

How the Internet of Things is changing the efficiency of city operations

Analysis of the source code of the JS UI framework of Hongmeng system

Not annotated parameter overrides @NonNullApi parameter

zabbix自动发现和自动注册

nodejs的安装和全局配置(超详细哦)

代码编世界 科技创未来

Nacos数据库配置

APP专项测试:流量测试
随机推荐
直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
VMTK环境配置记录
MySQL高级学习笔记
zabbix自动发现和自动注册
Redis(十二) - Redis消息队列
Toolbox App 1.25 New Features at a Glance | Version Update
mysql高阶语句(一)
Polar Parametrization for Vision-based Surround-View 3D Detection Paper Notes
npm、cnpm的安装
node安装和配置(node-v12.20.2-x64 ) 以及node版本切换介绍
HCIP BGP综合实验 建立对等体、路由反射器、联邦、路由宣告及聚合
MySQL驱动jar包的下载--保姆教程
MySQL高阶---存储引擎、索引、锁
A detailed introduction to the deployment and usage of the Nacos registry
MySQL high-level --- storage engine, index, lock
有点奇怪!访问目的网址,主机能容器却不行
C语言操作符详解(2)
leetcode-318.最大单词长度乘积
c语言指针运算
Common functions of pytorch