首页 > 其他分享 >AtCoder Beginner Contest 304

AtCoder Beginner Contest 304

时间:2023-07-05 22:57:59浏览次数:48  
标签:AtCoder const Beginner int double 304 cin include define

A:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<string>
 6 #include<vector>
 7 #include<stack>
 8 #include<bitset>
 9 #include<cstdlib>
10 #include<cmath>
11 #include<set>
12 #include<list>
13 #include<deque>
14 #include<map>
15 #include<queue>
16 #include <iomanip>
17 #include<ctime>
18 using namespace std;
19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95
21 #define int long long 
22 #define double long double
23 #define endl '\n'
24 #define inf LLONG_MAX
25 #define iinf INT_MAX
26 typedef pair<int,int> PII;
27 const double PI = acos(-1.0);
28 const double eps = 1e-6;
29 const int INF = 0x3f3f3f3f;
30 const int N = 1e2+10;
31 struct node
32 {
33     string id;
34     int age;
35 }p[N];
36 int n;
37 signed main()
38 {
39     IOS;
40     cin>>n;
41     int idx=inf;
42     int sx=0;
43     for(int i=1;i<=n;i++)
44     {
45         cin>>p[i].id>>p[i].age;
46         if(p[i].age<idx)
47         {
48             sx=i;
49             idx=p[i].age;
50         }
51     }
52     for(int i=sx;i<=n;i++)
53     {
54         cout<<p[i].id<<endl;
55     }
56     for(int i=1;i<sx;i++)
57     {
58         cout<<p[i].id<<endl;
59     }
60     return 0;
61 }

B:

数字的后几位截取不如直接处理字符串

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<string>
 6 #include<vector>
 7 #include<stack>
 8 #include<bitset>
 9 #include<cstdlib>
10 #include<cmath>
11 #include<set>
12 #include<list>
13 #include<deque>
14 #include<map>
15 #include<queue>
16 #include <iomanip>
17 #include<ctime>
18 using namespace std;
19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95
21 #define int long long 
22 #define double long double
23 #define endl '\n'
24 #define inf LLONG_MAX
25 #define iinf INT_MAX
26 typedef pair<int,int> PII;
27 const double PI = acos(-1.0);
28 const double eps = 1e-6;
29 const int INF = 0x3f3f3f3f;
30 const int N = 1e9;
31 int n;
32 void solved(int x)
33 {
34     string s=to_string(x);
35     if(x<=1e3-1)
36     {
37         cout<<x<<endl;
38     }
39     else if(x>=1e3&&x<=1e4-1)
40     {
41         for(int i=0;i<s.length()-1;i++)
42         {
43             cout<<s[i];
44         }
45         cout<<"0"<<endl;
46     }
47     else if(x>=1e4&&x<1e5)
48     {
49         for(int i=0;i<s.length()-2;i++)
50         {
51             cout<<s[i];
52         }
53         cout<<"00"<<endl;
54     }
55     else if(x>=1e5&&x<1e6)
56     {
57         for(int i=0;i<s.length()-3;i++)
58         {
59             cout<<s[i];
60         }
61         cout<<"000"<<endl;
62     }
63     else if(x>=1e6&&x<1e7)
64     {
65         for(int i=0;i<s.length()-4;i++)
66         {
67             cout<<s[i];
68         }
69         cout<<"0000"<<endl;
70     }
71     else if(x>=1e7&&x<1e8)
72     {
73         for(int i=0;i<s.length()-5;i++)
74         {
75             cout<<s[i];
76         }
77         cout<<"00000"<<endl;
78     }
79     else if(x>=1e8&&x<1e9)
80     {
81         for(int i=0;i<s.length()-6;i++)
82         {
83             cout<<s[i];
84         }
85         cout<<"000000"<<endl;
86     }
87 }
88 signed main()
89 {
90     IOS;
91     cin>>n;
92     solved(n);
93     return 0;
94 }

