2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym
来源:互联网 发布:mysql删除表语句 编辑:程序博客网 时间:2024/05/19 10:15
题目链接:http://codeforces.com/gym/101190/attachments
题意:给了一堆逻辑表达式,判断是否对于所有的整数(-2^15 - 2^15-1)范围类的数,都满足逻辑表达式或者都不满足这些逻辑表达式,还有是部分满足,部分满足需要输出这些区间。没说清楚,题目挺短的,可以自己读下。
解法: bitset暴力,注意把下标修正到正数,设个offset就好。
#include<bits/stdc++.h>using namespace std;const int offset = 32768;int main(){ freopen("hard.in","r",stdin); freopen("hard.out","w",stdout); string str; bitset<65536> ans; while(getline(cin, str)) { stringstream ss(str); string s; bitset<65536> tmp; tmp.flip(); while(1) { ss >> s; ss >> s; bitset<65536> make; if(s == ">=") { ss >> s; int x; sscanf(s.c_str(), "%d", &x); for(int i = x + offset; i < 65536; i++) make.set(i); } else { ss >> s; int x; sscanf(s.c_str(), "%d", &x); for(int i = x + offset; i >= 0; i--) make.set(i); } tmp &= make; if(!(ss >> s)) break; if(s == "||") break; } ans |= tmp; } if(ans.count() == 65536) { puts("true"); return 0; } else if(ans.count() == 0) { puts("false"); return 0; } vector<pair<int, int> > Ans; for(int i = 0; i < 65536; i++) { if(ans[i]) { int pos = i; while(pos + 1 < 65536 && ans.test(pos + 1)) pos++; Ans.push_back(make_pair(i, pos)); i = pos; } } for(int i = 0; i < Ans.size(); i++) { if(Ans[i].first == 0 || Ans[i].second == 65535) { if(Ans[i].first == 0) printf("x <= %d", Ans[i].second - offset); else printf("x >= %d", Ans[i].first - offset); } else printf("x >= %d && x <= %d", Ans[i].first - offset, Ans[i].second - offset); if(i != Ans.size() - 1) printf(" ||"); printf("\n"); }}
0 0
- 2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym
- 2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym
- 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)
- 2014-2015 ACM-ICPC Northeastern European Regional Contest (NEERC 14)
- 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)题解
- 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) A
- ACM ICPC 2017 Warmup Contest 2(ACM Northeastern European Regional Contest,Northern Subregion 2016)
- 2008-2009 ACM-ICPC Northeastern European Regional Contest (NEERC 08) (2013区域赛练习)
- 2014-2015 ACM-ICPC Northeastern European Regional Contest (NEERC 14) 解题报告
- 2010-2011 ACM-ICPC Northeastern European Regional Contest (NEERC 10) G
- Gym 101334(ACM ICPC 2005–2006, Northeastern European Regional Contest)
- Gym 101308(ACM ICPC 2009–2010, Northeastern European Regional Contest)
- ACM ICPC 2017 Warmup Contest 4(ACM Northeastern European Regional Contest,Northern Subregion 2015)
- 并查集 xtu-2170 ACM ICPC 2011–2012, Northeastern European Regional Contest Problem E. Eve
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
- 2001-2002 ACM Northeastern European Regional Programming Contest-Problem G-"Library"
- HDU/HDOJ 1551 Cable master 2001-2002 ACM Northeastern European Regional Programming Contest
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest
- CPP_Basic_Summary_0.2
- CCCC-GPLT L1-033. 出生年 天梯赛
- Scala入门04
- C#中的Delegate
- L3-013. 非常弹的球(2017初赛)
- 2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym
- 数学建模方法汇总-百度脑图
- 历届试题 剪格子
- c/c++整理--const和static关键字
- 冒泡排序演进优化
- No.455 Assign Cookies
- VI中显示行号的方法
- x86 x64, thumb, arm CPU simple inline-hook framework
- 使用mySQL部分建议