下午

预:60+100+30

实:30+30+30

T1水题(water)

T1写了二分图匹配

听说有70分,写挫了....

正解:贪心,按长度排序,

对于第一幅牌里面的,在第二个里面,找一个长度小于,高度最接近的牌

进行覆盖。

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <set>
using namespace std;
int n;
multiset <int> s;
struct node {int x,y;} a[],b[];
int cmp(node i,node j) {return i.x<j.x;}
int main()
{
freopen("water.in","r",stdin);
freopen("water.out","w",stdout);
int T;
T=;
while(T--)
{
scanf("%d",&n);
for(int i=;i<n;i++) scanf("%d%d",&a[i].x,&a[i].y);
for(int i=;i<n;i++) scanf("%d%d",&b[i].x,&b[i].y);
sort(a,a+n,cmp);
sort(b,b+n,cmp);
s.clear();
int k=,ans=;
for(int i=;i<n;i++)
{
while(a[i].x>=b[k].x&&k<n)
{
s.insert(b[k].y);
k++;
}
if(s.empty())continue;
multiset<int>::iterator it=s.upper_bound(a[i].y);
if (it==s.begin()) continue; it--;
ans++; s.erase(it);
}
printf("%d\n",ans);
}
return ;
}

T2下午梦境(dream)

手推公式,推错了.....30

正解dp||爆搜

#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
int n,sum,ans,dp[][],DP[][],i,j,k,l;
int main()
{
freopen("dream.in","r",stdin);
freopen("dream.out","w",stdout);
scanf("%d",&n);
sum=int(log(n)/log()+0.000000001)+;
dp[][]=;
for (i=; i<sum; i++)
{
for (j=; j<=n; j++)
for (k=; k<=n; k++)
if (dp[j][k])
for (l=k+; l<=j+; l++)
DP[min(n,j+l)][l]+=dp[j][k];
for (j=; j<=n; j++) for (k=; k<=n; k++) {dp[j][k]=DP[j][k];DP[j][k]=;}
}
for (j=; j<=n; j++) ans+=dp[n][j];
cout<<sum<<' '<<ans;
return ;
}

T3动态规划(dp)

不会做30分爆搜

正解:

dp[i][j] 1~i 切了j刀,的最优解

dp[i][j]=min{dp[k][j-1]+sum(k+1,i)}

可以证明这个转移方程具有单调性,zhw说自己yy

20*n^2的简单dp -> 在固定j的情况下 随着i的增大,k不降 ,那么就可分治了

#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 1000011
#define min(x, y) ((x) < (y) ? (x) : (y))
#define max(x, y) ((x) > (y) ? (x) : (y))
using namespace std;
int n, q, ans;
int f[N]; struct node
{
int x, y, z;
}p[N], t[N]; inline int read()
{
int x = , f = ;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
return x * f;
} inline bool cmp(node x, node y)
{
return x.z > y.z;
} inline int find(int x)
{
return x == f[x] ? x : f[x] = find(f[x]);
} inline bool check(int k)
{
int i, j, x, y, lmin, lmax, rmin, rmax;
for(i = ; i <= n + ; i++) f[i] = i;
for(i = ; i <= k; i++) t[i] = p[i];
std::sort(t + , t + k + , cmp);
lmin = lmax = t[].x;
rmin = rmax = t[].y;
for(i = ; i <= k; i++)
{
if(t[i].z < t[i - ].z)
{
if(find(lmax) > rmin) return ;
for(j = find(lmin); j <= rmax; j++)
f[find(j)] = find(rmax + );
lmin = lmax = t[i].x;
rmin = rmax = t[i].y;
}
else
{
lmin = min(lmin, t[i].x);
lmax = max(lmax, t[i].x);
rmin = min(rmin, t[i].y);
rmax = max(rmax, t[i].y);
if(lmax > rmin) return ;
}
}
// cout<<find(1)<<endl;
if(find(lmax) > rmin) return ;
return ;
} int main()
{
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
int i, x, y, mid;
n = read();
q = read();
for(i = ; i <= q; i++)
p[i].x = read(), p[i].y = read(), p[i].z = read();
x = , y = q;
//cout<<check(2)<<endl;
//return 0;
ans = q + ;
while(x <= y)
{
mid = (x + y) >> ;
if(check(mid)) ans = mid, y = mid - ;
else x = mid + ;
}
printf("%d\n", ans);
return ;
}

