T1 辣鸡(ljh)

就是一道分类讨论的暴搜,外加一丢丢的减枝,然而我挂了,为啥呢,分类讨论变量名打错,大于小于号打反,能对才怪,写了sort为了调试就注释了,后来忘了解开,小减枝也没打。但是这道题做了2个小时不止,T2T3完全挤得没时间。做这道题只感觉心累。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
struct node
{
ll a,b,c,d,w;
}q[];
ll n,ans,mr;
bool cmp(node x,node y) {return x.a==y.a?x.b<y.b:x.a<y.a;}
ll read()
{
ll aa=,bb=;char cc=getchar();
while(cc>''||cc<''){if(cc='-') bb=-;cc=getchar();}
while(cc<=''&&cc>=''){aa=aa*+cc-'';cc=getchar();}
return aa*bb;
}
int main()
{
n=read();
for(ll i=;i<=n;i++){
q[i].a=read(),q[i].b=read(),q[i].c=read(),q[i].d=read();
q[i].w=(q[i].c-q[i].a)*(q[i].d-q[i].b)*;
}
sort(q+,q+n+,cmp);
for(ll i=;i<=n;i++){
ll a=q[i].a,b=q[i].b,c=q[i].c,d=q[i].d;
ans+=q[i].w;mr=c;
for(ll j=i+;j<=n;j++){
ll x1=q[j].a,y1=q[j].b,x2=q[j].c,y2=q[j].d;
if(x1>mr+) break;
mr=max(mr,x2);
if(d==y1-){
if(a<=x1&&x1<=c&&c<=x2){
ll chong=c-x1;
ans+=chong*;
if(c<x2) ans++;
if(a<x1) ans++;
}
else if(x1<=a&&a<=x2&&x2<=c){
ll chong=x2-a;
ans+=chong*;
if(c>x2) ans++;
if(x1<a) ans++;
}
else if(x1<=a&&a<=c&&c<=x2){
ll chong=c-a;
ans+=chong*;
if(x1<a) ans++;
if(c<x2) ans++;
}
else if(a<=x1&&x1<=x2&&x2<=c){
ll chong=x2-x1;
ans+=chong*;
if(a<x1) ans++;
if(x2<c) ans++;
}
else if(x2==a-) ans++;
else if(c==x1-) ans++; }
else if(y2==b-){
if(x1<=a&&a<=x2&&x2<=c){
ll chong=x2-a;
ans+=chong*;
if(x1<a) ans++;
if(x2<c) ans++;
}
else if(a<=x1&&x1<=c&&c<=x2){
ll chong=c-x1;
ans+=chong*;
if(c<x2) ans++;
if(a<x1) ans++;
}
else if(a<=x1&&x1<=x2&&x2<=c){
ll chong=x2-x1;
ans+=chong*;
if(x2<c) ans++;
if(a<x1) ans++;
}
else if(x1<=a&&a<=c&&c<=x2){
ll chong=c-a;
ans+=chong*;
if(c<x2) ans++;
if(x1<a) ans++;
}
else if(x2==a-) ans++;
else if(c==x1-) ans++;
}
else if(c==x1-){
if(y1<=b&&b<=y2&&y2<=d){
ll chong=y2-b;
ans+=chong*;
if(d>y2) ans++;
if(b>y1) ans++;
}
else if(b<=y1&&y1<=d&&d<=y2){
ll chong=d-y1;
ans+=chong*;
if(d<y2) ans++;
if(b<y1) ans++;
}
else if(y1<=b&&b<=d&&d<=y2){
ll chong=d-b;
ans+=chong*;
if(d<y2) ans++;
if(b>y1) ans++;
}
else if(b<=y1&y1<=y2&&y2<=d){
ll chong=y2-y1;
ans+=chong*;
if(y2<d) ans++;
if(b<y1) ans++;
}
}
else if(x2==a-){
if(b<=y1&&y1<=d&&d<=y2){
ll chong=d-y1;
ans+=chong*;
if(y2>d) ans++;
if(y1>b) ans++;
}
else if(y1<=b&&b<=y2&&y2<=d){
ll chong=y2-b;
ans+=chong*;
if(d>y2) ans++;
if(b>y1) ans++;
}
else if(y1<=b&&b<=d&&d<=y2){
ll chong=d-b;
ans+=chong*;
if(d<y2) ans++;
if(y1<b) ans++;
}
else if(b<=y1&y1<=y2&&y2<=d){
ll chong=y2-y1;
ans+=chong*;
if(d>y2) ans++;
if(b<y1) ans++;
}
}
}
}
printf("%lld\n",ans);
}

