Gym 101102C Bored Judge(set--结构体集合)

  这个故事告诉我们,WA了一定要找自己的原因... ...

  当我开始用set去做的时候,发现一直过不去,一开始忘了把初始排名加进去,后来忘了第0秒,第0秒第一的id = 1

  这个题目的做法也不只这一种,应该说这一种是最偷懒的.

  代码如下:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<set>
using namespace std;
#define N 100005
int s[N],win[N];
struct Node {
    int id,sc;
    Node(int i=0,int s=0) {
        id = i;
        sc = s;
    }
    bool operator < (Node A) const {
        if(A.sc != sc) return sc > A.sc;
        else return id < A.id;
    }
};
set<Node> st;
set<Node>::iterator it;
int main() {
//    freopen("C.in.cpp","r",stdin);
    int T,n,q,x,p;
    scanf("%d",&T);
    while(T--) {
        st.clear();
        memset(s,0,sizeof(s));
        scanf("%d%d",&n,&q);
        for(int i = 1; i <= n; i++) {
            st.insert(Node(i,0));
        }
        win[0] = 1;
        for(int i = 1; i <= q; i++) {
            scanf("%d%d",&x,&p);
            st.erase(Node(x,s[x]));
            s[x] += p;
            st.insert(Node(x,s[x]));
            it = st.begin();
            Node tmp = *it;
            win[i] = (*it).id;
        }
        int i;
        for(i = q; i >= 1; i--) {
            if(win[i] != win[i-1]) {
                break;
            }
        }
        printf("%d\n",i);
    }
    return 0;
}
时间: 2024-09-30 16:27:11

Gym 101102C Bored Judge(set--结构体集合)的相关文章

c# 结构体 集合 复习

添加5个学生的信息到集合中,每个学生都有:学号,姓名,成绩,3个内容,添加完毕后将学生的分数从高到低排列并打印出来,使用结构体 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace ConsoleApplication1 { class Progra

结构体集合面向对象

namespace wwz { class Program { struct student { public string name; public int chengji; public int cno; } public ArrayList paixu(ArrayList a) //排序函数 { int n = a.Count; for (int i = 1; i <= a.Count; i++) { for (int j = 1; j <= a.Count - i; j++) { if

IOS 阶段学习第十天笔记(结构体)

IOS学习(C语言)知识点整理 一.数据结构 1)概念:数据结构是指计算机程序中所操作的对象——数据以及数据元素之间的相互关系和运算. 2)结构体必须有struct 关键字修饰. 实例代码: 1 struct Person{ 2 char name[20]; 3 int age; 4 float height; 5 }; 6 7 int main(){ 8 struct Person Tom={"Tom",22,180};//struct Person 是数据结构 9 //Tom 是变

例题:把一个超市购物的题做成函数。这个题做成函数没有必要,但可以了解输入参数,输出参数,返回值,函数体,还有结构体,ArryList集合,for循环算结果,以及集合里 .count的使用

class Program { struct shangpin                  //定义个结构体 { public string mingcheng; public int jiage; public int shuliang; } public double  chaoshi(double zongjia)    //定义函数名 { ArrayList al = new ArrayList();   //定义一个集合 while (true) { shangpin sp =

例题:输入学生的各项资料,然后根据学生的分数,重新排序。重新复习结构体,集合,数组,for循环,冒泡排序,水平符的使用。

class Program { struct student     //定义一个student的结构体 { public string name;   //基本格式 public int code; public int age; public int fenshu; } static void Main(string[] args) { while (true) { ArrayList al = new ArrayList();  //定义一个新的集合 Console.Write("请输入人

c#---部分;把数组或者结构体存入集合里,然后再从结合中取出之后,输出;

1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.ReadLine()); //ArrayList al = new ArrayList(); //for (int i = 0; i < a;i++ ) //{ // string [] name =new string[3]; // Console.Write("请输入第{0}个人的姓名:&quo

C#例题:输入学生学号,姓名,分数,然后根据分数进行排序。这个题是用集合和结构体来做,与上一题不同。掌握基础知识很重要

class Program { struct student { public string name; public int code; public int age; public double fenshu; } static void Main(string[] args) { ArrayList al = new ArrayList(); //定义一个新的集合 Console.Write("请输入人数:"); int renshu = Convert.ToInt32(Cons

结构体嵌入字典或者集合

在使用STL时,由于解题的需要我们常常将结构体嵌入到字典或者集合中,,如果我们这样写: struct stu{ int a; int b; }; mp<stu,int >mp; 在编译的时候会报错,,因为map和set会对STL中的元素排序,如果说直接嵌入的话,, 会使map无法对key进行排序,所以要自己在结构体中定义排序方法: struct stu{ int a; int b; bool friend operator <(const stu &x,const stu &am

字典:散列表、散列字典、关键字列表、集合与结构体

字典 散列表和散列字典都实现了Dict的行为.Keyword模块也基本实现了,不同之处在于它支持重复键. Eunm.into可以将一种类型的收集映射转化成另一种. defmodule Sum do def values(dict) do dict |> Dict.values |> Enum.sum end end hd = [ one: 1, two: 2, three: 3 ] |> Enum.into HashDict.new IO.puts Sum.values(hd) #=&g