去年的比赛了,然而今天才改好。

  总体难度适中,有大佬AK。

  主要是自己SB第二题没想出来,然后又是可怜的100来分。

  T1 一道二分+数学的题目。

  我们可以二分叫的次数,然后用公式(等差数列,公差都是zi)算一个最大的可行的数目。

  最后把多余的加上去即可。

  注意当xi,yi都等于0的情况。

  CODE

#include<cstdio>
#include<cmath>
using namespace std;
typedef long long LL;
LL ans,n,t,t_2,t_s,x,y,z,res,l,r,mid,temp;
inline void read(LL &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
int main()
{
freopen("brute.in","r",stdin); freopen("brute.out","w",stdout);
read(n); read(t); t_2=t*;
while (n--)
{
read(x); read(y); read(z);
l=; if (x+y) r=t/(x+y); else r=(LL)sqrt(t_2/z)+;
temp=*x+*y;
while (l<=r)
{
mid=l+r>>;
if (mid*(temp+mid*z-z)<=t_2) res=mid,l=mid+; else r=mid-;
}
ans+=res*(*y+z*res-z)/;
t_s=t-res*(temp+res*z-z)/-x;
if (t_s>) ans+=t_s;
}
printf("%lld",ans);
return ;
}

  T2 标算用了神奇的。。。数据结构来打。

  然而当时A了这道题的都是用超级简单的方法水过的。

  现在只讨论玄学算法(即超级水过的算法)。

  由于题目不要求分别输出每一次的值,所以我们只需要先把全部操作做完,最后1次DFS遍历一下每个点一共访问了几次。

  第1次操作ans+1; 第2次 ans+2; 第3次 ans+3;  第n次 ans+n;

  然后又是玄学的等差数列求和即可。ans+=(n+1)*n/2;

  CODE

#include<cstdio>
#include<vector>
using namespace std;
typedef long long LL;
const int N=;
vector <LL> a[N];
LL n,m,i,x,ans,t[N],f[N];
struct io
{
char op[ << ] , * s;
io()
{
freopen( "chiye.in" , "r" , stdin );
freopen( "chiye.out" , "w" , stdout );
fread( s = op , , << , stdin );
}
inline void read(LL &u)
{
u = ;
while( * s < ) s++;
while( * s > )
u = u * + * s++ - ;
}
} ip;
#define read ip.read
inline void dfs(int k)
{
f[k]+=t[k];
for (int i=;i<a[k].size();++i)
f[k]+=t[a[k][i]],f[a[k][i]]+=t[k],dfs(a[k][i]);
}
int main()
{
read(n); read(m);
for (i=;i<=n;++i)
{
read(x);
a[x].push_back(i);
}
while (m--)
{
read(x);
t[x]++;
}
dfs();
for (i=;i<=n;++i)
ans+=f[i]*(f[i]+)/;
printf("%lld",ans);
return ;
}

  (fread模板是免费提供的)

  T3 Tarjan缩点+树形DP

  就这道题改了很久,到现在还是因为不会Tarjan缩点(打了DFS)TLE了4个点。

  首先前30分想怎么暴力怎么暴力。

  然后发现因为这个图只有简单环,所以左右的点可以分成2种:圆点和方点。

  简单地说,圆点就是原来的图中不包括在任何一个环中的点;方点就是把一个简单环缩成的一个点。如下图:

变成

  然后我们发现一个眼镜的两边都是方点,如果两个端点确定,那么这两个点可以组成的眼镜数量就是2^(两个端点之间的方点个数);

  接下来又有50——70分可以暴力DFS了。

  如果想得满分,就得考虑树形DP,设f[x]为以x为根的子树(包括x)一共有多少“一半的眼镜”(即只有一个端点的)

  然后状态转移 :

  f[x] = Σ( f[ son[x] ] );

  如果x是圆点,则f[x]不变

  如果x是方点,则f[x] = f[x] * 2 + 1(可以走两次再加上它自己)

  每次做的时候更新ans即可。具体看代码。

  CODE

#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int N=,mod=;
vector <int> a[N],b[N];
int n,m,f[N],num[N],pre[N],i,j,tot,x,y;
bool kinds[N],vis[N],use[N];
long long ans;
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline void print(int k)
{
if (pre[k]) print(pre[k]);
num[k]=tot;
use[k]=;
}
inline void find(int s,int k)
{
for (int i=;i<a[k].size();++i)
if ((!vis[a[k][i]])&&(!use[a[k][i]])) pre[a[k][i]]=k,vis[a[k][i]]=,find(s,a[k][i]),vis[a[k][i]]=; else
if (a[k][i]==s&&a[k][i]!=pre[k])
{
print(k);
kinds[tot]=;
return;
}
}
inline int dp(int k)
{
vis[k]=;
for (int i=;i<b[k].size();++i)
{
int now=b[k][i];
if (vis[now]) continue;
int temp=dp(b[k][i]);
ans=(ans+f[k]*(kinds[k]?2ll:1ll)*temp)%mod;
f[k]=(f[k]+temp)%mod;
}
if (kinds[k]) ans=(ans+f[k])%mod,f[k]=(f[k]*+)%mod;
return f[k];
}
int main()
{
freopen("dark.in","r",stdin); freopen("dark.out","w",stdout);
read(n); read(m);
for (i=;i<=m;++i)
{
read(x); read(y);
a[x].push_back(y); a[y].push_back(x);
}
for (i=;i<=n;++i)
if (!use[i]) ++tot,num[i]=tot,use[i]=,kinds[tot]=,memset(pre,,sizeof(pre)),vis[i]=,find(i,i),vis[i]=;
for (i=;i<=n;++i)
for (j=;j<a[i].size();++j)
if (num[i]!=num[a[i][j]]) b[num[i]].push_back(num[a[i][j]]);
dp();
printf("%lld",ans);
return ;
}

EZ 2017 12 30 2018noip第二次膜你赛的更多相关文章

  1. EZ 2017 12 17初二初三第一次膜你赛

    以后平时练习还是写一写吧. (题目搞来搞去太烦了,直接PDF存起来) T1 水题(???),主要是数据水,正解是设一个阙值,然而根本没人打.(暴力出奇迹) CODE #include<cstdi ...

  2. 【2017.12.12】deepin安装U盘制作,支持 BIOS+UEFI,deepin_Recovery+Win PE

    U盘要求为 FAT32,MBR分区表 如果需要放 4GB 大文件,可以分两个分区,第一分区FAT32格式,放启动相关文件,第二个分区用 NTFS 格式,放其它资料. 最新 Win10 支持显示 U盘 ...

  3. 2017.12.21-JQuery

    作业:密码加强验证 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...

  4. 2017.12.25 Mybatis物理分页插件PageHelper的使用(二)

    参考来自: 官方文档的说明:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 上篇博客 ...

  5. 2015.12.29~2015.12.30真题回顾!-- HTML5学堂

    2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...

  6. Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50

    Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50 分类: 系统运维 查找包含BOM头的文件,命令如下: 点击(此处)折叠或打开 grep -r -I -l ...

  7. zero3- JPA http://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html

    1.很好的博客:http://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html 2. 最新的搬到github : http://holb ...

  8. Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)

    Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...

  9. [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞

    [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. ...

随机推荐

  1. Android5.x Notification应用解析

    Notification可以让我们在获得消息的时候,在状态栏,锁屏界面来显示相应的信息,很难想象如果没有Notification,那我们的qq和微信以及其他应用没法主动通知我们,我们就需要时时的看手机 ...

  2. Oracle EBS CST 成本请求报错

    (文档 ID 430533.1) When running CMCPAW, Periodic Actual Cost Worker,  an error is received in the logf ...

  3. SQL Server 请求失败或服务未及时响应。有关详细信息,请参见事件日志或其它适合的错误日志

    在打开数据库的时候,突然出现异常错误,然后我去关闭sql server 服务,然后重启服务的时候,不能重启,出现以下错误 “请求失败或服务未及时响应.有关详细信息,请参见事件日志或其它适合的错误日志” ...

  4. AD RMS企业文件版权管理

    AD RMS (AD权限管理服务)能够确保企业内部数字文件的机密性,例如,用户即使有权限读取受保护的文件,但是如果未被许可,就无法复制与打印该文件. AD RMS概述 虽然可以通过NTFS权限来设置用 ...

  5. S5700的Eth-Trunk端口汇聚(trunk实验)

    S5700的Eth-Trunk端口汇聚 链路汇聚和端口汇聚,就是端口聚合,交换机的堆叠是堆叠和端口聚合无关. 端口聚合概念:(包括二层端口聚合和三层端口聚合) 1.端口聚合IEEE标准是将最多16条链 ...

  6. 第 14 章 结构和其他数据形式(names)

    *--------------------------------- names1.c -- 使用指向结构的指针 ---------------------------------*/ #includ ...

  7. [ML学习笔记] 回归分析(Regression Analysis)

    [ML学习笔记] 回归分析(Regression Analysis) 回归分析:在一系列已知自变量与因变量之间相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,实现对新自变量得出因变量 ...

  8. SDN期末作业验收

    作业链接:https://edu.cnblogs.com/campus/fzu/SoftwareDefinedNetworking2017/homework/1585 负载均衡程序 1.github链 ...

  9. UML学生成绩管理系统需求分析

    学生成绩管理系统工作室高校教育工作的一项重要内容.教务管理工作是指学校管理人员按照一定的教育方针,运用先进的管理手段,组织.协调.指挥并指导各用户活动,一边高效率.高质量地完成各项教学任务,完成国家所 ...

  10. 使用mpVue开发小程序实战总结

    1.图形验证码接口返回base64格式的数据,使用image标签接收不显示问题. 解决方法: 使用wx.base64ToArrayBuffer和wx.arrayBufferToBase64转化一遍数据 ...