P5020 [NOIP2018 提高组] 货币系统
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int mon[25001]={};
int coins[101]={};
int T,n,ans=0;
int main()
{
scanf("%d ",&T);
while (T--)
{
ans=0;
memset(mon,0,sizeof(mon));
memset(coins,0,sizeof(coins));
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&coins[i]);
mon[coins[i]]=2;
}
sort(coins+1,coins+1+n);
for (int i=1;i<=coins[n];i++)
{
if (mon[i]>0)
{
for (int j=1;j<=n;j++)
if (i+coins[j]<=coins[n])
mon[i+coins[j]]=1;
else break;
}
}
for (int i=1;i<=coins[n];i++)
if (mon[i]==2) ans++;
printf("%d\n",ans);
}
}
USACO : Uddered but not Herd
#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
map<char, int> m;
int main() {
char ch;
for (int i = 1; i <= 26; i ++) {
cin >> ch;
m[ch] = i;
}
int pos = 27, cnt = 0;
while (cin >> ch) {
if (m[ch] <= pos) {
cnt ++;
}
pos = m[ch];
}
cout << cnt;
return 0;
}