2018 ICPC Asia Jakarta Regional Contest
Posted mountaink
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018 ICPC Asia Jakarta Regional Contest相关的知识,希望对你有一定的参考价值。
题号 | A | B | C | D | E | F | G | H | I | J | K | L |
状态 | Ο | . | . | Ο | . | . | . | . | Ο | . | . | Ο |
Ο:当场
Ø:已补
. : 待补
A. Edit Distance
Thinking:kk pai爷
Code:kk
不能直接反转,比如"010101",直接反转后就变成"101010",右移一位,然后加个0就可以了。
所以要先统计01的数量,如果0大于1,就全变成1,1大于0,就全变成0(从数量上的改变就大于s/2了),相等的话,就看首位是0还是1,取相反,后面和首位不一样就行(位置)。
#include<bits/stdc++.h> #include<tr1/unordered_map> #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) #define fpn() freopen("simple.in","r",stdin) #define rd read() using namespace std; const int maxn=2010; typedef long long ll; int a,b; char s[maxn]; int main(){ cin>>s+1; int n=strlen(s+1); for(int i=1;i<=n;i++) { if(s[i]==‘0‘)a++; else b++; } if(a>b){ for(int i=1;i<=n;i++) { printf("1"); } puts(""); }else if(a<b){ for(int i=1;i<=n;i++) { printf("0"); } puts(""); }else{ if(s[1]==‘1‘){ printf("0"); for(int i=2;i<=n;i++) { printf("1"); } puts(""); }else{ printf("1"); for(int i=2;i<=n;i++) { printf("0"); } puts(""); } } }
D. Icy Land
Thinking:kk
Code:pai爷
首先我们考虑大一点的矩阵,对于$n*m$来说,中心的$(n-2)*(m-2)$的矩阵中,只要有冰地,这个冰地就必然到达不了,因为会直接划过去,所以我们要把中间这个矩阵直接变成"#",然后我们要确保外围的过道上有一个#能让我们进入中心区域。
然后特殊考虑$2*n$的矩阵,还是中心的两行,只要上下有一个就可以了。
#include<bits/stdc++.h> #include<tr1/unordered_map> #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) #define fpn() freopen("simple.in","r",stdin) #define rd read() using namespace std; const int maxn=2010; typedef long long ll; int n,m,ans=0,flag; char s[510][510]; void do1() { for(int i=2;i<=m-1;i++) if(s[1][i]==‘.‘) ans++; } void do2() { for(int i=2;i<=n-1;i++) if(s[i][1]==‘.‘) ans++; } void do3() { for(int i=2;i<=n-1;i++) if(s[i][1]!=‘#‘&&s[i][2]!=‘#‘) ans++; } void do4() { for(int i=2;i<=m-1;i++) if(s[1][i]!=‘#‘&&s[2][i]!=‘#‘) ans++; } void do5() { for(int i=2;i<=n-1;i++) for(int j=2;j<=m-1;j++) if(s[i][j]==‘.‘) ans++; flag=1; for(int i=2;i<=m-1;i++) if(s[1][i]==‘#‘||s[n][i]==‘#‘) flag=0; for(int i=2;i<=n-1;i++) if(s[i][1]==‘#‘||s[i][m]==‘#‘) flag=0; ans+=flag; } void work() { if(n==1) do1(); else if(m==1) do2(); else if(m==2) do3(); else if(n==2) do4(); else do5(); } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%s",s[i]+1); work(); printf("%d ",ans); }
F. Popping Balloons
待补。 z
G. Go Make It Complete
待补。k
H. Lexical Sign Sequence
训练的时候想的似乎是正解?不过电脑在刚J题,没时间写
待补.z
I. Lie Detector
Thinking
Code:pai爷
签到。
#include<iostream> #include<cstring> #include<cmath> #include<cstdlib> #include<cstdio> #include<algorithm> #include<string> #include<map> #include<queue> #include<vector> #include<stack> #define ll long long #define maxn 4001000 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; int n,p; char s[100100][10]; ll read() { ll x=0,f=1;char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} return x*f; } void init() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%s",s[i]); } void work() { if(s[1][0]==‘L‘) p=0; else p=1; for(int i=2;i<=n;i++) if(s[i][0]==‘L‘) p=!p; if(p==0) printf("LIE "); else printf("TRUTH "); } int main() { init(); work(); }
J. Future Generation
待补 p z
K. Boomerangs
待补 k
L:
#include<bits/stdc++.h> #include<tr1/unordered_map> #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) #define fpn() freopen("simple.in","r",stdin) #define rd read() using namespace std; const int maxn=2010; typedef long long ll; char c[66]; long long k,len; int v[66]; inline long long f(void) { long long i,s = 0; for(i = 0;i < len;i++) { if(!v[i]) { s *= 2; if(c[i] == ‘1‘) { s += 1; } } } return s; } int main(){ long long i; int ans; while(~scanf("%lld",&k)) { scanf("%s",c); len = strlen(c); memset(v,0,sizeof(v)); ans = 0; while(1) { if(f() <= k) { break; } bool flag = true; for(i = 1;i < len;i++) { if(c[i] == ‘1‘ && v[i] == 0) { v[i] = 1; flag = false; break; } } if(flag) { for(i = 1;i < len;i++) { if(c[i] == ‘0‘ && v[i] == 0) { v[i] = 1; break; } } } ans++; } printf("%d ",ans); } }
总结:
kk:今天比赛中途吃了个外卖(下课食堂人太多了吧)。所以中间稍微耽搁了一下下,A题一眼想到假算法,发现wa了那么多,所以等了等,果然hack了假算法,和pai爷讨论后ac,吃外卖的时候看了d题,回来稍微画了画想到正解,pai爷写的代码。后面的题目和zz、pai爷分别讨论了两道题,一道题感觉时间复杂度不对,没写完就让电脑了,一道题和zz讨论的似乎是正解,时间不够了没写。今天主要是被代码实现能力卡住了,还有没有提早提醒队友卡题的时候看新题,本来H题应该是能做的。
以上是关于2018 ICPC Asia Jakarta Regional Contest的主要内容,如果未能解决你的问题,请参考以下文章
2019-2020 ICPC, Asia Jakarta Regional Contest
2019-2020 ICPC, Asia Jakarta Regional Contest C. Even Path
2019-2020 ICPC, Asia Jakarta Regional Contest H. Twin Buildings
2019-2020 ICPC, Asia Jakarta Regional Contest.E. Songwriter
2019-2020 ICPC, Asia Jakarta Regional Contest K题 Addition Robot线段树维护矩阵积