终于爆0了!!!!!!!!!!!!
上午
《实战训练2》
第一题:栈的应用
第二题:没有使用数学算法,主要是不想要动笔算,优化了暴力,没想到**才50,虽然不优化只有30。(还要开ll)
暴力优化(50pts)
TLE应该是while循环的问题
#include
using namespace std;
long long n,a,cnt=0,ind=0,ind2=1,arr[200001][5],b[200000],vis[200000];
char s[200001];
int main()
{
freopen(move.in,r,stdin);
freopen(move.out,w,stdout);
cin >> n >> a;
s[0]='X',s[n+1]='X';
ind2++;
for(int i=1;i>s[i];
if(s[i] =='#')
{
b[ind2++]=i;
arr[ind][2]=i;
arr[i][1]=ind;
ind=i;
cnt++;
}
}
arr[ind][2]=n+1;
arr[n+1][1]=ind;
for(int i=1;i<ind2-1;i++)
{
for(int j=b[i]+1;j<b[i+1];j++)
{
arr[j][1]=b[i];
arr[j][2]=b[i+1];
}
}
arr[0][1]=-1,arr[n+1][2]=-1;
long long fx=1,now=a,t=0;
while(cnt != 0)
{
if(fx == 1)
{
int tmp=arr[now][2];
//here
while(vis[tmp]) tmp=arr[tmp][2];
t+=tmp-now;
now=tmp;
if(s[now] == '#')
{
cnt--;
vis[now]=1;
}
fx=-fx;
}
else
{
int tmp=arr[now][1];
//here
while(vis[tmp]) tmp=arr[tmp][1];
t+=now-tmp;
now=tmp;
if(s[now] == '#')
{
cnt--;
vis[now]=1;
}
fx=-fx;
}
}
cout << t;
return 0;
}
std
#include
using namespace std;
int main(){
freopen(move.in,r,stdin);
freopen(move.out,w,stdout);
int N, A;
string S;
cin >> N >> A >> S;
int l = A-1, r = A-1, n = A-1, d = 1, cnt = 0;
for(int i=0; i 0){
if(d == 1){
ans++, n++;
if(n < N) r = n;
if(n == N || S[n] == '#'){
if(n 0) ans += n - l, n = l; // skip
}
}
else{
ans++, n--;
if(n >= 0) l = n;
if(n == -1 || S[n] == '#'){
if(n >= 0) cnt--;
d = 1;
if(cnt > 0) ans += r - n, n = r; // skip
}
}
}
cout << ans << endl;
fclose(stdin);
fclose(stdout);
return 0;
}
第三题:很毒瘤的数据,爆0了,还有奇怪的三进制数和奇怪的图论?
第四题:
cout << 1;
orcout << 3;
### 可以得到30分 *,但是我的h=1也错了,所以没什么可说的。
中午
被学府的两个教练制裁了()()
下午
STL
算法
- upper_bound() lower_bound()
- ……
容器
- vector
- list
- stack
- queue
- deque
- priority_queue
- set
- multiset
- map
- multimap
迭代器
- iterator
- reiterator