队内复制了浙江12年的现场省赛,自己做D题罚时突破天际,还好队友给力拿了一道二进制的题目,勉勉强强打了7题排到70名,可以说是7道中的最低队伍了QAQ,拿牌机会渺茫。。。。
后面讲一下队伍整个开题流程和部分题目的题解,主要记录自己当时做题的流程及思路历程,为以后改进做准备Orz
A - Ace of Aces
队友先看懂题目,说是签到让继续往下看。
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<string>
#include<math.h>
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
const int mod=1e9+7;
const int maxn=1e5+5;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int minn=0xc0c0c0c0;
bool cmp(int x,int y)
{
return x>y;
}
bool flag;
ll m,n,k,t,x,ans,tmp,Max,a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>t;
while(t--)
{
flag=0;
cin>>n;
ans=minn;
Max=minn;
memset(a,0,sizeof a);
for(int i=1;i<=n;i++)
{
cin>>x;
a[x]++;
if(a[x]>ans)
{
ans=a[x];
tmp=x;
}
Max=max(Max,x);
}
sort(a+1,a+1+Max,cmp);
if(a[1]==a[2])
{
cout<<"Nobody"<<endl;
continue;
}
cout<<tmp<<endl;
}
return 0;
}
B - Team Formation ZOJ - 3870
B是关于二进制亦或运算的,一开始没思路先跳过,后来队友反过去开了,这里就只放代码了
#include<iostream>
#include<sstream>
#include<iterator>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<set>
#include<vector>
#include<bitset>
#include<climits>
#include<queue>
#include<iomanip>
#include<cmath>
#include<stack>
#include<map>
#include<new>
#include <complex>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mt(a,b) memset(a,b,sizeof(a))
#define pii pair<int, int>
#define pdd pair<double, double>
#define pid pair<int, double>
#define pdi pair<double. int>
#define fr(i,a,b) for(int i=a;i<=b;i++)
#define fo(i,a,b) for(int i=a;i<=b;i--)
#define ls (k<<1)
#define rs (k<<1|1)
#define mid ((l+r)>>1)
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
const double PI = acos(-1.0);
const double E = 2.718281828459;
const double eps = 1e-7;
const int maxn=100005;
int main()
{
int t;
cin>>t;
while (t--){
ll n,m;
ll a[maxn],b[maxn];
memset(b,0,sizeof(b));
cin>>n;
ll ans=0;
for(ll i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
int tmp=0;
while(a[i]){
tmp++;
m=a[i]&1;
if(m==0)
ans+=b[tmp];
a[i]/=2;
}
b[tmp]++;
}
cout<<ans<<endl;
}
return 0;
}
D题是我开的,是一个对于数字串取它的子串和,一开始想打暴力队友指出可能可以递推,接着开始对于每一个数字进行当前位置的最大和记录,如果后面出现一样的数字,就只能算一次了,通过打表找到了递推的规律。因为对递推的dbug中没有及时考虑数字范围导致T和Segmentation,WA出现
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1e6+6;
ll dp[maxn],jg[maxn],a[maxn];
int main()
{
int t;
cin>>t;
while(t--){
int n;
cin>>n;
memset(dp,0,sizeof(dp));
memset(jg,0,sizeof(jg));
ll ans=0;
for(int i=1;i<=n;i++)
{
cin>>a[1];
dp[i]=dp[i-1]+(i-jg[a[1]])*a[1];
jg[a[1]]=i;
ans+=dp[i];
}
cout<<ans<<endl;
}
system("pause");
return 0;
}
G - Lunch Time
据说是签到,一发A,看看代码应该可以了
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
using namespace std;
const int mod=1e9+7;
const int maxn=1e5+5;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int minn=0xc0c0c0c0;
struct no
{
int p;
char s[105];
}a[maxn];
struct nod
{
int p;
char s[105];
}b[maxn];
struct node
{
int p;
char s[105];
}c[maxn];
bool cmp1(no a,no b)
{
return a.p<b.p;
}
bool cmp2(nod a,nod b)
{
return a.p<b.p;
}
bool cmp3(node a,node b)
{
return a.p<b.p;
}
ll d,m,n,k,s,t,x,ans,tmp;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>t;
while(t--)
{
ans=0;
cin>>s>>m>>d;
for(int i=1;i<=s;i++)
cin>>a[i].s>>a[i].p;
sort(a+1,a+1+s,cmp1);
for(int i=1;i<=m;i++)
cin>>b[i].s>>b[i].p;
sort(b+1,b+1+m,cmp2);
for(int i=1;i<=d;i++)
cin>>c[i].s>>c[i].p;
sort(c+1,c+1+d,cmp3);
ans+=a[s/2+1].p;
ans+=b[m/2+1].p;
ans+=c[d/2+1].p;
cout<<ans<<" "<<a[s/2+1].s<<" "<<b[m/2+1].s<<" "<<c[d/2+1].s<<endl;
}
return 0;
}
H - May Day Holiday
特殊对闰年判断,而改变那天日期,签到题
#include<iostream>
#include<sstream>
#include<iterator>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<set>
#include<vector>
#include<bitset>
#include<climits>
#include<queue>
#include<iomanip>
#include<cmath>
#include<stack>
#include<map>
#include<new>
#include <complex>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mt(a,b) memset(a,b,sizeof(a))
#define pii pair<int, int>
#define pdd pair<double, double>
#define pid pair<int, double>
#define pdi pair<double. int>
#define fr(i,a,b) for(int i=a;i<=b;i++)
#define fo(i,a,b) for(int i=a;i<=b;i--)
#define ls (k<<1)
#define rs (k<<1|1)
#define mid ((l+r)>>1)
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
const double PI = acos(-1.0);
const double E = 2.718281828459;
const double eps = 1e-7;
const int maxn=10005;
int check(int y){
if(y%400==0)
return 1;
else
{
if(y%4==0&&y%100!=0)
return 1;
else
return 0;
}
}
int main()
{
int t;
cin>>t;
while (t--){
int y;
cin>>y;
int sum,sum2;
sum=y-1928;
int sum1=0;
for(int i=1;i<=sum;i++){
if(check(1928+i))
sum1+=2;
else
++sum1;
}
sum2=sum1%7;
if(sum2==0||sum2==5)
cout<<"6"<<endl;
if(sum2==1||sum2==2||sum2==3||sum2==4)
cout<<"5"<<endl;
if(sum2==6)
cout<<"9"<<endl;
}
return 0;
}
J - Convert QWERTY to Dvorak
纯模拟,最后卡了一个gets的问题,12年的编译器不支持QAQ,队友和我打的心态炸裂。。。
不放代码了,我们是一个一个字符判断输入输出,只要搞清楚” 和‘ ’输入就行了
L - Demacia of the Ancients
我写的裸签到=v=
#include<iostream>
#include<sstream>
#include<iterator>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<set>
#include<vector>
#include<bitset>
#include<climits>
#include<queue>
#include<iomanip>
#include<cmath>
#include<stack>
#include<map>
#include<new>
#include <complex>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mt(a,b) memset(a,b,sizeof(a))
#define pii pair<int, int>
#define pdd pair<double, double>
#define pid pair<int, double>
#define pdi pair<double. int>
#define fr(i,a,b) for(int i=a;i<=b;i++)
#define fo(i,a,b) for(int i=a;i<=b;i--)
#define ls (k<<1)
#define rs (k<<1|1)
#define mid ((l+r)>>1)
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
const double PI = acos(-1.0);
const double E = 2.718281828459;
const double eps = 1e-7;
const int maxn=10005;
int main()
{
int t;
cin>>t;
while (t--){
int n;
cin>>n;
int ans=0;
for(int i=1;i<=n;i++)
{
int num;
cin>>num;
if(num>6000)
ans++;
}
cout<<ans<<endl;
}
return 0;
}
后面还读了K题,应该是个大模拟,可惜没人能做出来了,等省赛结束后取补一补。。。。