本文主要是介绍UVALIVE 4887 Soccer UVELIVE 4882,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2015 UESTC Winter Training #6 训练赛的两道搜索模拟题
uvalive 4882
// whn6325689
// Mr.Phoebe
// http://blog.csdn.net/u013007900
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <climits>
#include <complex>
#include <fstream>
#include <cassert>
#include <cstdio>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <ctime>
#include <set>
#include <map>
#include <cmath>
#include <functional>
#include <numeric>
#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef complex<ld> point;
typedef pair<int, int> pii;
typedef pair<pii, int> piii;
typedef vector<int> vi;#define CLR(x,y) memset(x,y,sizeof(x))
#define mp(x,y) make_pair(x,y)
#define pb(x) push_back(x)
#define lowbit(x) (x&(-x))
#define MID(x,y) (x+((y-x)>>1))
#define eps 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LLINF 1LL<<62template<class T>
inline bool read(T &n)
{T x = 0, tmp = 1; char c = getchar();while((c < '0' || c > '9') && c != '-' && c != EOF) c = getchar();if(c == EOF) return false;if(c == '-') c = getchar(), tmp = -1;while(c >= '0' && c <= '9') x *= 10, x += (c - '0'),c = getchar();n = x*tmp;return true;
}
template <class T>
inline void write(T n)
{if(n < 0){putchar('-');n = -n;}int len = 0,data[20];while(n){data[len++] = n%10;n /= 10;}if(!len) data[len++] = 0;while(len--) putchar(data[len]+48);
}
//-----------------------------------const int MAXN=1010;char str[MAXN];//Íâ³ËÇÒÄÚ·Ç³Ë string dfs(string s, int &g)
{string res = "", s1 = "", s2;int len = s.length(), g2, t = 2, i = 0;g = 2;while(i < len){if(s[i] == '('){int f = 0;s2 = "";do{if(s[i] == '('){if(f++)s2 += s[i];}else if(s[i] == ')'){if(--f)s2 += s[i];}elses2 += s[i];i++;}while(i < len && f);s2 = dfs(s2, g2);//cout << s2 << endl;if(t == 2){s1 = s2;t = g2;}else{if(!g2)s2 = '(' + s2 + ')';if(t)s1 += s2;else{s1 = '(' + s1 + ')' + s2;t = 1;}}}else if(s[i] == '+'){res += s1 + '+';g = 0;s1 = "";t = 2;i++;}else{while(i < len && s[i] != '(' && s[i] != '+'){if(t == 2){s1 += s[i];t = 1;}else if(t)s1 += s[i];else{s1 = '(' + s1 + ')' + s[i];t = 1;}i++;}}}if(res == "")g = t;g = g > 0;return res + s1;
}int main()
{
// freopen("data.txt","r",stdin);while(~scanf("%s",str)){int j;printf("%s\n",dfs(string(str),j).c_str());}return 0;
}
uvalive 4887
// whn6325689
// Mr.Phoebe
// http://blog.csdn.net/u013007900
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <climits>
#include <complex>
#include <fstream>
#include <cassert>
#include <cstdio>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <ctime>
#include <set>
#include <map>
#include <cmath>
#include <functional>
#include <numeric>
#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef complex<ld> point;
typedef pair<int, int> pii;
typedef pair<pii, int> piii;
typedef vector<int> vi;#define CLR(x,y) memset(x,y,sizeof(x))
#define mp(x,y) make_pair(x,y)
#define pb(x) push_back(x)
#define lowbit(x) (x&(-x))
#define MID(x,y) (x+((y-x)>>1))
#define eps 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LLINF 1LL<<62template<class T>
inline bool read(T &n)
{T x = 0, tmp = 1; char c = getchar();while((c < '0' || c > '9') && c != '-' && c != EOF) c = getchar();if(c == EOF) return false;if(c == '-') c = getchar(), tmp = -1;while(c >= '0' && c <= '9') x *= 10, x += (c - '0'),c = getchar();n = x*tmp;return true;
}
template <class T>
inline void write(T n)
{if(n < 0){putchar('-');n = -n;}int len = 0,data[20];while(n){data[len++] = n%10;n /= 10;}if(!len) data[len++] = 0;while(len--) putchar(data[len]+48);
}
//-----------------------------------map<string,int > id;
vi l,r;
char s[222],ss[222];int n;
int base[22],rank[22],st[22],tob[22];
int mx[22],mi[22];
string name[22];bool cmp(int x,int y)
{return tob[x]>tob[y];
}void dfs(int dep)
{if(dep==l.size()){for(int i=0;i<=n;i++){rank[i]=i;tob[i]=base[i];}for(int i=0;i<l.size();i++){if(!st[i]){tob[l[i]]++;tob[r[i]]++;}else if(st[i]==1)tob[l[i]]+=3;elsetob[r[i]]+=3;}sort(rank+1,rank+n+1,cmp);int cur=1;for(int i=1;i<=n;i++){if(tob[rank[i]]!=tob[rank[i-1]])cur=i;mx[rank[i]]=max(mx[rank[i]],cur);mi[rank[i]]=min(mi[rank[i]],cur);}}else{st[dep]=0;dfs(dep+1);st[dep]=1;dfs(dep+1);st[dep]=2;dfs(dep+1);}
}void pu(int x)
{if (x == 1)printf("1st");else if (x == 2)printf("2nd");else if (x == 3)printf("3rd");elseprintf("%dth", x);
}int main()
{
// freopen("data.txt","r",stdin);int m,a,b,x,y,len,cas=0;while(read(n)&&read(m)&&(n+m)){if(cas++)putchar('\n');id.clear();l.clear();r.clear();CLR(base,0);base[0]=-1;for(int i=1;i<=n;i++){cin>>name[i];id[name[i]]=i;}while(m--){scanf("%s vs %s %d %d",s,ss,&a,&b);len=strlen(ss);ss[len-1]='\0';
// cout<<s<<" "<<ss<<endl;x=id[s];y=id[ss];if(~a){if(a==b){base[x]++;base[y]++;}else if(a>b)base[x]+=3;elsebase[y]+=3;}else{l.pb(x);r.pb(y);}}CLR(mi,INF);CLR(mx,-INF);dfs(0);for (int i=1;i<=n;i++){printf("Team %s can finish as high as ",name[i].c_str());pu(mi[i]);printf(" place and as low as ");pu(mx[i]);puts(" place.");}}return 0;
}
这篇关于UVALIVE 4887 Soccer UVELIVE 4882的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!