1001 Delete
我是直接统计一下,某个数出现了多少次。然后出现了多少个数。然后贪心。
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<stack>
#include<iostream>
#include<list>
#include<set>
#include<bitset>
#include<vector>
#include<valarray>
#include<cmath>
#define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define PI 3.141592654
#define CLR(a,b) memset(a,b,sizeof(a))
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define REP(i,a,b) for(int i=a;i>=b;i--)
#define sf scanf
#define pf printf
#define all(v) (v).begin(),(v).end()
#define acfun std::ios::sync_with_stdio(false)
#define SIZE (100 +2)
#define MOD 1000000007
using namespace std;
int main()
{
int n;
int a[SIZE];
while(~sf("%d",&n))
{
CLR(a,0);
int s=0;
int ss=0;
FOR(i,0,n)
{
int tmp;
sf("%d",&tmp);
a[tmp]++;
if(a[tmp]>1)s++;
}
FOR(i,0,SIZE)
if(a[i]>0)ss++;
int k;
sf("%d",&k);
if(k<=s)
pf("%d\n",ss);
else
pf("%d\n",ss-(k-s));
}
}
1002 Mutiple
我是直接暴力查询右边。开始不知道j是下标,还用二分查的……Orz
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<stack>
#include<iostream>
#include<list>
#include<set>
#include<bitset>
#include<vector>
#include<valarray>
#include<cmath>
#define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define PI 3.141592654
#define CLR(a,b) memset(a,b,sizeof(a))
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define REP(i,a,b) for(int i=a;i>=b;i--)
#define sf scanf
#define pf printf
#define all(v) (v).begin(),(v).end()
#define acfun std::ios::sync_with_stdio(false)
#define SIZE (10000 +2)
#define MOD 1000000007
using namespace std;
int main()
{
int n,a[SIZE];
while(~sf("%d",&n))
{
FOR(i,0,n)
sf("%d",&a[i]);
int ans=0;
FOR(i,0,n)
{
FOR(j,i+1,n)
{
if(a[j]%a[i]==0)
{
ans+=(j+1);
break;
}
}
}
pf("%d\n",ans);
}
}
1003 Code
据说要用到一些莫比乌斯反演、线性筛的知识。不会做。
官方题解:
1004 Lucky
莫队算法的东西,还是不会。
官方的: