cf1133 bcdef
b所有数模k,记录出现次数即可
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k,a[];
int cnt[]={};
cin>>n>>k;
for(int i=;i<=n;i++)cin>>a[i];
for(int i=;i<=n;i++)
cnt[a[i]%k]++;
int ans=cnt[]/;
int l=,r=k-;
while(l<r){
ans+=min(cnt[l],cnt[r]);
l++,r--;
}
if(l==r)
ans+=cnt[l]/;
cout<<ans*<<endl;
}
c尺取
#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
int cmp(int a,int b){return a<b;
}
int main(){
int n,a[maxn];
scanf("%d",&n);
for(int i=;i<=n;i++)
cin>>a[i];
sort(a+,a++n);
int l=,r=,ans=; while(){
r++;
if(r>n)break;
if(a[r]-a[l]<=)ans=max(ans,r-l+);
if(a[r]-a[l]>)l++;
}
cout<<ans;
return ;
}
d,用map<pair<ll,ll>,int>来统计二元组<a[i]/gcd,b[i]/gcd>的最大出现次数即可,注意特判
#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
#define ll long long
ll n,a[maxn],b[maxn];
map<pair<ll,ll>,ll>mp; int main(){
cin>>n;
for(int i=;i<=n;i++)cin>>a[i];
for(int j=;j<=n;j++)cin>>b[j];
ll cnt=,ans=,x=;
for(int i=;i<=n;i++){
if(a[i]== && b[i]==)cnt++;//权是0
else if(a[i]== && b[i]!=) continue;//无解
else if(b[i]==)x++; //c必须是0
else {
ll tmp=__gcd(a[i],b[i]);
pair<ll,ll> p=make_pair(b[i]/tmp,a[i]/tmp);
mp[p]++;ans=max((ll)ans,mp[p]);
}
} if(cnt==n)cout<<cnt;
else cout<<max(x+cnt,ans+cnt);
}
e,线性dp
/*
l[i]表示选择以第i个为最大能力成员的团队中能力最小的成员的下标是什么
阶段k,状态j表示选择第j个成员作为第k组能力最大的成员
那么第k组的范围就是[l[j],j],dp[k][j]=len[j]+max(dp[k-1][l[j]-i]),i小于l[j]即可)
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 5005
int n,k,dp[maxn][maxn],a[maxn],l[maxn];
int main(){
cin>>n>>k;
for(int i=;i<=n;i++)cin>>a[i];
sort(a+,a++n);a[]=-;
for(int i=;i<=n;i++)
l[i]=lower_bound(a+,a++n,a[i]-)-a;
int ans=;
for(int i=;i<=k;i++){
int tmp[maxn]={};
for(int j=;j<=n;j++)
tmp[j]=max(tmp[j-],dp[i-][j]); for(int j=i;j<=n;j++){
dp[i][j]=(j-l[j]+)+tmp[l[j]-];
ans=max(dp[i][j],ans);
}
}
cout<<ans<<endl;
}
f1找最大点度数最大的生成树
#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
struct Edge{int to,nxt;}edge[maxn<<];
int head[maxn],tot;
void init(){memset(head,-,sizeof head);tot++;}
void addedge(int u,int v){
edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++;
} int n,m,degree[maxn],vis[maxn];
void dfs(int u){
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(vis[v])continue;
else {
vis[v]=;
cout<<u<<" "<<v<<endl;
dfs(v);
}
}
}
int main(){
cin>>n>>m;
init();
for(int i=;i<=m;i++){
int u,v;
cin>>u>>v;
degree[u]++;
degree[v]++;
addedge(u,v);
addedge(v,u);
}
int id,Max=;
for(int i=;i<=n;i++)
if(degree[i]>Max){
Max=degree[i];
id=i;
} vis[id]=;
for(int i=head[id];i!=-;i=edge[i].nxt)
vis[edge[i].to]=;
for(int i=head[id];i!=-;i=edge[i].nxt){
int v=edge[i].to;
cout<<id<<" "<<v<<endl;
dfs(v);
}
}
f2
/*
给定一个无向连接图,求出1的度为d的生成树
删掉结点1,对剩下结点染色
不成立的情况:
1的度小于d
联通块大于d
1能连上的联通块小于d
*/
#include<bits/stdc++.h>
#include<vector>
using namespace std;
#define maxn 200005
struct Edge{int to,nxt;}edge[maxn<<];
int head[maxn],c[maxn],cnt,d,totc,n,m;
void init(){
memset(head,-,sizeof head);
totc=;
}
void addedge(int u,int v){
edge[totc].to=v;edge[totc].nxt=head[u];head[u]=totc++;
}
void dfs(int u){
c[u]=cnt;
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(c[v]||v==)continue;
dfs(v);
}
} int vis[maxn]; struct A{int u,v;
}ans[maxn];
void dfs1(int u){
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(vis[v])continue;
vis[v]=;
cout<<u<<" "<<v<<'\n';
dfs1(v);
}
} int main(){
cin>>n>>m>>d;
init();
int tmp=,flag[maxn]={};
for(int i=;i<=m;i++){
int u,v;
cin>>u>>v;
if(v==)swap(u,v);
if(u==)flag[v]=,tmp++;
addedge(u,v);
addedge(v,u);
}
if(tmp<d){
puts("NO");
return ;
} for(int i=;i<=n;i++)
if(c[i]==)
++cnt,dfs(i);
if(cnt>d){
puts("NO");
return ;
} int tot=,link[maxn]={};
for(int i=;i<=n;i++){
if(flag[i] && link[c[i]]==){
ans[++tot].u=;
//cout<<tot<<'\n';
ans[tot].v=i;
link[c[i]]=;
vis[i]=;
}
} //把剩下的度用完
for(int i=;i<=n;i++){
if(tot==d)break;
if(flag[i] && vis[i]==){
//cout<<tot<<'\n';
ans[++tot].u=;
ans[tot].v=i;
vis[i]=;
}
} if(tot<d){
puts("NO");
return ;
}
for(int i=;i<=cnt;i++)
if(link[i]==){
puts("NO");
return ;
} puts("YES");
for(int i=;i<=tot;i++)
cout<<ans[i].u<<" "<<ans[i].v<<'\n'; vis[]=;
for(int u=;u<=n;u++)
if(vis[u]){
dfs1(u);
}
}
cf1133 bcdef的更多相关文章
- AGC003[BCDEF]题解
2018-12-28 有点累EF明天再写叭=v= 2018-12-29 update EF B - Simplified mahjong 可以注意到 一段连续的非0序列都可以凑出 就是显然%2=0的可 ...
- AGC002[BCDEF]题解
F是计数于是就做(kan ti jie)了= = B - Box and Ball 模拟一下 每个盒子开一个d表示有的球数 可能存在红球的打个标记 传递一下就行了 #include<cstdio ...
- 正则表达式在iOS中的运用
1.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- iOS中使用正则
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- redis 操作string 的测试
1>set set name zhangsan :OK get name: zhangsan set name lisi:OK get name: lisi 2> setnx 如果存 ...
- AJXA 入门 前端界面操作(例题)
AJXA 处理界面 与之前的 嵌入 PHP 相比 不用 频繁的 刷新界面 mysql 链接数据库封装类 <?php class DBDA { public $host="lo ...
- Objective-C精选字符串处理方法
无论是什么编程语言对字符串的操作是少不了的,对复杂的字符串的分析和操作我们可以用正则表达式来达到我们的目的.简单的字符串处理我们可以借助OC中NSString封装好的字符串处理方法,不过前提是你得了解 ...
- Javascript 字符串常用操作方法
1.字符串转换 /* 你可以将一个数字,布尔值,或一个字符串对象转换为字符串 */ var num= 18; var str1 = num.toString(); //'18' var str2 = ...
- iOS - Regex 正则表达式
1.Regex 定义 正则表达式又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为 regex.regexp 或 RE),计算机科学的一个概念.正则表达式使用单个 ...
随机推荐
- 使用Retrofit时常用到的注解
- 连接 sqlserver
提示错误:Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 ...
- 【转载】奇异值分解(SVD)计算过程示例
原文链接:奇异值分解(SVD)的计算方法 奇异值分解是线性代数中一种重要的矩阵分解方法,这篇文章通过一个具体的例子来说明如何对一个矩阵A进行奇异值分解. 首先,对于一个m*n的矩阵,如果存在正交矩阵U ...
- nodejs -Router
Node 用 request 事件来处理请求响应,事件内使用分支语句处理不同路径的请求,而 Express 封装了这些操作,使得代码简洁优雅 但如果请求路径变多,都写在 app.js 文件里的话,就会 ...
- Cent os 6.8添加中文字体
作者:邓聪聪 Cent os 6.8添加中文字体的相关步骤: [root@bogon ]#yum -y install fontconfig #yum安装fontconfig [root@bogon ...
- Python调用subprocess.Popen卡死的解决方案
转载自:https://www.cnblogs.com/keke-xiaoxiami/p/7875009.html 在Python中,调用:subprocess.Popen(cmd, stdout = ...
- 写markdown博客如何将截图快速上传到图床——记一个工具插件的实现(windows版 开源)
打造一个上传图片到图床利器的插件(Mac版 开源)(2018-06-24 19:44) 更新于2018年2月 做了以下改动: 1.修复了一个bug,把服务器区域做成可配: 七牛有华北,华东,华南以及美 ...
- 006_理解inode
inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念 ...
- Redis高级特性介绍及实例分析
转自:http://www.jianshu.com/p/af7043e6c8f9 Redis基础类型回顾 String Redis中最基本,也是最简单的数据类型.注意,VALUE既可以是简单的St ...
- lanmp安装
下载安装(ssh登录服务器,执行如下操作即可,需要用到root用户权限来安装)源码编译安装wget http://dl.wdlinux.cn:5180/lanmp_laster.tar.gztar z ...