1/14 [编程题]扭蛋机
#include<bits/stdc++.h>
using namespace std;
#define line cout << "-----------" << endl;
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int N = 2020;
int n;
int a[maxn];
int main(){
scanf("%d", &n);
int cnt = 0;
while(n){
if(n%2 == 1){
a[cnt++] = 2;
n = (n-1) / 2;
}
else{
a[cnt++] = 3;
n = (n-2) / 2;
}
}
for(int i = cnt-1; i >= 0; i--){
printf("%d", a[i]);
}
return 0;
}
2/14[编程题]脸滚键盘
#include<bits/stdc++.h>
using namespace std;
#define line cout << "-----------" << endl;
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int N = 2020;
struct node{
char c;
int id;
int cnt;
};
bool cmp(node a, node b){
return a.id < b.id;
}
int main(){
int k;
while(scanf("%d", &k) != EOF){
getchar();
char s[maxn];
gets(s);
int len = strlen(s);
map<char, node> mp;
int id = 0;
for(int i = 0; i < len; i++){
if(mp[s[i]].cnt == 0) mp[s[i]].id = id++;
mp[s[i]].c = s[i];
mp[s[i]].cnt++;
}
map<char, node>::iterator it;
node p[maxn];
int cnt = 0;
for(it = mp.begin(); it != mp.end(); it++){
if(it->second.cnt == 1){
p[cnt].c = it->first;
p[cnt].cnt = 1;
p[cnt++].id = it->second.id;
}
//printf("%c %d %d\n", it->first, it->second.id, it->second.cnt);
}
sort(p, p+cnt, cmp);
if(cnt < k) printf("Myon~\n");
else printf("[%c]\n", p[k-1].c);
mp.clear();
}
return 0;
}
/*
2 misakamikotodaisuki
3 !bakabaka~ bakabaka~ 1~2~9!
3 3.1415926535897932384626433832795028841971693993751o582097494459211451488946419191919l91919hmmhmmahhhhhhhhhh
7 www.bilibili.com/av170001
1 111
*/
3/14 简单表达式计算
while(line = readline()){
if(line!="END"){
print(eval(line)); }
}
4/14 小A最多会新认识的多少人
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"-----------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
int pre[maxn];
int n, id, t;
int Find(int x){
if(x == pre[x]) return x;
else return pre[x] = Find(pre[x]);
}
int main(){
int num = 0;
scanf("%d%d%d", &n, &id, &t);
for(int i = 0; i <= n; i++)
pre[i] = i;
while(t--){
int u, v;
scanf("%d,%d", &u, &v);
if(u == id || v == id) num ++;
int fu = Find(u);
int fv = Find(v);
if(fu != fv){
pre[fu] = fv;
}
}
int fa = Find(id);
int ans = 0;
for(int i = 0; i < n; i++){
if(Find(i) == Find(fa)) ans++;
}
cout << ans-num-1 << endl;
return 0;
}
[编程题]山寨金闪闪
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"-----------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e7 + 10;
int n, m;
int a[MAXN];
int main(){
clr(a);
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
}
scanf("%d", &m);
int cnt = 0;
while(m--){
int l, r;
scanf("%d%d", &l, &r);
if(r-l+1 >= 47) cnt++;
else if(r-l+1 < 3) continue;
else{
vector<int>ve;
for(int i = l; i <= r; i++)
ve.push_back(a[i]);
sort(ve.begin(), ve.end());
for(int i = 0; i < ve.size()-2; i++){
if(ve[i] + ve[i+1] > ve[i+2]){
cnt++;
break;
}
}
}
}
printf("%d\n", cnt);
return 0;
}
[编程题]比较两个版本字符串version1和version2
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"-----------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e7 + 10;
char a[maxn], b[maxn];
int na[maxn], nb[maxn];
int main(){
scanf("%s %s", a, b);
int la = strlen(a);
int lb = strlen(b);
int x = 0, cnta = 0, cntb = 0;
for(int i = 0; i < la; i++){
if(a[i] =='.'){
na[cnta++] = x;
x = 0;
}
else {
x = x * 10 + (a[i] - '0');
}
}
na[cnta++] = x;
x = 0;
for(int i = 0; i < lb; i++){
if(b[i] =='.'){
nb[cntb++] = x;
x = 0;
}
else {
x = x * 10 + (b[i] - '0');
}
}
nb[cntb++] = x;
x = 0;
for(int i = 0; i < max(cnta, cntb); i++){
if(na[i] == nb[i]) continue;
else if(na[i] > nb[i]){
printf("1\n");
return 0;
}
else {
printf("-1\n");
return 0;
}
}
printf("0\n");
return 0;
}
[编程题]精灵鼠从入口到出口的最少减少速度
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"-----------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int N = 10000 + 10;
int mp[N][N], dp[N][N];
int n;
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i++){
for(int j = 1; j < n; j++){
scanf("%d,", &mp[i][j]);
dp[i][j] = mp[i][j];
}
scanf("%d", &mp[i][n]);
dp[i][n] = mp[i][n];
}
for(int i = 1; i <= n; i++){
dp[i][1] = dp[i-1][1] + mp[i][1];
dp[1][i] = dp[1][i-1] + mp[1][i];
}
for(int i = 2; i <= n; i++){
for(int j = 2; j <= n; j++){
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + mp[i][j];
}
}
/*
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
printf("%d ", dp[i][j]);
}
cout << endl;
}
*/
printf("%d\n", dp[n][n]);
return 0;
}
/*
3
5,5,7
6,7,8
2,2,4
*/