Codeforces Round #817 (Div. 4)
Posted yeah17981
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #817 (Div. 4)相关的知识,希望对你有一定的参考价值。
发挥还行,约了三五好友一起打,不过有点晚,该睡了,睡前简单写一波题解,明天记得补题
Dashboard - Codeforces Round #817 (Div. 4) - Codeforces
完成:abcde
f纯暴力实在是不爱写(全队代码能力最差是真的石锤),g太困了懒得看,看起来是bitset,明天再看一下,现在该去睡觉了
A:给字符串问是否为Timur 的全排列,直接记录了下每个字母的出现次数,结束
B:给俩字符串,有B和G和R,求蓝绿色盲看俩串是否一样,R标0,BG标1,看串是否一样
C:给仨人,每人出n个长度为3的不相同的字符串,如果俩人有一样的串各加1分,仨人不加分,只有自己有加一分,求总分。字符串相当于三位26进制数,换算成10进制,直接排序,找相同值的个数
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
#include<bitset>
#include<limits.h>
using namespace std;
char s1[110],s2[110],s3[110];
struct XD
int num,id;
;
XD a[3100];
int ans[4];
bool cmp(XD a,XD b)
return a.num<b.num ;
int main()
int n,m;
cin>>n;
while(n--)
ans[1]=0,ans[2]=0,ans[3]=0;
cin>>m;
for(int i=1;i<=m;i++)
cin>>s1;
a[i].num=(s1[0]-'a')*26*26+(s1[1]-'a')*26+(s1[2]-'a')+1;
a[i].id=1;
for(int i=1;i<=m;i++)
cin>>s2;
a[i+m].num=(s2[0]-'a')*26*26+(s2[1]-'a')*26+(s2[2]-'a')+1;
a[i+m].id=2;
for(int i=1;i<=m;i++)
cin>>s3;
a[i+m*2].num=(s3[0]-'a')*26*26+(s3[1]-'a')*26+(s3[2]-'a')+1;
a[i+m*2].id=3;
sort(a+1,a+1+m*3,cmp);
a[m*3+1].num =0;
// for(int i=1;i<=m*3;i++)
//
// cout<<a[i].num<<" "<<a[i].id<<"\\n";
//
for(int i=1;i<=m*3;i++)
if(a[i].num==a[i-1].num)
if(a[i].num==a[i+1].num) i++;
else
ans[a[i].id]++;
ans[a[i-1].id]++;
else
if(a[i].num!=a[i+1].num)
ans[a[i].id]+=3;
cout<<ans[1]<<" "<<ans[2]<<" "<<ans[3]<<"\\n";
D:给个长度为n的字符串,L表示向左看,R表示向右看,最多修改1-n个字母,求能看到的字母个数。(发现写麻烦了)统计初始值和修改差值,sort修改差值,结束
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
#include<bitset>
#include<limits.h>
using namespace std;
char s1[200005];
int flag[200005];
int main()
int n,m;
cin>>n;
while(n--)
cin>>m;
cin>>s1;
long long ans=0;
for(int i=0;i<m;i++)
if(s1[i]=='L')
ans+=i;
if(i<m-i-1)
flag[i]=m-i-1-i;
else
flag[i]=0;
else
ans+=m-i-1;
if(i>m-i-1)
flag[i]=i-(m-i-1);
else
flag[i]=0;
sort(flag,flag+m);
for(int i=m-1;i>=0;i--)
ans+=flag[i];
flag[i]=0;
cout<<ans<<" ";
cout<<"\\n";
网太卡这个写法甚至没能提交上去,我真的醉了
刚打完上面那句话网就上去了,过了,果然网站是需要吓一吓的,比赛的时候写着写着发现网卡了,正准备截图发群里说“大风车吱呀吱呀呀的转”,网好了,草
E:给m个长方形和q个询问,每个询问包含两个矩形,求给定矩形面积和,使得能把询问的小正方形完全包含并且被给定的大正方形完全包含。
二维数点,写过一次,主席树做法依旧没补,指路(51条消息) 代码源#464数数_yeah17981的博客-CSDN博客
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
struct XD
long long x,y,w;
long long edge,id;
;
XD a[N];
long long tree[N];
long long maxy;
long long g[N];
long long ans[N][5];
void add(long long x,long long k,long long maxy)
for(long long i=x;i<=maxy;i+=i&-i)
tree[i]+=1ll*k;
long long ask(long long x)
long long res=0;
for(long long i=x;i;i-=i&-i)
res+=tree[i];
return res;
bool cmp(XD a,XD b)
if(a.x==b.x)
if(a.y==b.y)
return a.id <b.id ;
return a.y<b.y ;
return a.x<b.x;
void solve()
memset(tree,0,sizeof(tree));
memset(g,0,sizeof(g));
memset(ans,0,sizeof(ans));
memset(a,0,sizeof(a));
long long n,m,x1,x2,y1,y2;
cin>>n>>m;
for(long long i=1;i<=n;i++)
cin>>a[i].x>>a[i].y;
a[i].w=a[i].x*a[i].y;
g[i]=a[i].y;
long long num=n;
for(long long i=1;i<=m;i++)
cin>>x1>>y1>>x2>>y2;
x1+=1;
x2-=1;
y1+=1;
y2-=1;
a[++num].x=x1-1;
a[num].y=y1-1;
a[num].edge=1;
a[num].id=i;
g[num]=y1-1;
a[++num].x=x2;
a[num].y=y1-1;
a[num].edge=2;
a[num].id=i;
g[num]=y1-1;
a[++num].x=x1-1;
a[num].y=y2;
a[num].edge=3;
a[num].id=i;
g[num]=y2;
a[++num].x=x2;
a[num].y=y2;
a[num].edge=4;
a[num].id=i;
g[num]=y2;
sort(a+1,a+1+num,cmp);
sort(g+1,g+num+1);
long long maxy=unique(g+1,g+1+num)-g-1;
for(long long i=1;i<=num;i++)
if(!a[i].id)
long long pos=lower_bound(g+1,g+1+maxy,a[i].y)-g;
add(pos,a[i].w,maxy);
else
long long pos=lower_bound(g+1,g+1+maxy,a[i].y)-g;
ans[a[i].id][a[i].edge]=ask(pos);
for(long long i=1;i<=m;i++)
cout<<ans[i][4]+ans[i][1]-ans[i][3]-ans[i][2]<<"\\n";
int main()
std::ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
long long _;
cin>>_;
while(_--)
solve();
也不知道为啥网这么差,代码都复制不下来
还有五分钟比赛结束,无尽的等待……
不对啊,既然我要等到比赛结束发,我为啥刚刚不看看题捏,反正都睡不了,草,失策了
还有三分钟,感觉这个网不太支持我登上去看G题了,那就算了吧,快快结束,快快睡觉,QAQ
好困呜呜呜,中午没睡,希望我的除螨喷雾快点到,上床鼻子难受,不上床又困死了,呜呜呜呜呜
小小倒计时 3 2 1,提交!睡觉!
以上是关于Codeforces Round #817 (Div. 4)的主要内容,如果未能解决你的问题,请参考以下文章
Choosing The Commander CodeForces - 817E (01字典树+思维)
Codeforces Round #436 E. Fire(背包dp+输出路径)