CSUOJ 1554 SG Value

1554: SG Value

Time Limit: 5 Sec  Memory Limit: 256 MB
Submit: 140  Solved: 35

Description

The SG value of a set (multiset) is the minimum positive integer that could not be constituted of the number in this set.
You will be start with an empty set, now there are two opertions:
1. insert a number x into the set;
2. query the SG value of current set.

Input

Input contains multiple test cases. Each test case starts with a number N (0 < N <= 1e5) -- the total number of opertions.
The next N lines contain one opertion each.
1 x means insert a namber x into the set;
2 means query the SG value of current set.

Output

For each query output the SG value of current set.

Sample Input

5
2
1 1
2
1 1
2

Sample Output

1
2
3

HINT

Source

解题:答案爆INT啊。。。注意溢出

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 priority_queue<int,vector<int>,greater<int> >q;
 5 int n,op;
 6 int main(){
 7     while(~scanf("%d",&n)){
 8         while(!q.empty()) q.pop();
 9         LL ans = 0;
10         while(n--){
11             scanf("%d",&op);
12             if(op == 1){
13                 scanf("%d",&op);
14                 q.push(op);
15             }else{
16                 while(!q.empty() && q.top() <= ans + 1){
17                     ans += q.top();
18                     q.pop();
19                 }
20                 printf("%lld\n",ans+1);
21             }
22         }
23     }
24     return 0;
25 }

时间: 2024-12-30 22:12:46

CSUOJ 1554 SG Value的相关文章

1554: SG Value (巧妙的模拟题,也属于思维题)

1554: SG Value Submit Page    Summary    Time Limit: 5 Sec     Memory Limit: 256 Mb     Submitted: 497     Solved: 167 Description The SG value of a set (multiset) is the minimum positive integer that could not be constituted of the number in this se

CSU 1554 SG Value (multiset/priority queue 思维题)

题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1554 Description The SG value of a set (multiset) is the minimum positive integer that could not be constituted of the number in this set.You will be start with an empty set, now there are two o

math --- CSU 1554: SG Value

SG Value Problem's Link:   http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1554 Mean: 一个可重集合,初始为空,每次插入一个值,询问这个集合的SG值(集合中的数字组合相加不能达到的最小值)是多少. analyse: 这题方法很巧妙. 假设当前不能达到的最小值为v,对于要插入的一个新值x 1)如果x>v,那么v的值不会改变,我们用一个优先队列(从小到大)将x进队; 2)如果x<=v,那么v的值会改变为v+x,然

CSU 1554 SG Value 动态维护最小不可组成的数

题目链接:点击打开链接 题意: n个操作 1 val 在集合中插入val 2 查询当前集合 通过任意数求和不能得到的最小正整数 思路: 空集合时ans=1 且插入数字后ans只能增加,所以维护这个ans ans是 a1+a2+a3···+ai < ans < ai+1 的最小的i 所以ans是最小的前缀和+1且<ai+1 用multiset记录ai+1 ··an 插入的数<=ans时才会更新答案,所以复杂度是nlogn ---------------- 证明: 首先我们设这个最小不

CSU 1554 SG Value (集合类的学习)

题目大意: 2种操作 1 a:往集合中添加一个元素a 2: 询问这个集合中的元素任意组合相加所不能得到的最小数的值 这道题总是不断地去找当前所能处的最小值能否被当前的最小值加上其前部的一堆可抵达数到达当前位置 也就是 minn < *s.begin() , 说明此时内部最小的元素是不影响这个值的,否则 minn+=*s.begin(),然后剔除最小值,不断往下访问 在这里因为相同数据也可以同时保存在集合内,所以不采用set(会删除重复元素),而是使用multiset. 在这里顺便学习理解一下mu

2018年省赛热身赛第4场

A:CSU 1547: Rectangle (思维题加一点01背包) B:1548: Design road (思维题 做法:三分找极值) C:1549: Navigition Problem (几何计算+模拟 细节较多) D:1550: Simple String (做得少的思维题,两个字符串能否组成另外一个字符串问题) G:1553: Good subsequence (很奇妙的set模拟题,也可以直接暴力) H:1554: SG Value (巧妙的模拟题,也属于思维题) I:1555:

SG Value

SG Value Time Limit: 5 Sec Memory Limit: 256 MB Submit: 163 Solved: 45 [Submit][Status][Web Board] Description The SG value of a set (multiset) is the minimum positive integer that could not be constituted of the number in this set. You will be start

TYVJ 2049 魔法珠 sg函数

题意:链接 方法:sg函数 解析: tyvj的题大部分都没题解啊- - 不过这样貌似会更好?感觉做这的题都需要自己动脑啊- - 虽然嘴上说着好烦然而心里觉得好评? 回归正题 设sg[x]表示数x的sg值,这好像是废话 然后对于读入的a[i],将所有的a[i]的sg值异或起来如果不是零则先手赢反之后手 维护的时候有个坑. 每次求约数的时候,数组要在sg里开,因为如果递归下去的话,全局变量的话会被更改,会被坑死. 然后就是怎么维护了 对于x,先求约数 之后枚举哪个数不取,将其他的异或(或者先都异或起

hdu1848 Fibonacci again and again(SG函数博弈)

现在换是看不明白SG函数的求法什么的 暂时先当模板题吧 函数mex1就是求g(x) 然后异或 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; int k,fibo[100],f[10001]; int mex1(int p){ int i,t; bool g[101]={0}; for(i=0;i<k;i++){