济南day1下午的更多相关文章

  1. PKUSC 模拟赛 day1 下午总结

    下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...

  2. 云栖大会day1 下午

    下午参与的是创新创业专场 会议议程是 创新创业专场-2018阿里云创新中心年度盛典 13:30-14:10 阿里双创新征程 李中雨 阿里云创业孵化事业部总经理 14:10-14:40 人货场的渗透与重 ...

  3. Day1下午解题报告

    预计分数:0+30+30=60 实际分数:0+30+40=70 T1水题(water) 贪心,按长度排序, 对于第一幅牌里面的,在第二个里面,找一个长度小于,高度最接近的牌 进行覆盖. 考场上的我离正 ...

  4. 北京DAY1下午

    省选模拟题 周子凯 题目概况 中文题目名 简易比特币 计算 路径 英文题目名 bit calculation Path 输入文件名 bit.in calculation.in path.in 输出文件 ...

  5. Day1下午

    T1 暴力50分 排A和B X,不用考虑X    用数组80分, 权值线段树.平衡树100, 一个函数? T2 打表  dp logn+1,+ 搜索,dp? txt..... T3 30分暴力和尽量均 ...

  6. 济南day1

    预计分数:100+100+30 实际分数:10+60+20 T1立方数(cubic) 题目描述 LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8, ...

  7. ZJOI2016二试+游记

    ...excited.... 一场打回原形爽哦. T1莫名爆到了10分,T2T3均没交,一个小时过后就没再拿任何分数,perfectly狗带了... 总之没有给自己充足的时间去敲暴力,ZJOI啊..拿 ...

  8. Noip2015总结

    Noip2015战役总结 [游记部分] Day0 考前说是可以放松一下,下午呢就在机房打了几盘杀,一起玩了玩狼人.不过晚上觉得还是要有点氛围了,于是稍稍打了几个模板,觉得正确率还不错,给自己一点自信的 ...

  9. 近期概况&总结

    下午考完英语的学考就要放假啦,是衡中的假期啊QAQ 所以灰常的激动,一点也不想写题(我不会告诉你其实假期只有一个晚上.. 自从CTSC&APIO回来之后就一直在机房颓颓颓,跟着zcg学了很多新 ...

随机推荐

  1. day 37 MySQL行(记录)的详细操作

    MySQL行(记录)的详细操作   阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操 ...

  2. python面试题之什么是lambda函数?

    lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用l ...

  3. python面试题之python多线程与多进程的区别

    多线程可以共享全局变量,多进程不能 多线程中,所有子线程的进程号相同,多进程中,不同的子进程进程号不同 线程共享内存空间:进程的内存是独立的 同一个进程的线程之间可以直接交流:两个进程想通信,必须通过 ...

  4. Python使用ORM控制MongoDB(MongoEngine)

    简介: MongoEngine是一个对象文档映射器(ODM),相当于一个基于SQL的对象关系映射器(ORM) pymongo来操作MongoDB数据库,但是直接把对于数据库的操作代码都写在脚本中,这会 ...

  5. R-barplot()

    barplot这个函数啊...坑...度娘的很多解决方案都不对,只好重新看回manual再做测试== 本文参考的是: https://stat.ethz.ch/R-manual/R-devel/lib ...

  6. The 2018 ACM-ICPC Chinese Collegiate Programming Contest Fight Against Monsters

    #include <iostream> #include <cstdio> #include <cstring> #include <string> # ...

  7. selenium2常用API介绍

    我们模拟web操作都是基于元素来操作的,我们首先要先确定元素,然后这个元素下对应的方法就可以看WebElement的方法. 1.点击操作 WebElement button=driver.findEl ...

  8. PYday16&17-设计模式\选课系统习题

    1.设计模式:对程序做整体得规划设计,这样做是为了更好的实现功能,使代码的可扩展性更好有27种常见的设计模式.流行的设计模式参考书:GoF设计模式.大话设计模式设计模式是为了更好的实现模块间的解耦,便 ...

  9. Selenium WebDriver- 显式等待

    推荐使用显示等待,元素出现就不会等待而继续执行了.节省时间. #encoding=utf-8 import unittest import time from selenium import webd ...

  10. 【JavaScript】关于 eval()执行JavaScript语句的一次实验测试

    实验主题: eval() 函数可以计算某个字符串,并执行其中的 JavaScript 代码.该函数只接受原始字符串作为参数,如果 string 不是原始字符串,那么该方法将不作任何的改变的返回.因此请 ...