1 排序字符串,按 字符与 'U'的距离
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 10005;
char s[N];
struct PP
{
int p;
int v;
int flag;
}a[N];
bool cmp(PP x,PP y) {
if(x.v == y.v) {
return x.p < y.p;
}
else{
return x.v < y.v;
}
}
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%s",s) != EOF) {
int l = strlen(s);
int i;
for(i = 0;i < l;i++) {
a[i].p = i;
if(s[i] < 'U') {
a[i].v = 'U' - s[i];
a[i].flag = -1;
}
else{
a[i].v = s[i] - 'U';
a[i].flag = 1;
}
}
sort(a,a + l,cmp);
for(i = 0;i < l;i++) {
if(a[i].flag == -1) {
printf("%c",'U' - a[i].v);
}
else{
printf("%c",'U' + a[i].v);
}
}
printf("\n");
}
return 0;
}
2 求某个时间的下一秒
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 10005;
struct date
{
int year;
int month;
int day;
int hour;
int mi;
int sec;
}now,nt;
int m[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int isrun(int y)
{
if(y % 400 == 0) return 1;
if(y % 100 == 0) return 0;
if(y % 4 == 0) return 1;
return 0;
}
void fun()
{
int flag = isrun(nt.year);
if(flag == 1) {
m[2] = 29;
}
else{
m[2] = 28;
}
if(nt.day > m[ nt.month ]) {
nt.day = 1;
nt.month++;
if(nt.month == 13) {
nt.month = 1;
nt.year++;
}
}
}
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%d/%d/%d %d:%d:%d",&now.year,&now.month,&now.day,&now.hour,&now.mi,&now.sec) != EOF) {
nt = now;
nt.sec ++;
if(nt.sec == 60) {
nt.sec = 0;
nt.mi++;
if(nt.mi == 60) {
nt.mi = 0;
nt.hour++;
if(nt.hour == 24) {
nt.hour = 0;
nt.day++;
fun();
}
}
}
printf("%04d/%02d/%02d %02d:%02d:%02d\n",nt.year,nt.month,nt.day,nt.hour,nt.mi,nt.sec);
}
return 0;
}
3 求一个数组的最大 和 次大值
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>
#include <cctype>
#include <vector>
#include <cmath>
#include <map>
#include <queue>
#define ll long long
#define eps 1e-8
#define N 1005
#define inf 0x7fffffff
using namespace std;
struct shangpin
{
char name[5];
int value;
int cou;
}S[5];
struct money
{
int v;
int cou;
}M[7];
int total;
void ini()
{
//S[1].name == "A1";
S[1].value = 2;S[1].cou = 5;
//S[2].name == "A2";
S[2].value = 3;S[2].cou = 10;
//S[3].name == "A3";
S[3].value = 4;S[3].cou = 14;
M[1].v = 1;M[1].cou = 5;
M[2].v = 2;M[2].cou = 5;
M[5].v = 5;M[5].cou = 3;
total = 0;
}
void out()
{
printf("A1 %d,A2 %d,A3 %d;",S[1].cou,S[2].cou,S[3].cou);
printf("1 %d,2 %d,5 %d\n",M[1].cou,M[2].cou,M[5].cou);
}
void change()
{
int c5,c2,c1;
c5 = total / 5;
if(M[5].cou >= c5) {
M[5].cou -= c5;
total -= c5 * 5;
}
else{
total -= M[5].cou * 5;
M[5].cou = 0;
}
c2 = total / 2;
if(M[2].cou >= c2) {
M[2].cou -= c2;
total -= c2 * 2;
}
else{
total -= M[2].cou * 2;
M[2].cou = 0;
}
M[1].cou -= total;
}
int main()
{
//freopen("in.txt","r",stdin);
ini();
//out();
char s[3];
int mm;
int nn;
//scanf("%d",&T);
//for(int ccnt=1;ccnt<=T;ccnt++){
while(scanf("%s",s) != EOF){
//printf("%s\n",s);
if(s[0] == 'p') {
scanf("%d,",&mm);
total += mm;
if(mm == 1) {
M[1].cou++;
}
else if(mm == 2){
M[2].cou++;
}
else{
M[5].cou++;
}
}
else{
getchar();
scanf("A%d,",&nn);
//printf(" nn = %d\n",nn);
//getchar();
if(nn == 1) {
S[1].cou--;
total -= S[1].value;
}
else if(nn == 2) {
S[2].cou--;
total -= S[2].value;
}
else{
S[3].cou--;
total -= S[3].value;
}
}
}
change();
out();
return 0;
}
某个bfs,已经记不得了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>
#include <cctype>
#include <vector>
#include <cmath>
#include <map>
#include <queue>
#define ll long long
#define eps 1e-8
#define N 100005
#define inf 0x7fffffff
using namespace std;
vector<int> a;
int ma1,ma2;
char s[N];
void ini()
{
a.clear();
ma1 = ma2 = 0;
}
bool cmp(int x,int y)
{
return x > y;
}
void solve()
{
sort(a.begin(),a.end(),cmp);
int sz = a.size();
if(sz >= 1) {
ma1 = a[0];
ma2 = a[0];
}
if(sz >= 2) {
ma2 = a[1];
}
printf("%d,%d\n",ma1,ma2);
}
int main()
{
//freopen("in.txt","r",stdin);
//scanf("%d",&T);
//for(int ccnt=1;ccnt<=T;ccnt++){
ini();
int x;
while(scanf("%d",&x) != EOF){
getchar();
a.push_back(x);
}
solve();
return 0;
}