首页 > 其他分享 >Codeforces Round 683 (Div. 1, by Meet IT) ABCDF题解

Codeforces Round 683 (Div. 1, by Meet IT) ABCDF题解

时间:2023-05-10 19:24:10浏览次数:35  
标签:rs int 题解 void Codeforces ABCDF ls li dp

F和D都在ABC上做过类似的,但是没打好,道心破碎。。。。

A. Knapsack

若物品质量在[(w+1)/2,w]之间做完了

否则一直贪心加

void solve(){
    int n;
    ll w;cin>>n>>w;
    int c=n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(a[i]>w)c--;
    }
    if(!c){
        cout<<"-1\n";
        return;
    }
    for(int i=1;i<=n;i++)if(a[i]<=w&&a[i]>=(w+1)/2){
        cout<<"1\n"<<i<<'\n';
        return;
    }
    ll ww=0;
    vector<int>ans;
    for(int i=1;i<=n;i++)if(a[i]<=w){
        ans.push_back(i),ww+=a[i];
        if(ww>=(w+1)/2){
            cout<<ans.size()<<'\n';
            for(auto x:ans)cout<<x<<' ';
            cout<<'\n';
            return;
        }
    }
    cout<<"-1\n";
}
View Code

B. Catching Cheaters

过于朴素的字符串DP

void solve(){
    int n,m;
    cin>>n>>m;
    string s,t;
    cin>>s>>t;
    s=' '+s,t=' '+t;
    int res=0;
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
        if(s[i]==t[j])dp[i][j]=max(dp[i][j],dp[i-1][j-1]+2);
        else dp[i][j]=max({dp[i][j],dp[i-1][j]-1,dp[i][j-1]-1});
        res=max(res,dp[i][j]);
    }
    cout<<res<<'\n';
}
View Code

C. Xor Tree

显然的是需要先建字典树再做

然后发现,字典树若左右两边都有节点,那么一侧最多只能留一个;DP解决。

int tr[N*31][2],tot=1,sz[N*31],dp[N*31];
void ins(int x,int ii){
    int p=1;
    for(int i=30;~i;i--){
        int &s=tr[p][x>>i&1];
        if(!s)s=++tot;
        p=s,sz[s]++;
    }
}
void dfs(int p){
    int ls=tr[p][0],rs=tr[p][1];
    if(ls)dfs(ls);
    if(rs)dfs(rs);
    if(!ls&&!rs){
        dp[p]=1;
        return;
    }
    if(!ls||!rs)dp[p]=max(dp[ls],dp[rs]);
    if(ls&&rs)dp[p]=max(dp[ls],dp[rs])+1;
}
int a[N];
void ini(){
}void solve(){
    int n;cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i],ins(a[i],i);
    dfs(1);
    cout<<n-dp[1]<<'\n';
}
View Code

D. Frequency Problem

需要一个结论:最终的答案包含整体众数。

(待补

F. Line Distance

同ABC263EX;二分答案,把点转化为与圆的切线连点,然后随便拿个DS数一下。

#import<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const ld pi=acosl(-1);
const int N=200013;
struct pt{
    ld x,y;
}p[N];
int n,tr[N];
void add(int x,int v){
    for(;x<N;x+=x&-x)tr[x]+=v;
}
int qry(int x){
    int r=0;
    for(;x;x-=x&-x)r+=tr[x];
    return r;
}
ld t[N];
ll chk(ld r){ll ans=0;
    memset(tr,0,sizeof tr);
    vector<ld>li;
    vector<pair<ld,ld>>seg;
    ll cnt=0;
    for(int i=1;i<=n;i++){
        auto[x,y]=p[i];
        ld d=x*x+y*y;
        if(d<r*r){
            cnt++;
            continue;
        }
        d=sqrtl(d);
        ld phi=acosl(r/d);
        ld L=t[i]-phi,R=t[i]+phi;
        if(L<-pi)L+=pi+pi;
        if(L>pi)L-=pi+pi;
        if(R<-pi)R+=pi+pi;
        if(R>pi)R-=pi+pi;
        if(L>R)swap(L,R);
        seg.emplace_back(L,R),li.push_back(L),li.push_back(R);
    }
    sort(li.begin(),li.end());
    std::sort(seg.begin(), seg.end(),[&](auto x,auto y){return x.second<y.second;});
    function<int(ld)>get=[&](ld x){return lower_bound(li.begin(),li.end(),x)-li.begin()+1;};
    int x,y;
    for(auto[L,R]:seg)x=get(L),y=get(R),ans+=qry(x),add(x+1,1),add(y,-1);
    return (ll)n*(n-1)/2-ans;
}
 
int main(){
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);
    cout<<fixed<<setprecision(15);
    ll k;cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>p[i].x>>p[i].y,t[i]=atan2l(p[i].y,p[i].x);
    int C=50;
    ld L=0,R=3e4;
    while(C--){
        ld mid=(L+R)/2;
        if(chk(mid)<k)L=mid;else R=mid;
    }
    cout<<L;
}
View Code

 

