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


C++ VI类代码示例

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


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

示例1: main

int main()
{

    // unique
    {
        const VI v1 = { 1, 2, 3, 3, 4, 4, 5 };
        const VI v2 = { 5, 3, 4, 4, 2, 3, 1 };
        VI vt = { 1, 2, 3, 4, 5 };
        VI w;
        w = v1;
        sx::unique(w);
        CHECK(w == vt);

        w = v1;
        auto r = sx::unique(std::move(w));
        CHECK(r == vt);

        w = v2;
        sx::sort_unique(w);
        CHECK(w == vt);

        w = v2;
        r = sx::sort_unique(std::move(w));
        CHECK(r == vt);
    }

    // insert_at_end
    {
        VI v1 = { 1, 2, 3 };
        const VI v2 = { 4, 5, 6 };
        const VI vt = { 1, 2, 3, 4, 5, 6 };

        VI v;
        v = v1;
        sx::insert_at_end(v, v2.begin(), v2.end());
        CHECK(v == vt);

        v = v1;
        sx::insert_at_end(v, v2);
        CHECK(v == vt);
    }

    // set_difference
    {
        const VI v1 = { 1, 2, 3, 4, 5 };
        const VI v2 = { 2, 4, 5 };
        const VI vt = { 1, 3 };
        VI c(v1.size());
        sx::set_difference(v1, v2, c);
        CHECK(c == vt);

        c = sx::set_difference(v1, v2, VI(v1.size()));
        CHECK(c == vt);

        auto d = sx::set_difference(v1, v2);
        static_assert(std::is_same<decltype(d), std::vector<int> >::value, "");
        CHECK(d == vt);
    }

    // set_intersection
    {
        const VI v1 = { 1, 2, 4, 5 };
        const VI v2 = { 2, 3, 5 };
        const VI vt = { 2, 5 };
        VI c(v1.size());
        sx::set_intersection(v1, v2, c);
        CHECK(c == vt);

        c.assign(10, 10);
        c = sx::set_intersection(v1, v2, VI(v1.size()));
        CHECK(c == vt);

        auto d = sx::set_intersection(v1, v2);
        static_assert(std::is_same<decltype(d), std::vector<int> >::value, "");
        CHECK(d == vt);
    }

    // scalar_rdiv_range
    {
        const VI v1 = { 3, 4, 6 };
        const VI vt = { 4, 3, 2 };
        VI v2;
        v2 = v1;
        CHECK(vt == sx::scalar_rdiv_range(std::move(v2), 12));

        v2 = v1;
        sx::scalar_rdiv_range(v2, 12);
        CHECK(vt == v2);
    }

    // range_div_scalar
    {
        const VI v1 = { 3, 6, 9 };
        const VI vt = { 1, 2, 3 };
        VI v2;
        v2 = v1;
        CHECK(vt == sx::range_div_scalar(std::move(v2), 3));

        v2 = v1;
        sx::range_div_scalar(v2, 3);
//.........这里部分代码省略.........
开发者ID:tamaskenez,项目名称:sx,代码行数:101,代码来源:algorithm.cpp

示例2: factorize

void factorize(int a,VI &ret)
{
	ret.clear();
	for(int i=1;i<=a;i++)
		if((a % i) == 0) ret.pb(i);
}
开发者ID:blmarket,项目名称:lib4bpp,代码行数:6,代码来源:F.cpp

示例3: FOR

#define FOR(i,a,b) for (int i = (a); i < (b); i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(v) (v).begin(), (v).end()
#define FIT(it,v) for (__typeof((v).begin()) it = (v).begin(); it != (v).end(); it++)
#define OUT(A) cout << #A << " = "<< (A) << endl

#define present(c, e) ((c).find((e)) != (c).end())
#define cpresent(c, e) (find(all(c), (e)) != (c).end())

int case_number;
#define printg case_number++, printf("Case #%d: ",case_number), printf
#define gout case_number++, printf("Case #%d: ",case_number), cout

int N, d[10], n[10], w[10], e[10], s[10], dd[10], dp[10], ds[10];
int res;
VI h, D;
int ad[10][10], aw[10][10], ae[10][10], as[10][10];

void init() {
}

void input() {
	D.clear(); h.clear();
	
	cin >> N;
	REP(i, N){
		cin >> d[i] >> n[i] >> w[i] >> e[i] >> s[i] >> dd[i] >> dp[i] >> ds[i];
		w[i] += 1000;
		e[i] += 1000;
	}
	REP(i, N){
开发者ID:kuno4n,项目名称:GoogleCodeJam,代码行数:31,代码来源:2013-1C-C.cpp

示例4: main

int main()
{
	cin.sync_with_stdio(0);
	int t;
	cin>>t;
	while(t--)
	{
		int n,k,ans=MOD,idx=1,sz=1,temp=0,minm=MOD;
		cin>>n>>k;
		string str;
		cin>>str;

		FOR(i,0,n-1)
			temp = temp + (str[i] == '0'+ i%2);
		minm = min(minm, temp);
		temp = 0;
		FOR(i,0,n-1)
			temp = temp + (str[i] == '0'+ (i+1)%2);
		minm = min(minm, temp);
		//cout<<minm<<endl;
		if(k>=minm)
		{
			printf("1\n");
			continue;
		}

		VI vec;
		while(idx<n)
		{
			if(str[idx] == str[idx-1])
				sz++;
			else
			{
				if(sz>1)
					vec.PB(sz);
				sz=1;
			}
			idx++;
		}
		if(sz>1)
			vec.PB(sz);
		sort(vec.begin(), vec.end());
		reverse(vec.begin(), vec.end());

		if(k==0)
		{
			printf("%d\n", vec[0]);
			continue;
		}
		vector<PII> myVec;
		idx=0;sz=1;
		while(idx<vec.size()-1)
		{
			if(vec[idx] == vec[idx+1])
				sz++;
			else
			{
				myVec.PB(MP(vec[idx],sz));
				sz=1;
			}
			idx++;
		}
		myVec.PB(MP(vec[idx],sz));

		int start=0, end=myVec.size()-1;
		while(start<=end)
		{
			int mid = (start+end)/2, flips=0;
			FOR(i,0,mid-1)
				flips += myVec[i].second * getflips(myVec[i].first, myVec[mid].first);
			printf("%d %d\n", flips, myVec[mid].first);
			if(flips <= k)
			{
				if(ans > myVec[mid].first)
				{
					ans = myVec[mid].first;
					idx = mid;
				}
				start = mid + 1;
			}
			else
				end = mid - 1;
		}

		start = myVec[idx].first, end = 2;
		if(idx != myVec.size()-1)
			end = myVec[idx + 1].first;
		while(start<=end)
		{
			int mid = (start+end)/2, flips=0;
			FOR(i,0,idx)
				flips += myVec[i].second * getflips(myVec[i].first, mid);
			if(flips <= k)
			{
				ans = min(ans, mid);
				start = mid + 1;
			}
			else
				end = mid - 1;
		}
//.........这里部分代码省略.........
开发者ID:gautamgtm,项目名称:Codechef,代码行数:101,代码来源:SCHEDULE_1.cpp

示例5: main

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    int n,m,k,i,x,y,z,par[3010],vis[3010][3010]={0},flag=0,l,par1,d;
    VI v;
    vector <vector<int> > G;
    map <pair<int,PII>,int> mp;
    cin >>n>>m>>k;
    G.resize(n+1);
    for(i=0;i<m;i++)
    {
        cin >>x>>y;
        G[x].PB(y);
        G[y].PB(x);
    }
    for(i=0;i<k;i++)
    {
        cin >>x>>y>>z;
        mp[MP(x,MP(y,z))]++;
    }
    queue <pair<int,PII> > q;
    q.push(MP(1,MP(-1,0)));
    par[1]=-1;
    vis[1][0]=1;
    while(!(q.empty()))
    {
        x=q.front().F,par1=(q.front()).S.F,d=(q.front()).S.S;
        if(x==n)
        {
            flag=1;
            break;
        }
        q.pop();
        l=G[x].size();
        for(i=0;i<l;i++)
        {
            if(vis[G[x][i]]==0&&mp[MP(par1,MP(x,G[x][i]))]==0)
            {
                par[G[x][i]]=x;
                vis[G[x][i]]=1;
                q.push(MP(G[x][i],MP(x,d+1)));
            }
        }
    }
    if(flag==0)
    {
        cout <<"-1\n";
        return 0;
    }
    cout <<d<<"\n";
    x=n;
    while(x!=-1)
    {
        v.PB(x);
        x=par[x];
    }
    l=v.size();
    for(i=l-1;i>=0;i--)
        cout <<v[i]<<" ";
    cout <<"\n";
    return 0;
}
开发者ID:pranjal-rai,项目名称:codeforces,代码行数:63,代码来源:p5.cpp

示例6: CLEAR

#define CLEAR(table, v) memset(table, v, sizeof(table));
#define PRINT2(table, W, H) REP(y, H) { REP(x, W) cout<<table[y][x]<<" "; cout<<"\n"; }
#define PRINT3(table, W, H, D) REP(d, D) { REP(y, H) { REP(x, W) cout<<table[d][y][x]<<" "; cout<<"\n"; } cout<<"\n"; }
template <typename T0, typename T1> std::ostream& operator<<(std::ostream& os, const map<T0, T1>& v) { for( typename map<T0, T1>::const_iterator p = v.begin(); p!=v.end(); p++ ){os << p->first << ": " << p->second << " ";} return os; }
template <typename T0, typename T1> std::ostream& operator<<(std::ostream& os, const pair<T0, T1>& v) { os << v.first << ": " << v.second << " "; return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const vector<T>& v) { for( int i = 0; i < (int)v.size(); i++ ) { os << v[i] << " "; } return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const set<T>& v) { vector<T> tmp(v.begin(), v.end()); os << tmp; return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const deque<T>& v) { vector<T> tmp(v.begin(), v.end()); os << tmp; return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const vector<vector<T> >& v) { for( int i = 0; i < (int)v.size(); i++ ) { os << v[i] << endl; } return os; }

class BitwiseAnd {
	public:
	ll add;
	VVI w;
	int N, M;
	VI S;
	bool check(bool init) {
		REP(bit, 60) {
			VI one;
			REP(i, S.size()) {
				if((S[i]>>bit)&1) one.PB(i);
			}
			if(one.size()>2) return false;
			if(one.size()==2) w[one[1]][one[0]] = w[one[0]][one[1]] = 1;
			if(!init && one.size()==1 && w[one[0]][S.size()]==0) {
				add |= 1LL<<bit;
				w[one[0]][S.size()] = w[S.size()][one[0]] = 1;
			}
		}
		if(!init) {
			S.PB(add);
开发者ID:kojingharang,项目名称:algorithm_contest,代码行数:31,代码来源:BitwiseAnd.cpp

示例7: solve

void solve(VI ans)
{
    sort(ans.begin(),ans.end());
    int sz=ans.size();

    if(sz>=fs)
    {
        return;
    }

    if(ct==n)
    {
        fs=sz;
        finn=ans;

        return;
    }

    int i,j,k,pos,ti;
    VI tv;
    VI::iterator it;


    for(i=0;i<n;++i)
    {
        if(fl[i])
        {
            continue;
        }
        ++ct;
        for(j=0;j<sz;++j)
        {
            fl[i]=0;

            pos=101;
            ti=tarr[i]+ans[j];
            for(k=j+1;k<sz;++k)
            {
                if(ans[k]==ti)
                {
                    fl[i]=1;
                    break;
                }
                else if(ans[k]>ti)
                {
                    pos=k;
                    break;
                }
            }

            if(fl[i])
            {
                tv=ans;
                solve(tv);
            }
            else
            {
                tv=ans;
                fl[i]=1;
                if(pos<101)
                {
                    it=lower_bound(tv.begin(),tv.end(),ti);
                    tv.insert(it,ti);
                    solve(tv);
                }
                else
                {
                    tv.PB(ti);
                    solve(tv);
                }

            }

            fl[i]=0;

        }

        --ct;
    }


    for(i=0;i<n;++i)
    {
        if(fl[i])
        {
            continue;
        }
        ++ct;
        for(j=1;j<sz;++j)
        {
            fl[i]=0;

            pos=101;
            ti=ans[j]-tarr[i];
            if(ti<0)
            {
                continue;
            }

            for(k=0;k<j;++k)
//.........这里部分代码省略.........
开发者ID:vijaynitrr,项目名称:Spoj,代码行数:101,代码来源:EUROPEAN.cpp

示例8: find_common2

VI find_common2(VI& va, VI& vb)
{
    VI result;
    find_common_helper2(va.begin(), va.end(), vb.begin(), vb.end(), result);
    return result;
}
开发者ID:RichyMong,项目名称:std,代码行数:6,代码来源:common_elements_of_2_array.cpp

示例9: FindValidSet

bool CDeck::FindValidSet(int const pIdx)
{
    if(PlayerHand[pIdx]->GetNumSelectedCards() > 0)
        return false; //should not select any

    CCardStack *Stack = PlayerHand[pIdx]->GetCardStack();

    int Idx = 0;
    for(VI vi = Stack->begin(); vi != Stack->end(); ++vi) {

        SDL_PumpEvents();
        int Rank = vi->Rank();
        int Suit = vi->Suit();

        int a = PlayerHand[pIdx]->FindCard(Rank + 1, Suit);
        int b = PlayerHand[pIdx]->FindCard(Rank + 2, Suit);
        int c = PlayerHand[pIdx]->FindCard(Rank - 1, Suit);
        int d = PlayerHand[pIdx]->FindCard(Rank - 2, Suit);

        int e[3];	//cards with same suit
        e[0] = PlayerHand[pIdx]->FindMoreSameRank(0, Rank, Suit);
        if(e[0] != -1) {

            e[1] = PlayerHand[pIdx]->FindMoreSameRank(e[0] + 1, Rank, Suit);
            if(e[1] != -1)
                e[2] = PlayerHand[pIdx]->FindMoreSameRank(e[1] + 1, Rank, Suit);
        }

        if(a != -1 && b != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(a);
            PlayerHand[pIdx]->SelectCard(b);
            return true;
        }

        if(a != -1 && c != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(a);
            PlayerHand[pIdx]->SelectCard(c);
            return true;
        }

        if(c != -1 && d != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(c);
            PlayerHand[pIdx]->SelectCard(d);
            return true;
        }

        if(e[0] != -1 && e[1] != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(e[0]);
            PlayerHand[pIdx]->SelectCard(e[1]);
            if(e[2] != -1)
                PlayerHand[pIdx]->SelectCard(e[2]);
            return true;
        }

        Idx++;
    }//end of for loop
    return false;
}
开发者ID:ricoz,项目名称:tong-its,代码行数:66,代码来源:CDeck.cpp

示例10: quickSort

VI quickSort(VI &v){
    quickSort(v,0,v.size()-1);
    return v;
}
开发者ID:nitin-nizhawan,项目名称:incubator,代码行数:4,代码来源:QuickSort.cpp

示例11: print_r

void print_r(VI v){
  for(int i=0;i<v.size();i++){
    cout<<v[i]<<", ";
  }
}
开发者ID:nitin-nizhawan,项目名称:incubator,代码行数:5,代码来源:QuickSort.cpp

示例12: Out

VI Out( int u, int b )
{
  if (V[u].size() <= b)
  {
    if (V[u].size() == 0)
      return VI(1, u);
    else if (V[u].size() == 1)
      return Out(V[u][0], b);
    else
    {
      VI T1 = Out(V[u][0], 1), T2 = Out(V[u][1], 1);
      for (int i = 0; i < T2.size(); i++)
        T1.PB(T2[i]);
      return T1;
    }
  }

  int Ans = (V[u].size() - b + 1) / 2;
  for (int i = 0; i < V[u].size(); i++)
    Ans += dfs2(V[u][i], 1);

  if (((V[u].size() + b) & 1) == 0 || Ans == D[u][b])
  {
    VI Res;
    int Curr = -1, Last = -1;
    for (int i = 0; i < V[u].size(); i++)
    {
      VI Temp = Out(V[u][i], 1);
      if (i == V[u].size() - 2)
        Last = Temp[0];
      if (i < b)
        for (int k = 0; k < Temp.size(); k++)
          Res.PB(Temp[k]);
      else if (Curr == -1)
        Curr = Temp[0];
      else
        Result.PB(MP(Curr, Temp[0])), Curr = -1;
    }
    if (Curr != -1 && Last != -1)
      Result.PB(MP(Curr, Last));

    return Res;
  }

  else
  {
    int Ans = (V[u].size() - b + 1) / 2;
    for (int i = 0; i < V[u].size(); i++)
      Ans += dfs2(V[u][i], 1);
    for (int i = 0; i < V[u].size(); i++)
      if (Ans - dfs2(V[u][i], 1) + dfs2(V[u][i], 2) == D[u][b])
      {
        VI Res;
        VI Temp = Out(V[u][i], 2);
        Res.PB(Temp[1]);
        int Curr = -1;
        for (int j = 0; j < V[u].size(); j++)
        {
          VI Temp = Out(V[u][j], 1);
          if (j < b - 1)
            Res.PB(Temp[0]);
          else if (Curr == -1)
            Curr = Temp[0];
          else
            Result.PB(MP(Curr, Temp[0])), Curr = -1;
        }
        return Res;
      }
  }
}
开发者ID:hrnn,项目名称:olymp,代码行数:70,代码来源:12_27_03_08_C_2351.CPP

示例13: pvi

inline void pvi(VI a){FORSZ(i,a) printf("%d%c", a[i], i == a.size() - 1 ? '\n' : ' ');}
开发者ID:cyongli,项目名称:code_bricker,代码行数:1,代码来源:B-alt.cpp

示例14: solve

void solve()
{
    int n,m,a,b,c;
    sd(n);sd(m);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            adj[i][j] = INF;
        }
        adj[i][i] = 0;
    }
    for(int i=0;i<m;i++)
    {
        sd(a);sd(b);sd(c);
        adj[a][b] = min(adj[a][b], c);
        adj[b][a] = min(adj[b][a], c);
        edges[i].F.F = a;
        edges[i].F.S = b;
        edges[i].S = c;
    }
    for(int k=0;k<n;k++)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                adj[i][j] = min(adj[i][j], adj[i][k] + adj[k][j]);
            }
        }
    }
    /*for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cout<<adj[i][j]<<" ";
        }
        cout<<endl;
    }*/

    ans.clear();
    int flag = 0;
    for(int i=0;i<m;i++)
    {
        flag = 0;
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<n;k++)
            {
                if(adj[j][edges[i].F.F] + adj[edges[i].F.S][k] + edges[i].S == adj[j][k])
                {
                    flag = 1;
                    if(flag==1)break;
                }
            }
            if(flag == 1)break;
        }
        if(flag == 0)
        {
            ans.PB(i);
        }
    }
    for(int i=0;i<ans.size();i++)
    {
        printf("%d\n",ans[i]);
    }
    //cout<<endl;

}
开发者ID:oriongump,项目名称:GoogleAPAC,代码行数:69,代码来源:prob3.cpp

示例15: min

	REP(i,k){
		ans.push_back(light[i].second);
		minl = min(minl, light[i].first);
	}
开发者ID:y42sora,项目名称:soraCodeforces,代码行数:4,代码来源:Reading.cpp


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