辣鸡(ljh)

T2 模板(ac)

前30分暴力往上翻(dfs往下找也可以,时间稍长),中间40分雨天的尾巴线段树动态开点+线段树合并(考试压根没看见这40分的情况,数据范围一定要看的不),最后30分暂时还没看懂,先留着。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#define ll long long
#define MAX 100100
using namespace std;
struct node
{
ll to,nxt;
}t[MAX*];
struct tree
{
ll l,r,sum;
}h[MAX*];
ll n,m,q,tot,cnt,nxt[MAX*],w[MAX],a[][],ans[MAX],fa[MAX];
ll root[MAX],num;
map<ll,ll>mp;
bool vis[MAX],vv[][],flag;
ll read()
{
ll aa=,bb=;char cc=getchar();
while(cc>''||cc<''){if(cc=='-') bb=-;cc=getchar();}
while(cc<=''&&cc>=''){aa=aa*+cc-'';cc=getchar();}
return aa*bb;
}
void add(ll x,ll y)
{
t[++tot].to=y;
t[tot].nxt=nxt[x];
nxt[x]=tot;
}
void dfs(ll x)
{
for(ll i=nxt[x];i;i=t[i].nxt){
ll y=t[i].to;
if(vis[y]) continue;
vis[y]=;
fa[y]=x;
dfs(y);
}
}
void find(ll x,ll c)
{
while(x!=){
if(w[x]){
w[x]--;
if(!vv[x][c]){
vv[x][c]=;
ans[x]++;
}
}
x=fa[x];
}
}
void update(ll x)
{
h[x].sum=h[h[x].l].sum+h[h[x].r].sum;
}
void insert(ll &rt,ll l,ll r,ll pos)
{
if(!rt) rt=++num;
if(l==r){
h[rt].sum=;
return;
}
ll mid=(l+r)>>;
if(pos<=mid) insert(h[rt].l,l,mid,pos);
else insert(h[rt].r,mid+,r,pos);
update(rt);
}
ll merge(ll x,ll y,ll l,ll r)
{
if(!x||!y) return x+y;
if(l==r) return x;
ll mid=(l+r)>>;
h[x].l=merge(h[x].l,h[y].l,l,mid);
h[x].r=merge(h[x].r,h[y].r,mid+,r);
update(x);
return x;
}
void Dfs(ll x)
{
for(ll i=nxt[x];i;i=t[i].nxt){
ll y=t[i].to;
if(vis[y]) continue;
vis[y]=;
Dfs(y);
root[x]=merge(root[x],root[y],,m);
}
ans[x]=h[root[x]].sum;
}
int main()
{
n=read();
ll u,v;
for(ll i=;i<n;i++){
u=read();v=read();
add(u,v);
add(v,u);
}
for(ll i=;i<=n;i++){
w[i]=read();
if(w[i]!=) flag=;
}
if(n<=){
vis[]=;
dfs();
m=read();
for(ll i=,x,c;i<=m;i++){
x=read();c=read();
if(!mp[c]) mp[c]=++cnt;
find(x,mp[c]);
}
q=read();
for(ll i=,x;i<=q;i++){
x=read();
printf("%lld\n",ans[x]);
}
return ;
}
if(!flag){
m=read();
for(ll i=,x,c;i<=m;i++){
x=read();c=read();
if(!mp[c]) mp[c]=++cnt;
insert(root[x],,m,mp[c]);
}
vis[]=;
Dfs();
q=read();
for(ll i=,x;i<=q;i++){
x=read();
printf("%lld\n",ans[x]);
}
return ;
}
}

模板(ac) 70分骗分

T3 大佬(kat)

概率与期望,看了眼题就跑了,但据大佬们说“这是道水题”,“这是最简单的题”,“我30分钟看题+ac”(都是神仙)。(我确实是不会)考试看题都看错了。。。

这是一道假期望。。。

