A题:http://codeforces.com/contest/527/problem/A
代码:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
#include<sstream>
#include<set>
#include<map>
#include<queue>
#include<bitset>
#include<vector>
#include<fstream>
using namespace std;
typedef long long ll;
const int M = 10;
int m[30][30];
ll deal(ll a,ll b)
{
if(a<b)
swap(a,b);
if(b==0)
return 0;
if(a==b)
return 1;
return a/b+deal(b,a%b);
}
int main() {
ll a,b;
while(cin>>a>>b)
{
cout<<deal(a,b)<<endl;
}
return 0;
}
代码:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
#include<sstream>
#include<set>
#include<map>
#include<queue>
#include<bitset>
#include<vector>
#include<fstream>
using namespace std;
const int M = 10;
int m[30][30];
int main() {
int n;
while(cin>>n)
{
memset(m,0,sizeof(m));
string s,t;
cin>>s>>t;
int ret = 0;
for(int i=1;i<=s.length();i++)
{
char c1 = s[i-1];
char c2 = t[i-1];
m[c1-'a'][c2-'a'] = i;
if(c1==c2)
ret++;
}
int ret1 = -1;
int ret2 = -1;
for(char c1 = 'a';c1<='z';c1++)
{
for(char c2='a';c2<='z';c2++)
{
if(c1!=c2&&m[c1-'a'][c2-'a']>0&&m[c2-'a'][c1-'a']>0)
{
ret1 = m[c1-'a'][c2-'a'];
ret2 = m[c2-'a'][c1-'a'];
}
}
}
if(ret1>0)
{
cout<<n-(ret+2)<<endl;
cout<<ret1<<" "<<ret2<<endl;
continue;
}
for(char c1 = 'a';c1<='z';c1++)
{
for(char c2='a';c2<='z';c2++)
{
if(c1!=c2&&m[c1-'a'][c2-'a']>0)
{
for(char c3='a';c3<='z';c3++)
{
if(m[c2-'a'][c3-'a']>0&&c2!=c3)
{
ret1 = m[c1-'a'][c2-'a'];
ret2 = m[c2-'a'][c3-'a'];
}
}
}
}
}
if(ret1>0)
{
cout<<n-(ret+1)<<endl;
cout<<ret1<<" "<<ret2<<endl;
continue;
}
cout<<n-ret<<endl;
cout<<ret1<<" "<<ret2<<endl;
}
return 0;
}
C题: http://codeforces.com/contest/527/problem/C
代码:
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
typedef long long ll;
set<int> H, W;
multiset<int> MH, MW;
int main()
{
int w, h, n;
cin >> w >> h >> n;
W.insert(0);
W.insert(w);
H.insert(0);
H.insert(h);
MH.insert(h);
MW.insert(w);
while (n--)
{
char x;
int a, b, c;
cin >> x >> c;
if (x != 'V')
swap(W, H), swap(MW, MH);
W.insert(c);
a = *(--W.find(c));
b = *(++W.find(c));
MW.erase(MW.find(b - a));
MW.insert(b - c);
MW.insert(c - a);
if(x!='V')
swap(W, H), swap(MW, MH);
cout << ((ll)(*(--MW.end())))**(--MH.end()) << endl;
}
}
D题: http://codeforces.com/contest/527/problem/D
代码:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
#include<sstream>
#include<set>
#include<map>
#include<queue>
#include<bitset>
#include<vector>
#include<fstream>
using namespace std;
typedef long long ll;
const int M = 10;
int m[30][30];
int main() {
int n;
while(cin>>n)
{
vector<pair<ll,ll> >all;
for(int i=0;i<n;i++)
{
ll x,w;
cin>>x>>w;
all.push_back(make_pair(x-w,x+w));
}
sort(all.begin(),all.end());
ll last = -9999999999999;
ll ans = 0;
for(int i=0;i<n;i++)
{
pair<ll,ll> p = all[i];
if(last<=p.first)
last = p.second,ans++;
else if(last>p.second)
last = p.second;
}
cout<<ans<<endl;
}
return 0;
}