C:

  1 #include<cstdio>
  2 #include<cstring>
  3 #include<algorithm>
  4 #include<iostream>
  5 #include<string>
  6 #include<vector>
  7 #include<stack>
  8 #include<bitset>
  9 #include<cstdlib>
 10 #include<cmath>
 11 #include<set>
 12 #include<list>
 13 #include<deque>
 14 #include<map>
 15 #include<queue>
 16 #include <iomanip>
 17 #include<ctime>
 18 using namespace std;
 19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95
 21 #define int long long 
 22 #define double long double
 23 #define x first
 24 #define y second
 25 #define endl '\n'
 26 #define inf LLONG_MAX
 27 #define iinf INT_MAX
 28 typedef pair<int,int> PII;
 29 const double PI = acos(-1.0);
 30 const double eps = 1e-6;
 31 const int INF = 0x3f3f3f3f;
 32 const int N = 2e3+10;
 33 int n,d;
 34 PII a[N];
 35 bool vis[N][N];
 36 bool flag[N];
 37 // void bfs(int tx,int ty,int id)
 38 // {
 39     // vis[id]=true;
 40     // queue<PII>q;
 41     // q.push({tx,ty});
 42     // while(!q.empty())
 43     // {
 44         // int px=q.front().x;
 45         // int py=q.front().y;
 46         // q.pop();
 47         // for(int i=id+1;i<=n;i++)
 48         // {
 49             // int nx=a[i].x;
 50             // int ny=a[i].y;
 51             // if(vis[i])    continue;
 52             // if(((px-nx))*(px-nx)+(py-ny)*(py-ny)>d*d)    continue;
 53             // id=i;
 54             // vis[i]=true;
 55             // q.push({nx,ny});
 56         // }
 57     // }
 58 // }
 59 void bfs(int tx,int ty,int id)
 60 {
 61     flag[id]=true;
 62     queue<int>q;
 63     q.push(id);
 64     while(!q.empty())
 65     {
 66         int px=q.front();
 67         q.pop();
 68         for(int i=1;i<=n;i++)
 69         {
 70             if(!flag[i]&&vis[px][i])
 71             {
 72                 flag[i]=true;
 73                 q.push(i);
 74             }
 75         }
 76     }
 77 }
 78 signed main()
 79 {
 80     IOS;
 81     cin>>n>>d;
 82     for(int i=1;i<=n;i++)
 83     {
 84         cin>>a[i].x>>a[i].y;
 85     }
 86     int xx=a[1].x;
 87     int yy=a[1].y;
 88     for(int i=1;i<=n;i++)
 89     {
 90         for(int j=1;j<=n;j++)
 91         {
 92             if((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y)<=d*d)
 93             {
 94                 vis[i][j]=true;
 95             }
 96         }
 97     }
 98     bfs(xx,yy,1);
 99     for(int i=1;i<=n;i++)
100     {
101         if(!flag[i])
102         {
103             cout<<"No"<<endl;
104         }
105         else
106         {
107             cout<<"Yes"<<endl;
108         }
109     }
110     return 0;
111 }

D:

// 已知蛋糕总尺寸,w*h,切块时:w边以a[1]、a[2]、、、、a[A]切;h边以b[1]、、、、b[B]切

// 求哪一块蛋糕草莓最多、最少草莓数;

 

 

// 根据每个草莓出现的位置找到符合该草莓的区域块边界,

// 使用lower_bound()找到最右边界,因为lower_bound()是不小于目标值的第一个数,使用map记录出现的边界坐标,

// 即mx=次数最多的,mn判断是否为0则看map中长度是否为(a+1)*(B+1),若是,则不存在草莓数为0的块出现。以最右边界为该块标志。

 

 1 // 已知蛋糕总尺寸,w*h,切块时:w边以a[1]、a[2]、、、、a[A]切;h边以b[1]、、、、b[B]切
 2 // 求哪一块蛋糕草莓最多、最少草莓数;
 3 // 根据每个草莓出现的位置找到符合该草莓的区域块边界,
 4 // 使用lower_bound()找到最右边界,因为lower_bound()是不小于目标值的第一个数,使用map记录出现的边界坐标,
 5 // 即mx=次数最多的,mn判断是否为0则看map中长度是否为(a+1)*(B+1),若是,则不存在草莓数为0的块出现。以最右边界为该块标志。
 6 #include<cstdio>
 7 #include<cstring>
 8 #include<algorithm>
 9 #include<iostream>
10 #include<string>
11 #include<vector>
12 #include<stack>
13 #include<bitset>
14 #include<cstdlib>
15 #include<cmath>
16 #include<set>
17 #include<list>
18 #include<deque>
19 #include<map>
20 #include<queue>
21 #include <iomanip>
22 #include<ctime>
23 using namespace std;
24 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
25 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95
26 #define int long long 
27 #define double long double
28 #define endl '\n'
29 #define x first
30 #define y second
31 #define inf LLONG_MAX
32 #define iinf INT_MAX
33 typedef pair<int,int> PII;
34 const double PI = acos(-1.0);
35 const double eps = 1e-6;
36 const int INF = 0x3f3f3f3f;
37 const int N = 2e5+10;
38 int h,w;
39 int n;
40 int maxx=-1;
41 int minn=inf;
42 PII q[N];
43 int a[N];
44 int b[N];
45 map<PII,int>mp;
46 signed main()
47 {
48     IOS;
49     cin>>h>>w;
50     cin>>n;
51     for(int i=1;i<=n;i++)
52     {
53         cin>>q[i].x>>q[i].y;
54     }
55     int A;
56     cin>>A;
57     for(int i=1;i<=A;i++)
58     {
59         cin>>a[i];
60     }
61     int B;
62     cin>>B;
63     for(int i=1;i<=B;i++)
64     {
65         cin>>b[i];
66     }
67     for(int i=1;i<=n;i++)
68     {
69         int px=lower_bound(a+1,a+1+A,q[i].x)-a;
70         int py=lower_bound(b+1,b+1+B,q[i].y)-b;
71         mp[{px,py}]++;
72     }
73     int cnt=0;
74     for(auto &it:mp)
75     {
76         maxx=max(maxx,it.y);
77         minn=min(minn,it.y);
78         cnt++;
79     }
80     if(cnt<(A+1)*(B+1))
81     {
82         minn=0;
83     }
84     cout<<minn<<" "<<maxx<<endl;
85     return 0;
86 }

 

E:

使用并查集维护更方便一些

 

  1 #include<cstdio>
  2 #include<cstring>
  3 #include<algorithm>
  4 #include<iostream>
  5 #include<string>
  6 #include<vector>
  7 #include<stack>
  8 #include<bitset>
  9 #include<cstdlib>
 10 #include<cmath>
 11 #include<set>
 12 #include<list>
 13 #include<deque>
 14 #include<map>
 15 #include<queue>
 16 #include <iomanip>
 17 #include<ctime>
 18 using namespace std;
 19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95
 21 #define int long long 
 22 #define double long double
 23 #define endl '\n'
 24 #define inf LLONG_MAX
 25 #define iinf INT_MAX
 26 typedef pair<int,int> PII;
 27 const double PI = acos(-1.0);
 28 const double eps = 1e-6;
 29 const int INF = 0x3f3f3f3f;
 30 const int N = 2e5+10;
 31 int n,m;
 32 vector<int>g[N];
 33 int a[N],b[N];
 34 int s[N];
 35 int height[N];
 36 set<PII>ss;//表示不能被相互到达的
 37 void init()//合并
 38 {
 39     for( int i=1;i<=N;i++)
 40     {
 41         s[i]=i;
 42         height[i]=0;
 43     }
 44 }
 45 int find_s(int x)//查找 -路压
 46 {
 47     if(x!=s[x])
 48     {
 49         s[x]=find_s(s[x]);
 50     }
 51     return s[x];
 52 }
 53 void union_s(int x,int y)//合并优化
 54 {
 55     x=find_s(x);
 56     y=find_s(y);
 57     if(height[x]==height[y])
 58     {
 59         height[x]=height[x]+1;
 60         s[y]=x;
 61     }
 62     if(height[x]<height[y])
 63     {
 64         s[x]=y;
 65     }
 66     else
 67     {
 68         s[y]=x;
 69     }
 70 }
 71 signed main()
 72 {
 73     IOS;
 74     init();
 75     bool flag=true;
 76     cin>>n>>m;
 77     for(int i=1;i<=m;i++)
 78     {
 79         int u,v;
 80         cin>>u>>v;
 81         g[u].push_back(v);
 82         g[v].push_back(u);
 83         union_s(u,v);
 84         union_s(v,u);
 85     }
 86     int k;
 87     cin>>k;
 88     for(int i=1;i<=k;i++)
 89     {
 90         cin>>a[i]>>b[i];
 91         int fx=find_s(a[i]);
 92         int fy=find_s(b[i]);
 93         ss.insert({fx,fy});
 94         ss.insert({fy,fx});
 95     }
 96     int q;
 97     cin>>q;
 98     while(q--)
 99     {
100         int u,v;
101         cin>>u>>v;
102         int fx=find_s(u);
103         int fy=find_s(v);
104         if(ss.count({fx,fy}))
105         {
106             cout<<"No"<<endl;
107         }
108         else{
109             cout<<"Yes"<<endl;
110         }
111     }
112     return 0;
113 }

 