f[i][j]表示前i道题,最大难度为j的方案数,两种情况转移:1.第j道题的难度是j。所以前面的题难度只要不大于j就可以(看题看题看题),f[i][j]=Σf[i-1][l] (l<j);2.第i题的难度小于j,那么前i-1题里就必须要有j难度的,且第i题有j种选择方案即(1~j-1),f[i][j]=f[i-1][j]*j,转移就行。这n道题,可以做(n-k+1)天,这(n-k+1)天是相对独立的,所以求出的方案数×天数就是合法方案数,总的方案数就是mk,乘上代价就是期望。

#include<iostream>
#include<cstdio>
#define ll long long
#define mod 1000000007
using namespace std;
ll n,m,k,w[],f[][],up,down;
ll quick(ll x,ll p)
{
ll ans=;
while(p){
if(p&) ans=ans*x%mod;
x=x*x%mod;
p>>=;
}
return ans%mod;
}
int main()
{
scanf("%lld%lld%lld",&n,&m,&k);
for(ll i=;i<=m;i++) scanf("%lld",&w[i]);
if(k>n){
puts("");
return ;
}
for(ll i=;i<=m;i++) f[][i]=;
for(ll i=;i<=k;i++){
for(ll j=;j<=m;j++){
(f[i][j]+=f[i-][j]*j)%=mod;
for(ll l=;l<j;l++)
(f[i][j]+=f[i-][l])%=mod;
}
}
for(ll i=;i<=m;i++) (up+=f[k][i]*w[i]%mod)%=mod;
down=quick(m,k);down=quick(down,mod-);
printf("%lld\n",up*down%mod*(n-k+)%mod);
}

大佬(kat)

7.29 NOIP模拟测试10 辣鸡(ljh)+模板(ac)+大佬(kat)的更多相关文章

  1. [NOIP模拟测试10]辣鸡(ljh) 题解

    首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排 ...

  2. 2019.7.29 NOIP模拟测试10 反思总结【T2补全】

    这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...

  3. NOIP模拟测试10「大佬·辣鸡·模板」

    大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...

  4. noip模拟测试10

    T1 这道题在考场上想到了二维前缀和,就是自己算前缀和的方式有点麻烦,导致花的时间较长,但还是成功搞了出来. 因为暴力计算的话需要不停枚举左上角和右下角的 i ,j, 时间复杂度为 n^4 ,我当时就 ...

  5. [CSP-S模拟测试]:辣鸡(ljh) (暴力)

    题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...

  6. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  7. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  8. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  9. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

随机推荐

  1. multer 文件后缀名

    我的代码是这样写的. var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uplo ...

  2. pywinauto教程2

    一.环境安装 1.命令行安装方法 pip install pywinauto==0.6.7 2.手动安装方法 安装包下载链接:pyWin32: python调用windows api的库https:/ ...

  3. Comment file

    /// This is the head comment of a file. /*********************************************************** ...

  4. flask 第一章

    1.安装flask 首先安装python的虚拟环境,每个环境之间的包并不会产生冲突 ,相当于一个单独的 小空间. 由于自己使用的是windows开发环境  所以安装虚拟包的命令如下 pip  inst ...

  5. POJ 1094 (传递闭包 + 拓扑排序)

    题目链接: POJ 1094 题目大意:有 1 ~ N 个大写字母,且从 A 开始依次 N 个.再给你 M 个小于的关系,比如 A < B ,让你判断三种可能: 1.在第 i 个关系罗列之后,是 ...

  6. 【linux】glibc升级

    glibc升级 步骤如下: 1.下载解压glibc wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz tar zxvf glibc-2.18.ta ...

  7. Elasticsearch搜索调优权威指南 (1/3)

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/qwkZKLb_ghmlwrqMkqlb7Q英文原文:https://qbox.io/blog/ela ...

  8. 《 .NET内存宝典》阅读指南 - 第1章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.

  9. 工作笔记--adb命令篇

    1.抓log方法 (bat文件) mkdir D:\logcatset /p miaoshu=请描述操作:adb logcat -v threadtime > D:\logcat\%miaosh ...

  10. 前端开发JS——数组

    25.数组 1)声明数组: ①构造函数创建数组 var arr = new Array(); console.log(arr):        //[]   var arr = new Array(2 ...