[恢复状态] TCO 2016 1A
道理我都懂..
然而它就是炸了啊
250
给你个时钟,问你交换时针分针后是几点
Tip:在3:30的时候时针依旧指在3上......
我这个sb输出了00:35..
然而答案是12:35..
嗯..
代码(炸掉的)如下:(好的随手改改即可了)
#include<set> #include<map> #include<list> #include<queue> #include<stack> #include<string> #include<time.h> #include<math.h> #include<memory> #include<vector> #include<bitset> #include<fstream> #include<stdio.h> #include<utility> #include<string.h> #include<iostream> #include<stdlib.h> #include<algorithm> using namespace std; struct EllysTimeMachine { string getTime(string time) { int x1=time[0]*10+time[1]; int x2=time[3]*10+time[4]; x1-=48*11; x2-=48*11; x2/=5; swap(x1,x2); x2*=5; string c; c+='0'+x1/10; c+='0'+x1%10; c+=':'; c+='0'+x2/10; c+='0'+x2%10; return c; } }; #ifdef absi2011 int main() { //freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); EllysTimeMachine a; string b; cin>>b; system("pause"); return 0; } #endif
500
给你n只袜子和它们的型号,你要配出至少m对,使得这m对之间尺码差的最大值最小
直接二分,代码如下:
#include<set> #include<map> #include<list> #include<queue> #include<stack> #include<string> #include<time.h> #include<math.h> #include<memory> #include<vector> #include<bitset> #include<fstream> #include<stdio.h> #include<utility> #include<string.h> #include<iostream> #include<stdlib.h> #include<algorithm> using namespace std; int a[1005]; int n; bool check(int x,int y) { int i; int sum=0; for (i=1;i<n;i++) { if (a[i]-a[i-1]<=x) { sum++; i++; } } return sum>=y; } struct EllysSocks { int getDifference(vector<int> s,int p) { sort(s.begin(),s.end()); n=s.size(); int i; for (i=0;i<s.size();i++) { a[i]=s[i]; } int l=0,r=1000000000; for (;l<=r;) { int mid=(l+r)/2; if (check(mid,p)) r=mid-1; else l=mid+1; } return l; } }; #ifdef absi2011 int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); return 0; } #endif
1000
给你一颗树,你可以从点x直接到它的任意祖先或子树内任意点;一开始你在0号点;你要在n步内从1到n分别访问一遍求访问方案(如果多个字典序最小)(就是说不许再到0了)
不会做....可能没有奇怪的字典序限制会好做很多
最终代码也毫无意义..
#include<set> #include<map> #include<list> #include<queue> #include<stack> #include<string> #include<time.h> #include<math.h> #include<memory> #include<vector> #include<bitset> #include<fstream> #include<stdio.h> #include<utility> #include<string.h> #include<iostream> #include<stdlib.h> #include<algorithm> using namespace std; int father[205]; int mins[205]; int used[205]; vector<int> v[205]; vector<int> ans; int f=0; void dfs1(int x) { int i; mins[x]=x; if (used[x]) mins[x]=99999; for (i=0;i<v[x].size();i++) { dfs1(v[x][i]); mins[x]=min(mins[x],mins[v[x][i]]); } } void dfs2(int x) { if (f!=0) return; if (v[x].size()>2) { ans.clear(); f=2; return; } if (v[x].size()==0) { if (!used[x]) { ans.push_back(x); used[x]=true; f=1; } } if (v[x].size()==1) { if (x==mins[x]) { ans.push_back(x); used[x]=true; f=1; } dfs2(v[x][0]); } if (v[x].size()==2) { if (mins[v[x][0]]>mins[v[x][1]]) swap(v[x][0],v[x][1]); for (;;) { f=0; dfs1(v[x][0]); dfs2(v[x][0]); if (f!=1) break; } if (f==0) { if (x!=0) { ans.push_back(x); used[x]=true; } } if (f==2) return; for (;;) { f=0; dfs1(v[x][1]); dfs2(v[x][1]); if (f!=1) break; } } } struct EllysTree { vector<int> getMoves(vector<int> a) { int i; for (i=0;i<a.size();i++) { father[i+1]=a[i]; v[father[i+1]].push_back(i+1); } used[0]=true; for (;;) { f=0; dfs1(0); dfs2(0); if (f!=1) break; } vector<int> empty; if (f==2) return empty; return ans; } }; #ifdef absi2011 int a[25]={9, 13, 7, 9, 8, 14, 14, 0, 6, 9, 2, 2, 5, 5, 7,-1}; int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); vector<int> b; int i; for (i=0;a[i]!=-1;i++) { b.push_back(a[i]); } EllysTree a; vector<int> c=a.getMoves(b); for (i=0;i<c.size();i++) { printf("%d ",c[i]); } system("pause"); return 0; } #endif
challenge掉一个人,+1;-1 得分25分
最后rank 365大滚粗,果然状态需要恢复....
反正晋级了 Rating应该已经不能看了
Rating: 1516 --> 1500