首页 > 其他分享 >814 C Fighting Tournament

814 C Fighting Tournament

时间:2022-08-21 15:14:45浏览次数:72  
标签:q2 int Tournament Fighting push ti front 814 first

写的时候思路想到了,但是不怎么会维护。 这儿贴一个比较好理解的维护方式,用的双端队列。

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#pragma GCC optimize(3)
typedef pair<int, int>PII;
#define pb push_back
const int N = 1e5 + 10;
PII a[N];
vector<int>v[N];
void cf(){
	int n, q;
	cin >> n >> q;
	for (int i = 1; i <= n; i++)v[i].clear();
	int ma = 0;
	deque<PII>q2;
	for (int i = 1; i <= n; i++){
		cin >> a[i].first;
		a[i].second = i;
		q2.push_back(a[i]);
		ma = max(ma, a[i].first);
	}
	int ti = 0;//回合数
	while (1){
		if (q2.front().first == ma)break;
		ti++;
		PII x = q2.front();
		q2.pop_front();
		PII y = q2.front();
		q2.pop_front();
		if (x.first>y.first){
			q2.push_front(x);
			q2.push_back(y);
			v[x.second].pb(ti);
		}
		else if (x.first<y.first){
			q2.push_back(x);
			q2.push_front(y);
			v[y.second].pb(ti);
		}
	}
	int id = q2.front().second;//最大元素的id
	while (q--){
		int x, y;
		cin >> x >> y;
		if (x == id){
			if (ti){//第二到第一的过程也胜利了一次
				if (y<ti)cout << 0 << endl;
				else cout << y - ti + 1 << endl;
			}
			else{//始终在第一位
				cout << y << endl;
			}
		}
		else if (v[x].empty()){
			cout << 0 << endl;
		}
		else{
			int idx = upper_bound(v[x].begin(), v[x].end(), y) - v[x].begin();
			cout << idx << endl;
		}
	}
}
signed main(){
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int _ = 1;
	cin >> _;
	while (_--){
		cf();
	}
	return 0;
}

标签:q2,int,Tournament,Fighting,push,ti,front,814,first
From: https://www.cnblogs.com/xjtfate/p/16610024.html

相关文章

  • Codeforces Round #814 (Div. 2)(补题中)
    战绩:  有铁头娃A.ChipGame猜了个结论,第一次猜的是n==m,第二次猜的是n+m的奇偶性。严格证明也比较简单。由于只能向右向上,我们每次移动相当于缩减问题规模。那么......
  • CF Round 814 Div2 题解
    A题ChipGame(签到)给定一个\(n\)行\(m\)列的方格矩阵,左下角是\((1,1)\),右上角是\((m,n)\)。(采取了类似笛卡尔坐标系的表示法,不是普通的\(x\)行\(y\)列)Burenka......
  • CF1719C Fighting Tournament 题解
    思路根据题意,很容易看出,每个人都完成一次比赛后,即完成\(n-1\)轮之后,力量值最大的人会留在第一的位置,且在第\(n-1\)轮完成后,除了力量值最大的人,其他人的胜场数都不会再......
  • Codeforces Round #814 (Div. 2)
    A.ChipGame题目描述BurenkaandTonyaareplayinganoldBuryatgamewithachiponaboardofn\timesmcells.Atthebeginningofthegame,thechipisl......
  • Codeforces Round #814 (Div. 2)
    比赛链接CodeforcesRound#814(Div.2)D2.BurenkaandTraditions(hardversion)给出\(n\)个数,每次可以选择一个区间和一个数,将该区间的所有数异或上该数,代价为区......
  • 20220814 idea_springboot_启动 Cannot load driver class: com.mysql.cj.jdbc.
    1问题Cannotloaddriverclass:com.mysql.cj.jdbc.Driver 2解决方案2.1已解决2.1.1首先,去查看项目中MySQL的版本如果找不到,说......
  • 20220814 idea_SpringBoot_启动 jpa 启动 Access to DialectResolutionInfo canno
    1问题AccesstoDialectResolutionInfocannotbenullwhen'hibernate.dialect'notset 2解决方案2.1未解决直接用这个问题搜索,使用了很......