题号 标题 已通过代码 通过率 团队的状态
A Contracting Convex Hull 点击查看 14/112 未通过
B Defend Ponyville 点击查看 4/32 未通过
C Delete Edges 点击查看 124/1120 通过(构造、规律结论)
D Gambling Monster 点击查看 61/117 未通过
E Growing Tree 点击查看 6/165 未通过
F Hamburger Steak 点击查看 933/4384 通过(贪心)
G Hasse Diagram 点击查看 49/234 未通过
H Hopping Rabbit 点击查看 300/2255 通过(扫描线)
I Intervals on the Ring 点击查看 1311/5472 通过(构造)
J Defend Your Country 点击查看 91/687 未通过
K Starch Cat 点击查看 15/219 未通过

I Intervals on the Ring

题意:

想到了每个补集区间对全集的补集相交,也想到了每次直接输出,一共m次。
但是把题目的连续区间想复杂了,重新造了每个区间到vector,所以WA了一发。

#include<bits/stdc++.h>
using namespace std;
struct node{int l, r;}a[1010];
bool cmp(node x, node y){return x.l<y.l;}int main(){int T;  cin>>T;while(T--){int n, m;  cin>>n>>m;for(int i = 1; i <= m; i++)cin>>a[i].l>>a[i].r;sort(a+1,a+m+1,cmp);cout<<m<<"\n";cout<<a[1].l<<" "<<a[m].r<<"\n";for(int i = 2; i <= m; i++)cout<<a[i].l<<" "<<a[i-1].r<<"\n";}return 0;
}

F Hamburger Steak

题意:

想到了最小耗时=max{max{ti}, sum{ti}/m },但是开始没有想到贪心的把每个锅的时间依次分配给汉堡, 所以开始拿每个汉堡需要的时间以及拆分到不同的锅绕了一段时间。

#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
const int maxn = 1e6+10;
LL a[maxn];
int main(){LL n, m;  cin>>n>>m;LL mx = 0, sum = 0;for(int i = 1; i <= n; i++){cin>>a[i]; sum += a[i]; mx=max(mx, a[i]);}LL avg = max(mx, sum/m+(sum%m!=0)), nowt=0, cnt=1;for(int i = 1; i <= n; i++){if(nowt==avg)cnt++, nowt=0;if(nowt+a[i]>avg){printf("2 %lld %lld %lld %lld %lld %lld\n",cnt+1,0,a[i]-(avg-nowt),cnt,nowt,avg);nowt = a[i]-(avg-nowt); cnt++;}else{printf("1 %lld %lld %lld\n",cnt,nowt,nowt+a[i]);nowt += a[i];}}return 0;
}

H Hopping Rabbit

题意:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+10;//扫描线:从左往右扫
struct Scan{ int l, r, x;};
vector<Scan>v[maxn];  //v[i]:第i列的线段(自带桶排序)
void add(int x1, int x2, int y1, int y2){v[x1].push_back({y1,y2,1});   //左边v[x2+1].push_back({y1,y2,-1});//右边
}//线段树:维护区间被覆盖次数s(区间加),区间被截长度len(即多少位置s有值)
#define lch (p<<1)
#define rch (p<<1|1)
struct Sgt{ int s, len; }tr[maxn];
void push_up(int p, int l, int r){ //[l,r]每次都传递一下就不用建树啦if(tr[p].s!=0)tr[p].len=r-l+1; //被覆盖完全,更新长度else if(l==r)tr[p].len=0;else tr[p].len=tr[lch].len+tr[rch].len;//由子节点更新被截长度
}
void update(int p, int l, int r, int L, int R, int c){//区间[L,R]+=cif(r<L || l>R)return ;if(L<=l && r<=R){tr[p].s += c;  //懒标记push_up(p,l,r);return ;}int mid = (l+r)>>1;update(lch,l,mid, L,R,c);update(rch,mid+1,r, L,R,c);push_up(p,l,r);
}
int gety(int p, int l, int r){//找到空着的位置if(tr[p].len==0)return l; //找到了int mid = (l+r)>>1;if(tr[lch].len<mid-l+1)return gety(lch,l,mid);else return gety(rch,mid+1,r);
}int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n, d;  cin>>n>>d;for(int i = 1; i <= n; i++){int x1, y1, x2, y2;cin>>x1>>y1>>x2>>y2;x2--, y2--;if(x2-x1+1>=d){ x1=0, x2=d-1;}//大于[0,d-1]的部分不要了if(y2-y1+1>=d){ y1=0, y2=d-1;}x1=(x1%d+d)%d;  y1=(y1%d+d)%d;//移动到[0,d-1]来x2=(x2%d+d)%d;  y2=(y2%d+d)%d;if(x1<=x2){if(y1<=y2)add(x1,x2,y1,y2);else add(x1,x2,0,y2),add(x1,x2,y1,d-1);//拆分成两个矩形放入[0,d-1]位置}else{if(y1<=y2) add(0,x2,y1,y2),add(x1,d-1,y1,y2);else add(0,x2,0,y2),add(x1,d-1,y1,d-1),add(0,x2,y1,d-1),add(x1,d-1,0,y2);//拆分成四个矩形放入[0,d-1]位置}}for(int i = 0; i < d; i++){//扫描每一条纵坐标轴for(Scan line: v[i]){  //把所有的线放入线段树update(1,0,d-1, line.l,line.r,line.x);}if(tr[1].len < d){//如果当前所有的和长度加起来小于d,那么意味着有空的位置cout<<"YES\n";cout<<i<<" "<<gety(1,0,d-1)<<"\n";return 0;}}cout<<"NO\n";return 0;
}

