2017 国庆湖南 Day6
期望得分:100+100+60=260
实际得分:100+85+0=185
二分最后一条相交线段的位置
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- #define N 100001
- int x[N],y[N];
- struct node
- {
- int b;
- double k;
- }Point[N];
- void read(int &x)
- {
- x=; char c=getchar();
- while(!isdigit(c)) c=getchar();
- while(isdigit(c)) { x=x*+c-''; c=getchar(); }
- }
- int main()
- {
- freopen("geometry.in","r",stdin);
- freopen("geometry.out","w",stdout);
- int n; read(n);
- for(int i=;i<=n;++i) read(x[i]);
- for(int i=;i<=n;++i) read(y[i]);
- sort(x+,x+n+);
- sort(y+,y+n+);
- for(int i=;i<=n;i++)
- {
- Point[i].b=y[i];
- Point[i].k=-y[i]*1.0/x[i];
- }
- int m; read(m);
- int a,b; double g;
- int l,r,mid,ans;
- while(m--)
- {
- read(a); read(b);
- g=1.0*b/a;
- l=;r=n; ans=;
- while(l<=r)
- {
- mid=l+r>>;
- if(Point[mid].b/(g-Point[mid].k)<=a) ans=mid,l=mid+;
- else r=mid-;
- }
- printf("%d\n",ans);
- }
- }
差分约束
设s[i]表示前i个时刻实际招的人数
那么可得约束条件:
a[i]<=s[i]-s[i-7]<=b[i] i>=7
a[i]<=s[i]+s[23]-s[16+i]<=b[i] i<7
0<=s[i]-s[i-1]<=b[i]
第二个式子中含有3个未知数
只有两个与i有关
设s[23]=T
那么枚举T,判断当前情况是否有解即可
- #include<cstdio>
- #include<cstring>
- #include<queue>
- #define N 25
- using namespace std;
- int a[N],b[N];
- int front[N],nxt[],to[],tot,val[];
- int d[N];
- bool vis[N];
- void add(int u,int v,int w)
- {
- to[++tot]=v; nxt[tot]=front[u]; front[u]=tot; val[tot]=w;
- }
- bool spfa()
- {
- queue<int>q;
- memset(vis,false,sizeof(vis));
- memset(d,-,sizeof(d));
- d[]=; vis[]=true;
- q.push();
- int now;
- while(!q.empty())
- {
- now=q.front(); q.pop(); vis[now]=false;
- for(int i=front[now];i;i=nxt[i])
- if(d[to[i]]<d[now]+val[i])
- {
- d[to[i]]=d[now]+val[i];
- if(d[to[i]]>) return false;
- if(!vis[to[i]]) vis[to[i]]=true,q.push(to[i]);
- }
- }
- return true;
- }
- bool solve(int t)
- {
- memset(front,,sizeof(front)); tot=;
- for(int i=;i<;i++)
- {
- add(i-,i+,a[i]);
- // printf("%d %d %d\n",i-7,i+1,a[i]);
- }
- for(int i=;i<=;i++)
- {
- // printf("%d %d %d\n",i+17,i+1,a[i]-t);
- add(i+,i+,a[i]-t);
- }
- for(int i=;i<;i++)
- {
- // printf("%d %d\n",i,i+1);
- add(i,i+,);
- }
- for(int i=;i<;i++)
- {
- // printf("%d %d %d\n",i+1,i,-b[i]);
- add(i+,i,-b[i]);
- }
- add(,,t); add(,,-t);
- return spfa();
- }
- int main()
- {
- freopen("cashier.in","r",stdin);
- freopen("cashier.out","w",stdout);
- int T,ans;
- scanf("%d",&T);
- while(T--)
- {
- for(int i=;i<;i++) scanf("%d",&a[i]);
- for(int i=;i<;i++) scanf("%d",&b[i]);
- ans=;
- while()
- {
- if(++ans>) { ans=-; break; }
- if(solve(ans)) break;
- }
- printf("%d\n",ans);
- }
- }
考场85分贪心
枚举时刻i,作为首先招人满足的时刻
从 它即它往前7个点, 招人,招的人时刻尽可能的靠后
满足它之后,枚举j 到 i-1 再 同样的方法招人
此贪心成立的前提是,存在一个时刻招的人=min(a[i],b[i])
但最优解可能不是这样
假设前面招了x1、x2、x3……个人
最后面招了y个人
这个y会覆盖前面的x1、x2、x3……
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- int need[],have[];
- int now[],rest[];
- int main()
- {
- freopen("cashier.in","r",stdin);
- freopen("cashier.out","w",stdout);
- int T;
- scanf("%d",&T);
- int ans;
- while(T--)
- {
- ans=1e9;
- for(int i=;i<;i++) scanf("%d",&need[i]);
- for(int i=;i<;i++) scanf("%d",&have[i]);
- for(int k=;k<;k++)
- {
- if(!need[k]) continue;
- for(int i=;i<;i++) rest[i]=have[i],now[i]=need[i];
- int j=k,cnt=,sum=;
- while(now[k] && cnt<)
- {
- if(j==-) j=;
- cnt++;
- if(rest[j]<now[k])
- {
- for(int h=;h<;h++) now[(h+j)%]-=rest[j];
- sum+=rest[j];rest[j]=;
- }
- else
- {
- int cut=now[k];
- for(int h=;h<;h++) now[(h+j)%]-=cut;
- rest[j]-=cut;sum+=cut;
- }
- j--;
- }
- if(now[k]) continue;
- bool f=true;
- for(int i=k+,t=;t<=;t++,i++)
- {
- if(i==) i=;
- if(now[i]<=) continue;
- j=i; cnt=;
- while(now[i] && cnt<)
- {
- if(j==-) j=;
- cnt++;
- if(rest[j]<now[i])
- {
- for(int h=;h<;h++) now[(h+j)%]-=rest[j];
- sum+=rest[j];rest[j]=;
- }
- else
- {
- int cut=now[i];
- for(int h=;h<;h++) now[(h+j)%]-=cut;
- rest[j]-=cut,sum+=cut;
- }
- j--;
- }
- if(now[i]) { f=false; break; }
- }
- if(f) ans=min(ans,sum);
- }
- printf("%d\n",ans==1e9 ? - : ans);
- }
- }
就是这个http://www.cnblogs.com/TheRoadToTheGold/p/7679195.html
2017 国庆湖南 Day6的更多相关文章
- 2017 国庆湖南 Day5
期望得分:76+80+30=186 实际得分:72+10+0=82 先看第一问: 本题不是求方案数,所以我们不关心 选的数是什么以及的选的顺序 只关心选了某个数后,对当前gcd的影响 预处理 cnt[ ...
- 2017 国庆湖南 Day1
卡特兰数 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ] ...
- 2017 国庆湖南 Day3
期望得分:100+30+60=190 实际得分:10+0+55=65 到了233 2是奇数位 或223 第2个2是偶数位就会223 .233 循环 #include<cstdio> #de ...
- 2017 国庆湖南 Day4
期望得分:20+40+100=160 实际得分:20+20+100=140 破题关键: f(i)=i 证明:设[1,i]中与i互质的数分别为a1,a2……aφ(i) 那么 i-a1,i-a2,…… i ...
- 2017 国庆湖南Day2
期望得分:100+30+100=230 实际得分:100+30+70=200 T3 数组开小了 ..... 记录 1的前缀和,0的后缀和 枚举第一个1的出现位置 #include<cstdio& ...
- 学大伟业 2017 国庆 Day1
期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是 ...
- 2017国庆 清北学堂 北京综合强化班 Day1
期望得分:60+ +0=60+ 实际得分:30+56+0=86 时间规划极端不合理,T2忘了叉积计算,用解析几何算,还有的情况很难处理,浪费太多时间,最后gg 导致T3只剩50分钟,20分钟写完代码, ...
- 牛客国庆集训day6 B Board (模拟标记思维或找规律或分块???)
链接:https://www.nowcoder.com/acm/contest/206/B来源:牛客网 题目描述 恬恬有一个nx n的数组.她在用这个数组玩游戏: 开始时,数组中每一个元素都是0. 恬 ...
- 2017.10.1 国庆清北 D1T1 zhx的字符串题
题目背景 2017国庆清北D1T1 题目描述 你是能看到第一题的 friends 呢. ——hja 何大爷对字符串十分有研究,于是天天出字符串题虐杀 zhx.何大爷今天为 字符串定义了新的权值计算方法 ...
随机推荐
- ssm框架之将数据库的数据导入导出为excel文件
在这里首先我要将自己遇到的各种问题,以及需求记录下来,做一个备忘,便于以后查看: 需求:主要实现两个功能,将oracle数据库里的数据导出为excel,同时需要将excel表格的数据导入到数据库 环境 ...
- I/HwPointEventFilter: do not support AFT because of no config
I/HwPointEventFilter: do not support AFT because of no config 这是华为对系统做了修改,默认不打印日志,要改配置 在拨号界面输入:以下进入工 ...
- [BZOJ4517] [Sdoi2016] 排列计数 (数学)
Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...
- 记录一次网站漏洞修复过程(二):第一轮处理(IIS目录枚举、应用程序错误)
解决IIS目录枚举 当前的IIS版本为7.5 [IIS] => [请求筛选] => [URL]中添加 [拒绝序列] 符号 ~ 应用程序错误 在Global.asax 中添加异常处理代 ...
- 【python学习笔记】7.更加抽象
[python学习笔记]7.更加抽象 类的定义就是执行代码块 在内存保存一个原始实例,可以通过类名来访问 类的实例化,是创建一个原始实例的副本, 并且所有成员变量与原始实例绑定 通过修改实例变量,可以 ...
- 【django之分页器】
一.什么是分页功能 二.Django的分页器(paginator) 语法: paginator = Paginator(book_list, 8) #8条一页print("count:&qu ...
- java--计时器
计时器 一.窗口化 public class Pro extends JFrame{ private JTextField textField = new JTextField(45);//系统时间文 ...
- 快速搭建CentOS+ASP.NET Core环境支持WebSocket
环境:CentOS 7.x,.net core 2 以下.net core 2安装操作为官方方法.如果你使用Docker,那么更简单了,只需要docker pull microsoft/dotnet就 ...
- python中干掉tornado的连接失败日志
用了tornado真的是比较舒服,很多事都为你做好了. 但也有不令人满意的地方--对于我这个洁癖来说,自动给我的控制台打印不受我控制的信息是不能忍受的. 连接到一个新的地方,如果失败,tornado会 ...
- [Apio2010] 巡逻
Description Input 第一行包含两个整数 n, K(1 ≤ K ≤ 2).接下来 n – 1行,每行两个整数 a, b, 表示村庄a与b之间有一条道路(1 ≤ a, b ≤ n). Ou ...