2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym - 101190H bitset,逻辑表达式模拟
2017-03-26 21:17
597 查看
题目链接:http://codeforces.com/gym/101190/attachments
题意:给了一堆逻辑表达式,判断是否对于所有的整数(-2^15 - 2^15-1)范围类的数,都满足逻辑表达式或者都不满足这些逻辑表达式,还有是部分满足,部分满足需要输出这些区间。没说清楚,题目挺短的,可以自己读下。
解法: bitset暴力,注意把下标修正到正数,设个offset就好。
题意:给了一堆逻辑表达式,判断是否对于所有的整数(-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"); } }
相关文章推荐
- 2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym - 101190E 询问离线,排序
- 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15) J Jump
- 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)
- 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) A
- 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)题解
- 2010-2011 ACM-ICPC Northeastern European Regional Contest (NEERC 10) G - Game of 10
- 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)
- 2008-2009 ACM-ICPC Northeastern European Regional Contest (NEERC 08) (2013区域赛练习)
- 2012-2013 ACM-ICPC Northeastern European Regional Contest (NEERC 12)
- 2016-2017 ACM-ICPC Northwestern European Regional Programming Contest (NWERC 2016)
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) E.Passwords AC自动机+dp
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) F dfs序+树状数组
- CodeFroces GYM 2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16) B.street(最短路)
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) D.Dinner Bet 概率DP+排列组合
- 2016-2017 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2016) C Castle (kmp)
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) B - Bribing Eve
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
- 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) H Heroes Of Might And Magic (隐含dp)
- 2016-2017 acm-icpc neerc moscow subregional contest l题题解