标签:rs,int,题解,void,Codeforces,ABCDF,ls,li,dp
From: https://www.cnblogs.com/Bakabamboo/p/17389059.html

相关文章

  • Linux环境下,输入文件的编码格式和系统格式导致的问题解决办法
    1.用vim111.txt进入查看状态 2系统格式的查看和修改查看指令:setfileformat修改指令:setfileformat=unix3编码格式的查看和修改 查看指令 :setfileencoding 修改指令 在Vim中直接实行转换文件编码,比如将一个文件转换成u......
  • linux静态库的制作及问题解决
       首先介绍下分文件,在学习或者开发中,实现一个项目需要实现很多的功能,那么这些功能不可能在一个".c"文件下实现,需要多个".c"文件来共同实现,但是程序的入口只有一个,就体现了分文件编程的重要性,在主函数中调用其余的功能函数。分文件编程的优点及意义就是:分模块编程思......
  • CF1825D1 题解
    一、题目描述:给定$n$和$k$,表示有$n$个点,其中有$k$个点是关键点,这$k$个点随机分布。给出$n$个点的连接方式,保证构成一棵树,求有期望多少个点使得这个点到$k$个关键点的距离之和最小,答案对$1e9+7$取模。数据范围:$1\leqn\leq2e5,1\leqk\leqmin(n,3)......
  • 使用vue的keep-alive缓存组件,三级菜单组件无法缓存问题解决
    使用vue做后台管理系统,需求是所有的菜单打开之后,下次点击的时候的使用缓存,这里很简单的做法就是用来包裹住;但是一级菜单和二级菜单都没有问题,三级菜单就会出现无法缓存的问题,网上找资料说是vue中keep-alive本身存在的缺陷,需要在路由守卫中将matched属性做一下优化,具体如下//......
  • Luogu P5576 [CmdOI2019]口头禅 题解
    upd:修改了一些思路的表达,帮助理解。首先膜拜yyc大佬出这样的毒瘤好题。另外感谢永无岛、xtx1092515503、hs_black提供的思路。这里整理了一下这些思路,可能会有所启发。题意:给定一个字符串构成的序列,多次查询给定区间内各字符串的最长公共子串长度。提供一种后缀数组+......
  • ABC262Ex Max Limited Sequence 题解
    题意:给定\(m\)个限制\((l_i,r_i,p_i)\)及\(n,k\),求满足以下条件的长度为\(n\)的不同序列\(a=(a_1,a_2,\cdots,a_n)\)的数目。\(\foralli\in[1,n],0\leqa_i\leqk\)\(\foralli\in[1,m],\max\limits_{j\in[l_i,r_i]}a_j=p_i\)同P4229,但数据更强,目测只允......
  • 【问题解决】Kafka报错 Bootstrap broker x.x.x.x:9092 (id: -1 rack: null) disconne
    问题复现近日针对某一客户需求开发了一个需要使用Kafka的功能,功能是什么暂且不论,在本地虚机的Kafka连接一切正常遂放到测试服务器上验证功能,以下是监听topic成功和警告报错:2023-05-0910:22:23[localhost-startStop-1]INFOorg.apache.kafka.clients.consumer.ConsumerConfig......
  • Codeforces [Hello 2020] 1284F New Year and Social Network(图论匹配推理+lct)
    https://codeforces.com/contest/1284/problem/F题目大意:有两个大小为n的树T1和T2.T2中的每条边(u,v)可以匹配T1中u到v路径上的所有边。求最大匹配,并给出方案。\(1<=n<=250000\)题解:首先你需要观察样例大胆猜想一定有完美匹配。考虑T1中的一个叶子x和它的父亲y。显然的是,从T2中随......
  • Codeforces F. Bits And Pieces(位运算)
    传送门.位运算的比较基本的题。考虑枚举\(i\),然后二进制位从大到小考虑,对于第\(w\)位,如果\(a[i][w]=1\),那么对\(j、k\)并没有什么限制。如果\(a[i][w]=0\),那么我们希望\((a[j]~and~a[k])[w]=1\),结合前面的限制,就是给定\(x\),问有没有\(x∈a[j]~and~a[k](i<j<k)\)。那么这应该是做一......
  • ABC191F 题解
    题目传送门题目分析我们发现,\(\text{min}\)操作实际上就是把两数当中较大的那个删除,较小的那个数不受影响,所以用最小的数删还是用另一个数删是无区别的。一个性质:\[\gcd(x,y)\le\min(x,y)\]不管\(a_{min}\)是原来的还是在\(\text{gcd}\)操作后新生成的,所以无论什么时......