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的更多相关文章

  1. AGC003[BCDEF]题解

    2018-12-28 有点累EF明天再写叭=v= 2018-12-29 update EF B - Simplified mahjong 可以注意到 一段连续的非0序列都可以凑出 就是显然%2=0的可 ...

  2. AGC002[BCDEF]题解

    F是计数于是就做(kan ti jie)了= = B - Box and Ball 模拟一下 每个盒子开一个d表示有的球数 可能存在红球的打个标记 传递一下就行了 #include<cstdio ...

  3. 正则表达式在iOS中的运用

    1.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  4. iOS中使用正则

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  5. redis 操作string 的测试

    1>set  set name zhangsan :OK get name: zhangsan set name lisi:OK get name: lisi   2> setnx 如果存 ...

  6. AJXA 入门 前端界面操作(例题)

    AJXA  处理界面  与之前的 嵌入 PHP 相比   不用  频繁的 刷新界面 mysql 链接数据库封装类 <?php class DBDA { public $host="lo ...

  7. Objective-C精选字符串处理方法

    无论是什么编程语言对字符串的操作是少不了的,对复杂的字符串的分析和操作我们可以用正则表达式来达到我们的目的.简单的字符串处理我们可以借助OC中NSString封装好的字符串处理方法,不过前提是你得了解 ...

  8. Javascript 字符串常用操作方法

    1.字符串转换 /* 你可以将一个数字,布尔值,或一个字符串对象转换为字符串 */ var num= 18; var str1 = num.toString(); //'18' var str2 = ...

  9. iOS - Regex 正则表达式

    1.Regex 定义 正则表达式又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为 regex.regexp 或 RE),计算机科学的一个概念.正则表达式使用单个 ...

随机推荐

  1. AMD/CMD/CommonJs到底是什么?它们有什么区别?

    知识点1:AMD/CMD/CommonJs是JS模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs.   知识点2:CommonJs主要针对服务端,AMD/CMD主要针对浏 ...

  2. 【转载】java abstract class和interface的区别

    转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...

  3. (5)Java数据结构--有继承图,用途分析

    java 中几种常用数据结构 - u010947402的博客 - CSDN博客http://blog.csdn.net/u010947402/article/details/51878166 JAVA ...

  4. 7.4mybatis整合ehcache(mybatis无法实现分布式缓存必须和其他缓存框架整合)

    <\mybatis\day02\14查询缓存-二级缓存-整合ehcache.av> mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache-- 这里有做本 ...

  5. python第l六天,lambda表达式学习,涉及filter及Map。

    在python中lambda表达式可以作为匿名函数来使用,举一个简单的栗子: 以前我们写两个数相加的函数需要 #以前我们写两个数相加的函数,需要这样写 >>> def sum(x,y ...

  6. Java HashMap、HashTable、TreeMap、WeakHashMap区别

    1.HashMap不是线程安全,而HashTable是线程安全

  7. java中equals,hashcode和==的区别

    https://www.cnblogs.com/kexianting/p/8508207.html

  8. ASP.NET Core中使用Unity5

    ⒈添加相关依赖 Install-Package Unity Install-Package Unity.RegistrationByConvention ⒉扫描项目接口实现类 using System ...

  9. Path Sum I && II & III

    Path Sum I Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that ad ...

  10. in exists

    区别及应用场景 in 和 exists的区别: 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists.其实 ...