时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
有n个地方,编号为1->n,任意两个地方有公交车,从i到j的票价为(i+j)mod(n+1),而且这个票可以用无限次,你要把这些地方全部走一遍,问最小花费为多少。可以在任意地方开始和结束。
输入描述:
第一行一个数n
输出描述:
输出一行一个数表示答案
示例1
输入
10
输出
4
说明
1 -> 10 -> 2 -> 9 -> 3 -> 8 -> 4 -> 7 -> 5 -> 6,代价是4
备注:
对于100%的数据,有1 <= n <= 100000
#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;while(cin>>n){cout<<(n-1)/2<<endl;}return0;}时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld题目描述
给你一个1->n的排列和一个栈,入栈顺序给定你要在不打乱入栈顺序的情况下,对数组进行从大到小排序当无法完全排序时,请输出字典序最大的出栈序列输入描述:
第一行一个数n 第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格输出描述:
输出一行n个数表示答案,用空格隔开,结尾无空格示例1输入
5 2 1 5 3 4输出
5 4 3 1 2说明
2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈备注:
对于100%的数据,有1<=n<=1000000,保证给的是一个排列
#include<bits/stdc++.h>
int a[1000003],b[1000002];
using namespace std;
stack<int> P;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i]=a[i];
}
sort(b,b+n);int r=n-1;
for(int i=0;i<n;i++)
{
P.push(a[i]);
while(P.top()==b[r])
{
if(r==0) printf("%d\n",b[r]);
else printf("%d ",b[r--]);
P.pop();
}
}
while(!P.empty())
{
if(P.size()==1) printf("%d\n",P.top());
else printf("%d ",P.top());
P.pop();
}
}
return 0;
}
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld题目描述
给定长度为n的只有小写字母的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2,输出操作完的字符串输入描述:
第一行两个数n,m 第二行一个字符串s 之后m行,每行两个数l r两个字符c1 c2输出描述:
输出一行一个字符串示例1输入
5 3 wxhak 3 3 h x 1 5 x a 1 3 w g输出
gaaak说明
第一次修改后为wxxak 第二次修改后为waaak 第三次修改后为gaaak备注:
对于100%的数据,有1<=n , m<=100
#include<bits/stdc++.h>inta[1000003],b[1000002];usingnamespacestd;stack<int> P;intmain(){intn,m;chart[102];while(scanf("%d%d",&n,&m)!=EOF){scanf("%s",&t);while(m--){inta,b;charx,y;cin>>a>>b>>x>>y;a--,b--;for(inti=a;i<=b;i++)if(t[i]==x) t[i]=y;}printf("%s\n",t);}return0;}
652

被折叠的 条评论
为什么被折叠?



