zoukankan      html  css  js  c++  java
  • 8.3-个人训练赛第八场

    D题:Around Square

    水题

     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4 typedef long long ll;
     5  
     6 int main()
     7 {
     8     ll n;
     9     cin>>n;
    10     for(int i=1;i<=n;i++)
    11     {
    12         if(i*i<=n&&(i+1)*(i+1)>n){
    13             cout<<i*i<<endl;
    14             break;
    15         }
    16     }
    17     return 0;
    18 }
    View Code

    H题:Rotation II

    水题

     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4 typedef long long ll;
     5 string s,t,s1,t1;
     6 int main()
     7 {
     8     cin>>s>>t;
     9     int len1=s.size();
    10     int len2=t.size();
    11     int flag=0;
    12     for(int i=0;i<len1;i++)
    13     {
    14         if(t[len1-i-1]!=s[i])
    15         {
    16             flag=1;
    17             break;
    18         }
    19     }
    20     if(flag)
    21         cout<<"NO"<<endl;
    22     else    cout<<"YES"<<endl;
    23  
    24  
    25     return 0;
    26 }
    View Code

    J题:Snuke Festival

    题目的意思是让你在a,b,c三个数组里找三个数使得a[i]<b[i]<c[i],问你能找到多少个这样的序列

    我们可以把这三个数组合并在一个数组,定义一个结构体,结构体里用一个变量来标志是哪一个数组里的元素,这里我们用1,2,3分别代表a,b,c里的元素,然后按照数值从小到大排列,如果数值相等就按照标志从大到小排列,最后遍历一遍就可以了。

     1 #include<bits/stdc++.h>
     2  
     3 using namespace std;
     4 typedef long long ll;
     5 struct node
     6 {
     7     int f,val;
     8 }mp[500000];
     9 //int mp[1000005],a[100005],b[100005],c[100005];
    10 bool cmp(node a,node b)
    11 {
    12     if(a.val==b.val)    return a.f>b.f;
    13     return a.val<b.val;
    14 }
    15 int n;
    16 int main()
    17 {
    18 //    freopen("in.txt","r",stdin);
    19     scanf("%d",&n);
    20     int x;
    21     for(int i=0;i<n;i++){
    22         scanf("%d",&x);
    23         mp[i].val=x;
    24         mp[i].f=1;
    25     }
    26     for(int i=0;i<n;i++){
    27         scanf("%d",&x);
    28         mp[i+n].val=x;
    29         mp[i+n].f=2;
    30     }
    31     for(int i=0;i<n;i++){
    32         scanf("%d",&x);
    33         mp[i+2*n].val=x;
    34         mp[i+2*n].f=3;
    35     }
    36     sort(mp,mp+3*n,cmp);
    37     ll ans=0,p=0,q=0,qq=0;
    38     int tmp1,tmp2;
    39     for(int i=0;i<3*n;i++)
    40     {
    41         if(mp[i].f==1)
    42         {
    43             p++;
    44         }
    45         else if(mp[i].f==2)
    46         {
    47  
    48                 q=p;
    49                 qq+=q;
    50         }
    51         else
    52         {
    53  
    54             ans+=qq;
    55         }
    56     }
    57     printf("%lld
    ",ans);
    58     return 0;
    59 }
    View Code
    如有错误,请指正,感谢!
  • 相关阅读:
    滑动切换界面---多个Activity
    172. Factorial Trailing Zeroes
    152. Maximum Product Subarray
    149. Max Points on a Line
    [转载][c++]用宏(Macro)定义一个函数
    [转载][C++]C++11 左值、右值、右值引用详解
    [转载][c++]C++中指针常量和常量指针的区别
    [转载][C++]类构造函数初始化列表
    22. Generate Parentheses
    328. Odd Even Linked List
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9417468.html
Copyright © 2011-2022 走看看