-
Bio
#include<bits/stdc++.h> #define int long long using namespace std; int n,k,a[2020],b[2020],res[2010]; set<array<int,3> > s; vector<pair<int,int> > e[2010]; int f[2010][2],cnt[2010][2];// f i j k / i 的子树,k=0/1 i 是否选 int vis[2010]; void dfs0(int u){ vis[u]=1; for(int i=0;i<(int)e[u].size();i++){ int v=e[u][i].second; if(vis[v]) continue; dfs0(v); } } pair<int,int> upd(int f1,int c1,int f2,int c2){ if(f1>f2){ return {f2,c2}; } else if(f1<f2){ return {f1,c1}; } return {f1,min(c1,c2)}; } void dfs1(int u,int fa,int at){ f[u][0]=0; cnt[u][0]=0; if(u!=0){ f[u][1]=res[u]+at; cnt[u][1]=1; } else{ f[u][1]=1ll<<60; cnt[u][1]=0; } for(int i=0;i<(int)e[u].size();i++){ int v=e[u][i].second,w=e[u][i].first; if(v==fa) continue; dfs1(v,u,at); /* f[u][0]=min(f[u][0]+f[v][0],f[u][0]+f[v][1]); f[u][1]=min(f[u][1]+f[v][0],f[u][1]+f[v][1]-w);*/ tie(f[u][0],cnt[u][0])=upd(f[u][0]+f[v][0],cnt[u][0]+cnt[v][0],f[u][0]+f[v][1],cnt[u][0]+cnt[v][1]); tie(f[u][1],cnt[u][1])=upd(f[u][1]+f[v][0],cnt[u][1]+cnt[v][0],f[u][1]+f[v][1]-w,cnt[u][1]+cnt[v][1]); } } signed main(){ ios::sync_with_stdio(0); cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i]>>b[i]; s.insert({a[i],i,0}); s.insert({b[i],i,1}); } for(auto it=s.begin();it!=s.end();it++){ if(it==prev(s.end())) break; auto u=*it,v=*next(it); if(u[2]==0&&v[2]==1){ int w=v[0]-u[0]; e[u[1]].push_back({w,v[1]}); e[v[1]].push_back({w,u[1]}); // cerr<<"edge: "<<u[1]<<" "<<v[1]<<" "<<w<<"\n"; } if(u[2]==0) res[u[1]]+=v[0]-u[0]; if(v[2]==1) res[v[1]]+=v[0]-u[0]; } /* for(int i=1;i<=n;i++){ cout<<res[i]<<"\n"; }*/ vector<int> re; for(int i=1;i<=n;i++){ if(!vis[i]){ dfs0(i); re.push_back(i); } } for(int i=0;i<(int)re.size();i++){ e[0].push_back({0,re[i]}); e[re[i]].push_back({0,0}); // cerr<<"edge: "<<0<<" "<<re[i]<<"\n"; } int need=n-k; int le=-1e9,ri=1e9,mid; while(le<ri){ mid=(le+ri)>>1; memset(f,0,sizeof(f)); memset(cnt,0,sizeof(cnt)); // cerr<<le<<" "<<ri<<" "<<mid<<"\n"; dfs1(0,-1,mid); int ans,cs; tie(ans,cs)=upd(f[0][0],cnt[0][0],f[0][1],cnt[0][1]); // for(int i=0;i<=n;i++){ // cerr<<"ch:"<<i<<" "<<f[i][0]<<" "<<cnt[i][0]<<" "<<f[i][1]<<" "<<cnt[i][1]<<"\n"; // } // cout<<ans<<" "<<cs<<"\n"; if(cs<=need) ri=mid; else le=mid+1; } dfs1(0,-1,le); int ans,cs; tie(ans,cs)=upd(f[0][0],cnt[0][0],f[0][1],cnt[0][1]); // cerr<<le<<" "<<ans<<" "<<cs<<"\n"; cout<<ans-le*need<<"\n"; }
-
Recent Activities
- 国庆提高/省选组比赛 IOI
- 模拟赛一 IOI
- 2025科技节水题过家家 IOI
- 20241203集训 IOI(Strict)
- 20241119集训 IOI(Strict)
- 赛前冲刺安排 IOI
- 20241112集训 IOI(Strict)
- 20241029集训 IOI(Strict)
- CSP难度的题目 IOI
- 国庆提高组30题(1~3号) IOI
- 20240924集训 IOI(Strict)
- 周五分享 IOI
- 保送生第九周 Kruskal重构树 Assignment
- 保送生第七周 启发式合并 Assignment
- 保送生第六周 wqs二分 Assignment
- 20240910集训 IOI(Strict)
- 保送生第五周 李超线段树 Assignment
- 保送生第四周 点分治 Assignment
- 保送生第三周 CDQ分治 Assignment
- 保送生第二周 高维前缀和 FWT Assignment
- 保送生第一周 矩阵快速幂 Assignment
- 训练 IOI
- CSP-J训练赛(一) IOI(Strict)
- [订正]多校2024第3场 第4场 Assignment
- [订正]多校2024第1场 第2场 Assignment
- 暑假集训第二阶段 ACM/ICPC
- 2023-2024第二学期初二信息竞赛组期末考 IOI
- 2023-2024下信息提高组选修课期末考 IOI
- 20240611集训 IOI
- 20240604集训 IOI
- 20240528集训 IOI
- 2024水题过家家 IOI
- 20240521集训 IOI
- 2023-2023下学期初二竞赛组期中考 OI
- 20240507集训_ IOI
- 20240409集训 IOI
- 初一竞赛组作业——区间DP Assignment
- The 2nd Yuzusoft Cup Stage 3: Gensokyo IOI
- 20240319集训 IOI
- The 2nd Yuzusoft Cup Stage 2: Zhanjiang IOI
- The 2nd Yuzusoft Cup Stage 1: Shantou IOI
- 20240312集训 IOI
- 初一竞赛组作业——背包DP Assignment
- 20240305集训 IOI
- 初一竞赛组作业——DP基础 Assignment
- 20240123 前缀和、差分、离散化难题 Ledo
- 20240120字符串专题模板 IOI
- 20240119反悔贪心选讲 IOI
- 20240118期望的线性选讲 ACM/ICPC
- 20240116杂题选讲 IOI
- 寒假集训1 Assignment
- 20240102集训 IOI
- 2023上学期初二竞赛组期末考 OI
- 2023-2024第一学期选修课期末考 OI
- 20231212集训 IOI
- 省选模拟赛(一) OI
- 初一竞赛组——贪心 Assignment
- NOIP 题目选讲(二) IOI
- 省选组-计数 Assignment
- 初二竞赛组作业——主席树 Assignment
- HFI Coding Club 2023 November Contest IOI
- NOIP 倒计时 IOI
- 20231114集训 OI
- 初二竞赛组作业——线段树合并 Assignment
- 20231107集训 OI
- NOIP 模拟赛(三) OI
- 2023上学期初二竞赛组期中考 OI
- 20231017集训 OI
- CSP-J 前两题真题汇总 Ledo
- 数据结构一 by YJL ACM/ICPC
- 20231010集训 OI
- 乐多训练赛 Ledo
- 虚假的比赛 IOI
- 国庆集训S组模拟赛3 OI
- 国庆集训S组模拟赛2 OI
- 国庆集训S组模拟赛1 OI
- 国庆集训模拟赛(普及) OI
- 初一2班从0开始学C++ Assignment
- 初二信息竞赛组——斜率优化 Assignment
- 9月19日周二晚上集训赛 IOI
- 初二竞赛组作业——DP复习 Assignment
- S组初赛模拟题 OI
- 提高A组-题目分享 Assignment
- 单调队列优化DP Assignment
- 信息选修课(普及/提高)期末考 IOI
- 水题过家家 IOI
- 状压DP堂练 Assignment
- 20230511练习 Assignment
- DP堂练20230424 Assignment
- 初一期中考 IOI
- 初一竞赛组DP堂上复习题 Assignment
- 初一竞赛组状压DP堂上练习 Assignment
- 初一竞赛组排序+DP堂上练习 Assignment
- 初一信息竞赛组kmp堂上练习 Assignment
- 初中信息竞赛组AC自动机 Assignment
- 初一下第五周作业: 二分 Assignment
- 初中竞赛组树形DP2 Assignment
- 初中信息竞赛组-Trie Assignment
- 初中竞赛组树形DP1 Assignment
- 初一下第三周作业: 函数 Assignment
- 省选模拟赛1 OI
- 编程题可看成绩 IOI
- 22年秋季 初一竞赛组期末考 OI
- 22年秋季 初一上期末考 OI
- 初一竞赛组数位DP Assignment
- 初一竞赛组作业——DP经典题 Assignment
- 初一年级数组3 Assignment
- NOIP模拟赛1 OI
- 初一竞赛组区间DP Assignment
- 初中选修课期中考 IOI
- 上学期竞赛组期中考试(初一) IOI
- 初一上学期期中考试机试(1班2班) IOI
- 初一上学期期中考试笔试(1班2班) OI
- 初一年级循环语句2 Assignment
- 初一竞赛班背包DP作业 Assignment
- 初一竞赛班动态规划作业2 Assignment
- 初一年级if语句 Assignment
- 省选模拟1 OI
- 周四提高比赛3 IOI
- 初一竞赛班作业 Assignment
- 初一2班课堂作业 Assignment
- 周四提高比赛1 IOI
- 初一1,3班第3~4周作业 Assignment