D Delete Edges

题意:



#include<bits/stdc++.h>
using namespace std;
int main(){int n;  cin>>n;int m = (n*(n-1)/2-n)/3+1;cout<<m<<"\n";for(int i = 1; i <= n; i++){for(int j = i+1; j <= n; j++){int k = n-i-j;if(k<=0)k+=n;if(k>j)cout<<i<<" "<<j<<" "<<k<<"\n";}}return 0;
}

2021牛客暑期多校训练营6,签到题CFHI相关推荐

  1. 2021牛客暑期多校训练营1, 签到题DFBG

    2021牛客暑期多校训练营1 题号 标题 已通过代码 通过率 团队的状态 A Alice and Bob 点击查看 1365/5586 通过(博弈论-打表) B Ball Dropping 点击查看 ...

  2. 2021牛客暑期多校训练营9

    2021牛客暑期多校训练营9 题号 题目 知识点 A A Math Challenge B Best Subgraph C Cells D Divide-and-conquer on Tree E E ...

  3. 2021牛客暑期多校训练营5

    2021牛客暑期多校训练营5 题号 题目 知识点 A Away from College B Boxes 概率 C Cheating and Stealing D Double Strings 线性d ...

  4. 2021牛客暑期多校训练营4

    2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...

  5. 2021牛客暑期多校训练营3

    2021牛客暑期多校训练营3 题号 题目 知识点 A Guess and lies B Black and white C Minimum grid 二分图匹配 D Count E Math 数论+打 ...

  6. 2021牛客暑期多校训练营2

    2021牛客暑期多校训练营2 题号 题目 知识点 A Arithmetic Progression B Cannon C Draw Grids D Er Ba Game E Gas Station F ...

  7. 2021牛客暑期多校训练营1

    2021牛客暑期多校训练营1 题号 题目 知识点 难度 A Alice and Bob 博弈论 B Ball Dropping 计算几何 签到 C Cut the Tree D Determine t ...

  8. 2021牛客暑期多校训练营2,签到题CDFKI

    2021牛客暑期多校训练营2 题号 标题 已通过代码 通过率 团队的状态 A Arithmetic Progression 点击查看 6/72 未通过 B Cannon 点击查看 34/104 未通过 ...

  9. 【训练题66:状压暴力 | 子集dp】Greater Integer, Better LCM | 2021牛客暑期多校训练营5

    题意 Greater Integer, Better LCM | 2021牛客暑期多校训练营5 给你 a,b,ca,b,ca,b,c ,你需要找到一对 x,yx,yx,y ,满足: lcm(a+x,b ...

  10. 2021牛客暑期多校训练营7

    2021牛客暑期多校训练营7 文章目录 2021牛客暑期多校训练营7 F:xay_loves_trees 解释 代码 H:xay_loves_count 解释 代码 I:xay_loves_or 解释 ...

最新文章

  1. js04--对象与正则表达式
  2. html任务清单源码,JavaScript jQuery 任务清单 ToDoList
  3. Python偷懒小技巧-提高10倍工作效率
  4. linux下安装虚拟天文馆,如何在Ubuntu 20.04、18.04中安装Stellarium 0.20.0虚拟天文馆
  5. Fast R-CNN: 我变快了,也变强了!
  6. wpf listbox绑定不跟新_你知道新媒体吗?好像跟想象的不太一样
  7. CF613D Kingdom and its Cities
  8. Node.js 修复4个漏洞
  9. Linux 如何重启网络
  10. nodejs安装node-gyp 报错
  11. Cobbler-自动化部署神器01
  12. 硕士研究生培养方案及课程大纲
  13. A Deep Q-Network for the Beer Game: A Reinforcement Learning Algorithm to Solve Inventory Optimizati
  14. linux vi打不开文件,在Linux中使用vi/vim打开一个文件时出现的的问题
  15. Word中的插入页眉 ?Word中页眉横线如何删除?
  16. 在win10下安装eclipse
  17. 把web程序打包成exe安装文件
  18. NX启动未能注册按钮事件
  19. 自定义控件之自定义圆形头像
  20. 计算机图形学【GAMES-101】9、蒙特卡洛路径追踪(Path Tracing)(光源采样)

热门文章

  1. Python 第三方库的安装
  2. 词汇的积累与遣词造句 —— 准确的表达、新鲜的词汇
  3. 极简代码(四)—— 分段函数(sinc)的实现
  4. utilities(C++)——单例(Singleton) (使用智能指针 shared_ptr)
  5. CentOS hadoop 伪分布式安装步骤
  6. BP神经网络从理论到应用(一):C++实现
  7. python怎么读写文件-手机上怎么写pythonPython文件读写详解及设置文件的字符编码...
  8. python有趣小程序-抖音最火的整蛊表白小程序如何做出来的?教你用python做出
  9. 为何python不好找工作-为什么python不好找工作
  10. python爬虫实例100例-Python爬虫 实例