目录
A.The_Suffix_Game
题意:后缀相同去除,至少保留一个
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <cstdio>
#include <algorithm>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
const int mod=1e9+7;
const int maxn=5e4+10;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
int ca=1;
while (T--) {
string s,t;
cin>>s>>t;
int i=s.size();
i--;
int j=t.size();
j--;
while (i>=0 && j>=0){
if (s[i]==t[j]) {
i--;
j--;
}
else break;
}
if (i==-1 || j==-1) i++,j++;
string ns=s.substr(0,i+1);
string nt=t.substr(0,j+1);
cout<<"Game #"<<ca++<<":"<<endl;
cout<<" The input words are "<<s<<" and "<<t<<"."<<endl;
cout<<" The words entered in the notebook are "<<ns<<" and "<<nt<<"."<<endl;
cout<<endl;
}
return 0;
}
B.Counting_Triangles
题意:给定点,判断有多少个三角。
分析:三点不共线即可。
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <cstdio>
#include <algorithm>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
const int mod=1e9+7;
const int maxn=5e4+10;
bool check(double x1, double x2, double x3, double y1, double y2, double y3){
return (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)==0;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
int ca=1;
while (T--) {
int n;
cin>>n;
int ans=0;
double x[105],y[105];
for (int i=0; i<n; i++)
cin>>x[i]>>y[i];
for (int i=0; i<n; i++){
for (int j=i+1; j<n; j++){
for (int k=j+1; k<n; k++){
if (!check(x[i],x[j],x[k],y[i],y[j],y[k]))
ans++;
}
}
}
cout<<"Test case #"<<ca++<<": "<<ans<<" triangle(s) can be formed."<<endl<<endl;
}
return 0;
}
C.UCF_Hold-em_Poker
题意:德州扑克。
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <cstdio>
#include <algorithm>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
const int mod=1e9+7;
const int maxn=5e4+10;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
int ca=1;
while (T--) {
string s,ans;
cin>>s;
map <char,int> k;
int Max=0;
for (int i=0; i<s.size(); i++) {
k[s[i]]++;
Max=max(Max,k[s[i]]);
}
if (Max==4) ans="FOUR OF A KIND";
else if (Max==3) {
bool tag=false;
for (int i=0; i<s.size(); i++) {
if (k[s[i]]==2) tag=true;
}
if (tag) ans="FULL HOUSE";
else ans="THREE OF A KIND";
} else if (Max==2) ans="TWO OF A KIND";
else ans="BUST";
cout<<"UCF Hold-em #"<<ca++<<": "<<s<<endl;
cout<<"Best possible hand: "<<ans<<endl;
cout<<endl;
}
return 0;
}
D.Cell_Phone_Contacts
题意:跟着题目模拟。注意外国人姓名是反的。
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <cstdio>
#include <algorithm>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<string, string> P;
const int mod=1e9+7;
const int maxn=5e4+10;
const double pi=3.14159;
struct person {
string a,b;
string add[105];
string phone[105];
int cnt1,cnt2;
void getphone(string s){
phone[cnt1]=s;
cnt1++;
}
void getadd(string s){
add[cnt2++]=s;
}
void outphone(){
sort(phone,phone+cnt1);
for (int u=0; u<cnt1; u++)
cout<<phone[u]<<endl;
}
void outadd(){
sort(add,add+cnt2);
for (int u=0; u<cnt2; u++)
cout<<add[u]<<endl;
}
};
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int ca=1;
int n;
while (cin>>n && n) {
string x,y,t;
map <P,int> mp;
int sum=1;
person p[105];
for (int i=0; i<=n; i++){
p[i].cnt1=0;
p[i].cnt2=0;
}
for (int i=0; i<n; i++) {
cin>>x>>y>>t;
P o=P(y,x);
int num;
if (!mp[o]){
num=sum;
mp[o]=sum;
p[num].a=x;
p[num].b=y;
sum++;
}
else num=mp[o];
int tag=t.find('@');
if (tag==t.npos) {
string k="(";
k+=t.substr(0,3);
k+=')';
k+=t.substr(3,3);
k+='-';
k+=t.substr(6,4);
p[num].getphone(k);
//cout<<p[num].phone[0]<<endl;
}
else {
p[num].getadd(t);
}
}
cout<<"Contact list #"<<ca++<<":"<<endl;
map <P,int> :: iterator it;
for (it=mp.begin(); it!=mp.end(); it++){
int i=it->second;
cout<<p[i].a<<" "<<p[i].b<<endl;
cout<<"Phone:"<<endl;
p[i].outphone();
cout<<"E-Mail:"<<endl;
p[i].outadd();
cout<<"###"<<endl;
}
cout<<endl;
}
return 0;
}
E.Gas_Price_Is_Going_Up/Down
题意:补缺,要求 regular< plus < super,输出最小的
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <cstdio>
#include <algorithm>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
const int mod=1e9+7;
const int maxn=5e4+10;
const double pi=3.14159;
string change(string s, string t) {
string ans;
if (t[0]!='-' && t[1]!='-' && t[2]!='-') {
return t;
}
if (t[0]=='-' && t[1]!='-' && t[2]!='-') {
ans=t[1];
ans+=t[2];
if (t[1]>s[1] || (t[1]==s[1] && t[2]>s[2]))
ans=s[0]+ans;
else ans=(char)(s[0]+1)+ans;
}
if (t[0]!='-' && t[1]=='-' && t[2]!='-') {
ans=t[0];
if (t[0]>s[0]) {
ans+='0';
ans+=t[2];
} else {
if (t[2]>s[2]) {
ans+=s[1];
ans+=t[2];
} else {
ans+=(char)(s[1]+1);
ans+=t[2];
}
}
}
if (t[0]!='-' && t[1]!='-' && t[2]=='-') {
ans=t[0];
ans+=t[1];
if (t[1]>s[1] || t[0]>s[0])
ans=ans+'0';
else ans=ans+(char)(s[2]+1);
}
return ans;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
int ca=1;
while (T--) {
string a,b,c;
cin>>a>>b>>c;
string na="",nb="",nc="";
if (a[0]=='-') na+='2';
else na+=a[0];
if (a[1]=='-') na+='0';
else na+=a[1];
if (a[2]=='-') na+='0';
else na+=a[2];
nb=change(na,b);
nc=change(nb,c);
cout<<"Gas Station #"<<ca++<<":"<<endl;
cout<<" Input: "<<a<<" "<<b<<" "<<c<<endl;
cout<<" Output: "<<na<<" "<<nb<<" "<<nc<<endl;
cout<<endl;
}
return 0;
}
F.Dr.Sukthankar’s_Robot
G.Brett_Favre_Diaries
H.In_the_Spotlight
题意:算出灯光角度内的强度和。
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <cstdio>
#include <algorithm>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<string, string> P;
const int mod=1e9+7;
const int maxn=5e4+10;
const double pi=3.14159265;
double xs,ys;
double d(double x){
return ys*ys+(xs-x)*(xs-x);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int ca=1;
int T;
cin>>T;
while (T--) {
double ans=0;
double x[105],a[105],y[105];
int n;
cin>>xs>>ys>>n;
for (int i=0; i<n; i++)
cin>>x[i];
for (int i=0; i<n; i++)
cin>>a[i];
for (int i=0; i<n; i++)
cin>>y[i];
for (int i=0; i<n; i++){
double t=atan(fabs(xs-x[i])/ys);
t=t/pi*180;
if (t<=a[i] || t-a[i]<0.01)
ans+=y[i]/d(x[i]);
}
cout<<fixed<<setprecision(3);
cout<<"Scene #"<<ca++<<": Spotlight intensity on Stacie is ";
cout<<ans<<endl<<endl;
}
return 0;
}
I.Ty_G.Too?
题意:输出太极图阴阳面积。
分析:简单数学题,注意小数的四舍五入。
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <cstdio>
#include <algorithm>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
const int mod=1e9+7;
const int maxn=5e4+10;
const double pi=3.14159;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
int ca=1;
while (T--) {
double a,b;
cin>>a>>b;
double s=pi*a*a;
int t1=(pi*a*b+0.005)*100;
int t2=(s-pi*a*b+0.005)*100;
double ans1=t1*1.0/100;
double ans2=t2*1.0/100;
cout<<"Taijitu #"<<ca++<<": ";
cout<<fixed<<setprecision(2);
cout<<"yin "<<ans2<<", yang "<<ans1<<endl;
cout<<endl;
}
return 0;
}