当前位置: 首页>>代码示例>>C++>>正文


C++ VVI::back方法代码示例

本文整理汇总了C++中VVI::back方法的典型用法代码示例。如果您正苦于以下问题:C++ VVI::back方法的具体用法?C++ VVI::back怎么用?C++ VVI::back使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VVI的用法示例。


在下文中一共展示了VVI::back方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: initDfs

	void initDfs(int u,int level = 0)
	{
		LVL[u] = level;
		SZ[u] = 1;
		for(int i = 0; i < adj[u].size(); ++i)
		{
			int v = adj[u][i];
			if(SZ[v])continue;
			P[v] = u;
			initDfs(v,level + 1);
			SZ[u] += SZ[v];
		}
		for(int i = 0; i < adj[u].size(); ++i)
		{
			int v = adj[u][i];
			if(v == P[u])continue;
			if(2*SZ[v] > SZ[u]-1){
				PC[u] = v;
			}
			else
			{
				groups.push_back(VI());
				for(int j = v; j != -1; j = PC[j])
					groups.back().push_back(j) ,
					groupId[j] = groups.size() - 1 ,
					groupPos[j] = groups.back().size()-1;
			}
		}
	}
开发者ID:cjtoribio,项目名称:Algorithms,代码行数:29,代码来源:HeavyLightDecomposition.cpp

示例2: exactify

VVI exactify(const VVI& S, const int N) {
	VVI vec;
    for(int r = 0; r < N; ++r) {
        for(int c = 0; c < N; ++c) {
        	for(int cand = 0; cand < N; ++cand) {
        		if(S[r][c] != 0 && S[r][c] != cand + 1) {
                    continue;
                }

        		row_cand[vec.size()] = r*N*N + c*N + cand;

        		vector<int> L(4*N*N);
        		vec.push_back(L);

                
                int reg = region(r,c,N);
                vec.back()[r*N + c] = 1;
                vec.back()[N*N + r*N + cand] = 1;
                vec.back()[2*N*N + N*c + cand] = 1;
                vec.back()[3*N*N + N*reg + cand] = 1;
            }
        }
    }
    
    if(!given_solution.empty()) {
    	map<int,int> rev;
        map<int,int>::iterator it;
        for(it = row_cand.begin(); it != row_cand.end(); ++it) {
            rev[it->second] = it->first;
        }

        vector<int> check(vec[0].size());

        for(int x = 0; x < given_solution.size(); ++x) {
            for(int y = 0; y < given_solution[x].size(); ++y) {
                int val = x * N * N + y * N + given_solution[x][y] - 1;
                for(int i = 0; i < vec[rev[val]].size(); ++i) {
                    check[i] += vec[rev[val]][i];
                }
            }
        }

        for(int i = 0; i < check.size(); ++i) {
            assert(check[i] == 1);
        }

    }

    return vec;
}
开发者ID:xci,项目名称:Tiralabra,代码行数:50,代码来源:newdlx.cpp

示例3: moreClasses

string moreClasses(string a, vector <string> b) {
  int i, j, k, x, y, z, n;
  string ret = "";
  VVI m;

  for( i = 0; i < b.size(); i++ ) {
    n = atoi(b[i].c_str());
    for( j = 0; j < n; j++ ) {
      m.push_back(VI());
      for( k = 0; k < b[i].size(); k++ ) if( !isdigit(b[i][k]) )
        m.back().push_back(b[i][k]);
    }
  }
  if( m.size() > 128 ) return "0";
  for( i = 0; i < a.size(); i++ ) taken[a[i]] = 1;
  n = m.size()-bipartitematch(m);
  x = 33;
  while( n ) {
    if( x >= 128 ) return "0";
    if( taken[x] ) {x++; continue;}
    taken[x] = 1;
    if (x >= 67)
	    cout<<x;
    z = m.size()-bipartitematch(m);
    if( z == n )
      taken[x] = 0;
    else
      ret += x;
    n = z;
    x++;
  }
  return ret;
}
开发者ID:gaganshrestha,项目名称:uthcode,代码行数:33,代码来源:Graduation2.cpp

示例4: VI

	HLD(VVI adj) {
		N = adj.size();
		P = PC = VI(N , -1);
		LVL = SZ = groupId = groupPos = VI(N , 0);
		this->adj = adj;
		for(int i = 0; i < N; ++i)
		{
			if(SZ[i] == 0)
			{
				initDfs(i);
				groups.push_back(VI());
				for(int j = i; j != -1; j = PC[j])
					groups.back().push_back(j) ,
					groupId[j] = groups.size() - 1 ,
					groupPos[j] = groups.back().size()-1;
			}
		}
	}
开发者ID:cjtoribio,项目名称:Algorithms,代码行数:18,代码来源:HeavyLightDecomposition.cpp

