A - Six Characters
题意:给定字符串(长度1-3),将其重复输出直到输出6个字符,求输出。
思路: 使其开始为字符串的长度,每次循环自身长度相加,总长度小于 6 即可
AC代码:
#include<iostream>
#include<cstring>
using namespace std;
typedef long long LL;
const int N = 105, INF = 0x3f3f3f3f;
string s;
int main()
{
cin >> s;
int n = s.size();
for(int i = n; i <= 6; i += n)
{
cout << s;
}
return 0;
}
B - At Most 3 (Judge ver.)
题意:问给出的一组数中,少于等于3个数字的和,其中小于W的数有多少个。
思路: 因为N最多只有300,所以暴力枚举即可,注意有重复的,我们用set去重。
AC代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n, w, ans;
int a[305];
set<int>s;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> w;
for(int i = 1; i <= n; i ++) cin>>a[i];
for(int i = 1; i <= n; i ++)
{
int t = a[i];
if(t <= w)
if(!s.count(t))
{
ans ++;
s.insert(t);
}
}
for(int i = 1; i <= n; i ++)
for(int j= i + 1; j <= n; j ++)
{
int t = a[i] + a[j];
if(t <= w)
if(!s.count(t))
{
ans ++;
s.insert(t);
}
}
for(int i = 1; i <= n;i ++)
for(int j = i + 1; j <= n; j ++)
for(int k = j + 1; k <= n; k ++)
{
int t = a[i] + a[j] + a[k];
if(t <= w)
if(!s.count(t))
{
ans ++;
s.insert(t);
}
}
cout << ans;
return 0;
}
C - Poem Online Judge
题意:Poem Online Judge(POJ)是一个在线评测系统,会给提交的字符串打分。共有N次提交到POJ。在第i次最早的提交中,提了字符串Si,并给出了一个得分Ti。(同一个字符串可能被提交多次。)请注意,POJ不一定会给相同字符串的提交相同的得分。如果一个提交是原始提交,意味着该提交中的字符串在任何之前的提交中都没有出现过。如果一个提交是最佳提交,意味着它是原始提交中得分最高的一个。如果有多个这样的提交,只选择最早的一个作为最佳提交。请找到最佳提交的索引。
思路: 找出第一次出现时有最大分数的字符串。 还是用set去重,维护最大值对应的下标即可。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n, t[100001];
string s;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
set<string> se;
int ans = 0, mx = -2147483648;
for (int i = 1; i <= n; i ++)
{
int x;
cin >> s >> x;
if (se.count(s)) continue;
se.insert(s);
if (x>mx) mx = x, ans = i;
}
cout << ans << endl;
return 0;
}