最大团&优化

貌似咕了三个半月了(gym101915里一道),今天又遇到一道(cf1105E),就学了学惹。

最大团定义:图上取尽可能多的点,这些点构成一个完全图。

最大独立集:图上取尽可能多的点,任意两点间不连接。

可以看出来   一个图的最大团==它的补图的最大独立集 叭

那么我们可以搜索哇!(我不会搜索哇)

一个最朴素的搜索思想:  维护几个点集,当前已选择的,可以选择的,然后每次从可选择的点集里选一个与当前已选择的点都有边的点加进来,然后更新可选择的点集。

这个复杂度就比较恐怖哇

简单的优化:对点排序,每次都选一个节点编号比当前点编号大的。可以参考一下wannafly winter camp 的小木棍那题

剪枝一:如果当然已选点集大小+可选点集大小小于mx,return

剪枝二:我们从后向前选取点,保存后面的答案,如果当前点集+ans[待选]小于mx,return

其他的优化我也没看懂啊。。。

附 1105 E的代码,我真是自闭了。我傻逼了 map.count(s)和 mp[s] 是不一样的、、、调了半个多小时没看出来。。注释掉的部分是输出答案找bug的o.o

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 map<string,int> mp;
 4 int n,m,op;string s;int cnt=-1;
 5 vector<int> v;
 6 bool g[50][50];
 7 int ans;int mx[50];int alt[50][50];
 8 //int cs[50];
 9 bool DFS(int cur, int tot) {
10     if(cur==0) {
11         if(tot>ans) {
12             ans=tot;
13             //for(int i=0;i<tot;i++){
14             //    cout<<cs[i]<<‘ ‘;
15             //}
16             //cout<<endl;
17             return 1;
18         }
19         return 0;
20     }
21     for(int i=0; i<cur; i++) {
22         if(cur-i+tot<=ans) return 0;
23         int u=alt[tot][i];
24         if(mx[u]+tot<=ans) return 0;
25         int nxt=0;//cs[tot]=u;
26         for(int j=i+1; j<cur; j++)
27             if(g[u][alt[tot][j]])
28                 alt[tot+1][nxt++]=alt[tot][j];
29         if(DFS(nxt, tot+1)) return 1;
30     }
31     return 0;
32 }
33 int MaxClique() {
34     for(int i=cnt;i>=0; i--) {
35         //cs[0]=i;
36         int cur=0;
37         for(int j=i+1; j<=cnt; j++)
38             if(g[i][j])
39                 alt[1][cur++]=j;
40         DFS(cur, 1);
41         mx[i]=ans;
42     }
43     return ans;
44 }
45 int main(){
46     ios::sync_with_stdio(false);
47     memset(g,1, sizeof(g));
48     cin>>n>>m;
49     for(int i=1;i<=n;i++){
50         cin>>op;
51         if(op==1) v.clear();
52         else{
53             cin>>s;
54             if(!mp.count(s))mp[s]=++cnt;
55             int tmp = mp[s];
56             for(auto q:v)
57                 g[tmp][q]=g[q][tmp]=false;
58             v.push_back(tmp);
59         }
60     }
61     cout<<MaxClique()<<endl;
62 }

原文地址:https://www.cnblogs.com/MXang/p/10354144.html

时间: 2024-08-02 23:11:57

最大团&优化的相关文章

地理空间距离计算优化(转)

原文:http://tech.meituan.com/lucene-distance.html 1 地理空间距离计算面临的挑战 打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是“离我最近”或者“智能排序”(如下图所示). 不管是“离我最近”还是“智能排序”,都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分).以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+所有品类+离我最近/智能

微信拼好货商城团购研究

拼好货商城前些几个月朋友在微信上拉人拼好货团购水果,拉满5-9个人不等就可以开团.这种方式满提高客户的营销主观能动性的.只是这个拼好货商城的水果质量怎么样.但是这种微信拉人团购的模式不错. 这种是很原始的拼好货团购模式,象以前的聚划算美团,凑满多少才开团,在网站最开始推广阶段可以做一下,因为顾客会为了成团拉人来,知名度开了就不需要,因为成团门槛会拉低转化率,目前这个模式非常适合淘宝卖家.适合卖一些零食拼好货.水果拼好货.坚果拼好货.对于一些小的商家是非常不错的选择.投资成本低.聚集用户快.传播学

HDU1530(最大团)

Given a graph G(V, E), a clique is a sub-graph g(v, e), so that for all vertex pairs v1, v2 in v, there exists an edge (v1, v2) in e. Maximum clique is the clique that has maximum number of vertex. 问题描述:团就是最大完全子图. 给定无向图G=(V,E).如果UV,且对任意u,vU 有(u,v)  E

地理空间距离计算及优化(根据两个点经纬度计算距离)

1.地理空间距离计算面临的挑战 打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是"离我最近"或者"智能排序"(如下图所示). 不管是"离我最近"还是"智能排序",都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分).以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+所有品类+离我最近/智能排序时,我们筛选服务需要计

iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文件控件tag值操作 数据模型部分: YYtg.h文件 // // YYtg.h // 01-团购数据显示(没有配套的类) // // Created by apple on 14-5-29. // Copyright (c) 2014年 itcase. All rights reserved. //

页面头部title、description、keywords标签的优化

页面头部优化 <Head></Head>中间的区域中间的区域,我们称为网页的头部.在网页的头部中,通常存放一些介绍页面内容的信息,例如页面标题.描述及关键字等等. 在头部优化中,除了要清理垃圾代码外,最重要的还有拟写title.description及keywords标签的内容. 标题标签<title>的优化: 标题标签也称为标题标签,标题标签内容是对网页主题的概括,相当于一片文章的题目.标题标签的优化是网站优化中最重要的内容之一,对页面相关性产生决定性的影响.大多数搜

最大团问题(Maximum Clique Problem, MCP)

概述: 最大团问题(Maximum Clique Problem, MCP)是图论中一个经典的组合优化问题,也是一类NP完全问题.最大团问题又称为最大独立集问题(Maximum Independent Set Problem).目前,求解MCP问题的算法主要分为两类:确定性算法和启发式算法.确定性算法有回溯法.分支限界法等,启发式算法.蚁群算法.顺序贪婪算法.DLS-MC算法和智能搜索算法等. 问题描述: 给定无向图G=(V,E),其中V是顶点集:E是V边集.如果U属于V,且对任意两个顶点u,v

web前端图片极限优化策略

随着web的发展,网站资源的流量也变得越来越大.据统计,60%的网站流量均来自网站图片,可见对图片合理优化可以大幅影响网站流量,减小带宽消耗和服务器压力. 一.现有web图片格式 我们先来看下现在常用的web图片的格式: 图片格式 支持透明 动画支持 压缩方式 浏览器支持 相对原图大小 适应场景 baseline-jpeg 不支持 不支持 有损 所有 由画质决定 所有通用场景 progressive-jpeg 不支持 不支持 有损 所有 由画质决定 所有通用场景, 渐进式加载 gif 支持 支持

项目拉手团购开发记录

项目:拉手团购 项目:拉手团购 11.07 构建框架 下载数据 注意字段名要一致 使用Gson解析JsonArray时,代码如下: Gson gson = new Gson(); Type type = new TypeToken<ArrayList<数据类型>>(){}.getType(); ArrayList<数据类型>list = gson.fromjson(json,type); 其中Type为Java.lang.reflect.type TypeToken为G