当前位置:网站首页>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;
}
边栏推荐
- APT + Transform to realize multi module Application distributed Application life cycle
- Node的安装与环境变量的配置
- MySQL 23 classic interviews hang the interviewer
- Double for loop case (use js jiujiu printing multiplication table)
- Tips for programmers to write PPT
- 排雷小游戏(C语言)
- Common functions of pytorch
- mysql高阶语句(一)
- 目标检测重要概念——IOU、感受野、空洞卷积、mAP
- Node installation and configuration (node-v12.20.2-x64 ) and introduction to node version switching
猜你喜欢
The advantages of making web3d dynamic product display
股价屡创新低 地产SaaS巨头陷入困境 明源云该如何转型自救?
MySQL联合查询(多表查询)
pytorch basic operations: classification tasks using neural networks
Leetcode周赛304
node安装和配置(node-v12.20.2-x64 ) 以及node版本切换介绍
Nodejs installation and global configuration (super detailed)
NPM 安装指定版本包的方法及版本号查看
Leetcode parentheses matching problem -- 32. The longest parentheses effectively
Toolbox App 1.25 New Features at a Glance | Version Update
随机推荐
金蝶国际:半年亏掉去年一年,疯狂烧钱的商业模式如何持续
An advanced method for solving palindromes
node安装和配置(node-v12.20.2-x64 ) 以及node版本切换介绍
蚂蚁三面:MQ 消息丢失、重复、积压问题,有哪些解决方案?
Nacos database configuration
DNS resolution process
Node installation and configuration of environment variables
Dataset: A detailed guide to the download link collection of commonly used datasets in machine learning
目标检测重要概念——IOU、感受野、空洞卷积、mAP
路由规划中级篇
人工神经网络
postgres 多个变量填充字符串,字串格式化
npm ---- install yarn
rhce作业
mysql高阶语句(一)
有点奇怪!访问目的网址,主机能容器却不行
BGP experiment (route reflector, federation, route optimization)
nodejs的安装和全局配置(超详细哦)
MySQL database video tutorial from beginner to proficient
zabbix auto-discovery and auto-registration