标签:AtCoder,const,Beginner,int,double,304,cin,include,define
From: https://www.cnblogs.com/LQS-blog/p/17530521.html

相关文章

  • AtCoder Beginner Contest 308 - E
    题目链接:abc308前四题简单就不放了E-MEX阿巴阿巴,比赛的时候想复杂了,一直在想怎么快速的统计27种mex的情况,啊,前面对后面的影响等等等,反正就是想复杂了现在再想想,看了官方题解,从'E'出发,统计其前后各3种数字的个数,再用mex函数判答案,\(O(n)\)即可!剩下的见代码吧,做完之后发现,没......
  • Atcoder Beginer Contest 306 D ~ E
    vp中途突然拉肚子>_<D-PoisonousFull-CourseD-PoisonousFull-Course(atcoder.jp)题意一个人初始是健康的,现在有n道菜摆在他面前,每道菜都有自已的美味值,但是有些菜是有毒的,有些菜是无毒的。如果他在健康状态吃了有毒的菜就会变成中毒状态,如果他在中毒状态吃了无毒的菜就......
  • AtCoder Regular Contest 163
    Preface补题,这场比赛的时候被拉去开科研组会了,所以就没现场打了这两天军训在伤病连划水,白天可以好好想题目舒服的一批这场D题确实很妙,需要一些竞赛图相关的知识才能想到转化,不过也算是学到一个重要trick了吧A-DivideString显然只要考虑能否分成两个串即可,首先如果存在\(i......
  • AtCoder Regular Contest 163 D Sum of SCC
    洛谷传送门AtCoder传送门怎么连这种相对传统的计数也不会……考虑换种方式描述强连通分量个数。考虑竞赛图缩点后存在一条极长的链,因此转化为把缩完点后的链劈成左右两个集合,使得左边集合不为空的方案数。于是我们现在只要统计点集\(A,B\)数量,满足\(A\ne\varnothing,A......
  • AtCoder Regular Contest 153 E Deque Minimization
    洛谷传送门AtCoder传送门我们考虑给定\(X\),如何贪心地求\(f(X)\)。队列为空时加入队首或队尾都是一样的。队列不为空,设队首为\(c\)。因为我们的目标是最小化字典序,于是如果\(X_i\lec\),我们把\(X_i\)加入队首,否则加入队尾。由此也容易发现,加入队首的数一定单调不升。......
  • AtCoder Beginner Contest 308 G Minimum Xor Pair Query
    洛谷传送门AtCoder传送门考虑没有删除操作怎么做。可以动态维护\(ans\),新加进来一个\(x\),我们计算\(\min\limits_{y\inS}x\oplusy\)。对\(S\)建01Trie,然后从高位往低位按位贪心,在01Trie上优先往与\(x\)这一位相同的方向走,但是前提是它的子树内有数,对于01Trie......
  • AtCoder ABC307D 题解
    AtCoderABC307DMismatchedParentheses题解思路分析First——配对括号序列首先,每个右括号肯定是要与其左边最近的左括号配对。因此,我们便可以使用一个栈来进行存放左括号的下标。当有右括号时,便可以弹出栈顶元素,但是栈为空时,便无法配对。拿样例1举个例子:8a(b(d))c......
  • AtCoder Beginner Contest 308 A~F
    AtCoderBeginnerContest308手速有点慢A-NewScheme判断给定数字是否满足条件voidsolve(){ boolok=true; inta[10]; for(inti=1;i<=8;i++) cin>>a[i]; for(inti=1;i<=8;i++) { if(i>=2&&a[i]<a[i-1]) ok=......
  • AtCoder Beginner Contest 308
    A:1#include<cstdio>2#include<cstring>3#include<algorithm>4#include<iostream>5#include<string>6#include<vector>7#include<stack>8#include<bitset>9#include<cstdlib>10#include......
  • 【atcoder beginner 308E - MEX】
    前缀和二分查找打表枚举代码如下importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.StreamTokenizer;importjava.util.ArrayList;importjava.util.List;publicclassMain{publicstaticIntege......