示例5: DFS

    int DFS (PI v, int index) {
        idx[v.x] = index;
        low[v.x] = index;
        index += 1;

        int children = 0;
        bool ap = false;
        for (auto w : adj[v.x]) if (w.y != v.y) {
                if (idx[w.x] == -1) {
                    st.push_back(w.y);
                    index = DFS(w, index);
                    low[v.x] = min(low[v.x], low[w.x]);
                    if (low[w.x] > idx[v.x]) {
                        bridges.push_back(w.y);
                    }
                    children++;
                    if (low[w.x] >= idx[v.x]) {
                        if (v.y != -1 || children >= 2) {
                            ap = true;
                        }
                        components.push_back(VI());
                        totalComponents++;
                        int u;
                        do {
                            u = st.back();
                            st.pop_back();
                            components.back().push_back(u);
                        } while (u != w.y);
                    }
                } else if (idx[w.x] < idx[v.x]) {
                    st.push_back(w.y);
                    low[v.x] = min(low[v.x], idx[w.x]);
                }
            }
        if (ap) {
            cutVertices.push_back(v.x);
        }
        return index;
    }
开发者ID:Corei13,项目名称:contest-programming-codes,代码行数:39,代码来源:12783.cpp

示例6: calc

int calc(const VI& in)
{
    VVI vals;

    // memo
    for(int i=0;;i++)
    {
        vals.pb(VI(words.size(),1));
        bool found = false;
        for(int j=0;j<in.size();j++) if(in[j] == i)
        {
            found = true;
            for(int k=0;k<words.size();k++)
            {
                vals.back()[k] *= words[k][equation[j]];
                vals.back()[k] %= MOD;
            }
        }
        if(found == false) 
        {
            vals.pop_back();
            break;
        }
    }

    int mul = 1;
    for(int i=0;i<vals.size();i++)
    {
        int sum = 0;
        for(int j=0;j<vals[i].size();j++)
            sum += vals[i][j];
        sum %= MOD;

        mul = (mul * sum) % MOD;
    }

    return mul;
}
开发者ID:blmarket,项目名称:icpc,代码行数:38,代码来源:BB.cpp

示例7: exact

void exact(VVI v) {
	if(v.size() == 0) {
		if(selected < glob[0].size() - 1) return;
		set<int> newelem;
		for(int i = 0; i < sol.size(); ++i) {
            newelem.insert(sol[i]);
        }
        sols.insert(newelem);
        /*
		cout<<"Solution:"<<endl;
        vector<int> sum(glob[0].size() - 1);
		for(int i = 0; i < sol.size(); ++i) {
            cout<<sol[i]<<endl;
            for(int j = 0; j < glob[sol[i]].size() - 1; ++j) {
                sum[j] += glob[sol[i]][j];
            }
        }
        for(int i = 0; i < sum.size(); ++i) {
            cout<<sum[i]<<" ";
        }
        cout<<endl;
        cout<<"---------"<<endl;
        */
        return;
    }

    for(int r = 0; r < v.size(); ++r) {
        if(v[r][0] == 1) {
            set<int> dc;
            set<int> dr;
            for(int j = 0; j < v[r].size() - 1; ++j) {
                if(v[r][j]) {
                    for(int i = 0; i < v.size(); ++i) {
                        if(v[i][j]) {
                            dr.insert(i);
                        }
                    }
                    dc.insert(j);
                }
            }

            /*
               set<int>::iterator it;
               cout<<"Banned columns: "<<endl;
               for(it = dc.begin(); it != dc.end(); ++it) {
               cout<<*it<<" ";
               }
               cout<<endl;
               cout<<"Banned rows: "<<endl;
               for(it = dr.begin(); it != dr.end(); ++it) {
               cout<<*it<<" ";
               }
               cout<<endl;
             */

            /*
               for(int i = 0; i < v[r].size() - 1; ++i) {
               if(v[r][i]) {
               dc.insert(i);
               for(int j = 0; j < v.size(); ++j) {
               if(v[j][i]) dr.insert(j);
               }
               }
               }
             */

            VVI nv;

            for(int i = 0; i < v.size(); ++i) {
                if(dr.count(i)) continue;
                nv.resize(nv.size() + 1);
                for(int j = 0; j < v[i].size(); ++j) {
                    if(!dc.count(j)) {
                        nv.back().push_back(v[i][j]);
                    }
                }
            }


            /*
               print(v);
               cout<<"Removing row "<<r<<endl;
               print(nv);
             */

            int sel = 0;
            for(int i = 0; i < v[r].size() - 1; ++i) {
                if(v[r][i]) ++sel;
            }

            selected += sel;
            sol.push_back(v[r].back());
            exact(nv);
            sol.pop_back();
            selected -= sel;
        }
    }
}
开发者ID:xci,项目名称:Tiralabra,代码行数:98,代码来源:slowexact.cpp


注:本文中的VVI::back方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。