那句话怎么说的来着,打了星还垫底是最尴尬的= =
虽然没打星…
现场只做出了6个题,走的时候连账号都没拿,借了同学的账号赛后清了其余三道1006 1007 1008。
1006读错题,就算是没读错,由于之前的一个类似的题没清是该反思反思了!
1007寻思打完1008回来接手
1008最后一小时都在攻这个题,居然被一个&卡住了,哎…居然能把“与”和”同或”当成一个东西
1003和1009犯了低级错误。
尤其1009这个题WA5,sort时n,m写成n,n,检查了将近40分钟,编码能力真的是有问题!
1001 考研【水】
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while (n--)
{
int a, b, c, d;
cin >> a >> d >> c >> b;
if (a >= 85 && b >= 85 && c >= 55 && d >= 55 && a + b + c + d >= 370)
cout << "A" << endl;
else if (a >= 85 && b >= 85 && c >= 55 && d >= 55 && a + b + c + d >= 305)
cout << "B" << endl;
else
cout << "C" << endl;
}
return 0;
}
1002 身份证验证【模拟】
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<queue>
#include<stack>
#define ll long long int
using namespace std;
char sf[19];
int a,b,c;
char d,e;
int a1[10000];
bool panduan(char sf[])
{
int m=(sf[6]-'0')*1000+(sf[7]-'0')*100+(sf[8]-'0')*10+(sf[9]-'0');
int n=(sf[10]-'0')*10+(sf[11]-'0');
int x=(sf[12]-'0')*10+(sf[13]-'0');
if(a-m>18)
return 0;
if(a-m==18&&n<b)
return 0;
if(a-m==18&&n==b&&x<=c)
return 0;
return 1;
}
int main()
{
char duizhao[11]={'1','0','X','9','8','7','6','5','4','3','2'};
int xishu[17]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
int n;
while(~scanf("%d",&n))
{
cin>>a>>d>>b>>e>>c;
memset(a1,0,sizeof a1);
for(int j=0;j<n;j++)
{
cin>>sf;
if(panduan(sf))
{
a1[j]=0;
continue;
}
int sum=0;
for(int i=0;i<17;i++)
{
sum=sum+xishu[i]*(sf[i]-'0');
}
sum=sum%11;
if(duizhao[sum]==sf[17])
{
a1[j]=1;
}
else
a1[j]=0;
}
for(int j=0;j<n;j++)
{
if(a1[j]==1)
cout<<"Accepted"<<endl;
else
cout<<"Sorry"<<endl;
}
}
return 0;
}
1003 下起楼来我最快【水】
#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
#define ll long long int
using namespace std;
int n,m;
int main()
{
while(~scanf("%d%d",&n,&m))
{
ll a,b,c,d;
cin>>a>>b>>c>>d;
ll e=abs(n-m);
ll t1=(n-1)*d;
ll t2=e*a+2*b+c+(n-1)*a;
if(t1<t2)
cout<<t1<<endl;
else
cout<<t2<<endl;
}
return 0;
}
1004 正品的概率【条件概率】
#include <iostream>
#include<stdio.h>
#include<cmath>
#define ll long long int
using namespace std;
ll gcd (ll x,ll y)
{
if(y==0)
return x;
return gcd(y,x%y);
}
ll qiuck(ll q,ll k)
{
ll sum=1;
while(k>0)
{
if(k%2==1)
sum=sum*q;
q=q*q;
k=k/2;
}
return sum;
}
int main()
{
ll m,n,k;
while(cin>>m>>n>>k)
{
ll y=m+qiuck(2,k)*n;
ll t=gcd(y,m);
cout<<m/t<<"/"<<y/t<<endl;
}
return 0;
}
1005 整数的Alvin值【规律】
#include <iostream>
#include<stdio.h>
#include<cmath>
#define ll long long int
using namespace std;
ll ppp = 1e9 + 7;
ll a[1000000];
int main()
{
ll n;
while (cin >> n)
{
ll sum = 0;
for (int i = 0; i < n + 1; i++)
{
scanf("%lld", &a[i]);
}
ll p = 1;
for (int i = 1; i < n; i++)
{
p *= 1ll * 2;
p %= ppp;
}
for (ll i = 0; i < n; i++)
{
sum += a[i] * p % ppp;
}
sum = sum + a[n];
sum = (sum+ppp)%ppp;
cout << sum << endl;
}
return 0;
}
1006 稿件整理【归并排序||线段树||树状数组】
#include<iostream>
#include<cstring>
#include<iomanip>
#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long int
#define INF 0x3f3f3f3f
const int maxn = 1e5 + 10;
int s[maxn], A[maxn];
int a[maxn];
int n, k;
ll sum;
void merge(int L, int R)
{
int mid = (L + R) / 2;
int i = 0, j = 0, k = 0;
for (i = L, j = mid; i < mid&&j < R;)
{
if (s[j] < s[i])
{
sum += mid - i;
A[k++] = s[j];
j++;
}
else
{
A[k++] = s[i];
i++;
}
}
while (i < mid)
{
A[k++] = s[i];
i++;
}
while (j < R)
{
A[k++] = s[j];
j++;
}
memcpy(s + L, A, sizeof(int) * k);
}
void merge_sort(int L, int R)
{
if (R - L < 2)
return;
int mid = (L + R) / 2;
merge_sort(L, mid);
merge_sort(mid, R);
merge(L, R);
}
int main()
{
while (~scanf("%d", &n))
{
sum = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i += 2)
{
if (a[i] % 2 == 0)
{
swap(a[i], a[i + 1]);
sum++;
}
s[i / 2] = a[i];
}
n /= 2;
merge_sort(0, n);
printf("%lld\n", sum);
}
return 0;
}
1007 找方块【暴力】
#include<iostream>
#include<cstring>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<functional>
using namespace std;
const int maxn = 1e2 + 10;
int mp[maxn][maxn];
struct node {
int r, d;
}dp[maxn][maxn];
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
scanf("%d", &mp[i][j]);
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
int k;
for (k = i + 1; k <= n; k++)
{
if ((mp[k][j] ^ mp[k - 1][j]) == 0)
break;
}
//cout << k << endl;
dp[i][j].r = k - 1;
for (k = j + 1; k <= n; k++)
{
if ((mp[i][k] ^ mp[i][k - 1]) == 0)
break;
}
//cout << k << endl;
dp[i][j].d = k - 1;
}
}
/*for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
printf("%d %d\n", dp[i][j].r, dp[i][j].d);
}
}*/
int ans = 0;
int dw = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
dw = n;
for (int k = i; k <= dp[i][j].r; k++)
{
dw = min(dw, dp[k][j].d);
ans = max(ans, (dw - j + 1)*(k - i + 1));
}
}
}
printf("%d\n", ans);
}
return 0;
}
1008 友好整数【状态压缩】
#include<iostream>
#include<cstring>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<functional>
using namespace std;
#define ll long long int
const int maxn = 1e3 + 50;
int n;
int a[maxn];
int t[10];
int f[30];
ll tmp;
void get_num()
{
memset(t, 0, sizeof t);
while (tmp != 0)
{
int nw = tmp % 10;
t[nw] = 1;
tmp /= 10;
}
int k = 0;
for (int i = 0; i < 10; i++)
{
k += f[i] * t[i];
}
a[k]++;
//cout << k << endl;
}
int main()
{
//cout << (2 & 4) << endl;
f[0] = 1;
for (int i = 1; i <= 11; i++)
{
f[i] = f[i - 1] * 2;
}
int n;
while (~scanf("%d", &n))
{
memset(a, 0, sizeof a);
for (int i = 0; i < n; i++)
{
scanf("%lld", &tmp);
get_num();
}
ll ans = 0;
for (int i = 0; i < 1024; i++)
{
for (int j = i; j < 1024; j++)
{
if (i == j)
{
/*if (a[i] == 1 || a[i] == 0)
continue;*/
ans += 1ll * a[i] * (a[i] - 1) / 2;
}
else
{
if (i&j)
{
ans += 1ll * a[i] * a[j];
}
}
}
}
printf("%lld\n", ans);
}
return 0;
}
1009 最大收益【贪心】
#include <iostream>
#include<algorithm>
#include<stdio.h>
#define ll long long int
using namespace std;
bool cmp(ll a,ll b)
{
return a>b;
}
ll a[100005],b[100005];
int main()
{
ll n,m;
while(cin>>n>>m)
{
for(ll i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
for(ll j=0;j<m;j++)
{
scanf("%lld",&b[j]);
}
sort(a,a+n,cmp);
sort(b,b+m,cmp);
ll t;
if(n>m)
t=m;
else
t=n;
ll sum=0;
for(ll i=0;i<t;i++)
{
sum=a[i]*b[i]+sum;
}
cout<<t<<" "<<sum<<endl;
}
return 0;
}
不争气的胖头鱼…代码还是打得太少太简单了!