【Codeforces】 Global Round 5

#include
using namespace std;
int main(){
     cout << ceil(-0.5);
}

https://codeforces.com/contest/1237/problem/A

这道题目的思路就是加一之后必须减一,以此类推直到最后,本来没什么问题,但是却在codeforce的评测机上wa了,提示的结果是输出不是0,而是 -0。事实上最上面的那个代码返回的结果就是-0。。。

强制类转换改成(long long)后,A了。。。。。。。。而且经过测试,只要强制转换为int就是可以的 

#include
using namespace std;
int main()
{
    int n,x;
    int flag1=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        if(x%2==0)
            cout<0){
                    if(flag1==1){
                        cout<<(long long )ceil(1.0*x/2)<

 

https://codeforces.com/contest/1237/problem/B

我的思路:把出站序列按照进站的顺序构建,举个例子

进:5 2 3 6 7 1 4

出:2 3 6 7 1 4 5

进战的次序序列自然是1(5) 2(2) 3(3) 4(6) 5(7) 6(1) 7(4)

那么根据进站序列构建的出站的序列为2 3 4 5 6 7 1

如果有超车现象:在这个序列里,一个数后面必然存在比自己小的数,一开始惯性暴力。。。其实只要在每次都算出最小值在比较就行了。

#include
using namespace std;
const int N=1e5+5;
unordered_map mp1,mp2;
struct Node
{
    int ans;
    int idx;
}n1[N],n2[N];
int main()
{
    mp1.clear();mp2.clear();
    int n,res;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){ scanf("%d",&res);n1[i].idx=i;mp1[res]=i; }
    for(int i=1;i<=n;i++){ scanf("%d",&res);n2[i].ans=res;n2[i].idx=mp1[res];}
    int f=0,min=0x3f3f3f3f;
    for(int i=n;i>=1;i--)
        if(n2[i].idx

 

你可能感兴趣的:(bug)