【BZOJ2709】水的二分加验证。可是好像被读入萎到了。。。

【BZOJ3229】强大的算法见此。被机房的一堆大神“推荐”。于是被坑了。。。写了一个下午。。。

【BZOJ3631】这道题给我的启发是:要多想想算法。

開始一直在打树链剖分,打到一半忽然在众神犇的提(bi)示(shi)下。发现有O(N)的方法。试想:假设要支持区间改动(加减),最后再查询,能够用什么方法?固然,线段树和树状数组等等都能够,可是最好的显然是类似于前缀和的思想。比方在L~R加上一个数,能够再L处+K。在R+1处-K。

然后最后的时候从头到尾扫过去、累加就可以。

那么这道题实际上是在树上做这个类似的操作。当然,求LCA的时候要用tarjan,否则效率又变回去了。

下面是代码。wri是为了调整,最后输出的是wri和sum的和。

void bfs(int k)
{
for (int i=1;i<n;i++)
{
int x=opt[i],y=opt[i+1];
sum[ans[i]]-=2;
sum[x]++;sum[y]++;
wri[y]--;wri[ans[i]]++;
}
int h=0,t=1;q[1]=1;
while (h<t)
{
int now=q[++h];
for (int i=end[now];i;i=a[i].next)
{
int go=a[i].go;if (go==fa[now]) continue;
q[++t]=go;
}
}
for (int j=t;j;j--)
{
int k=q[j];
sum[fa[k]]+=sum[k];
}
}

【BZOJ3609】打表找规律。据说是版权问题?就不说了。

【BZOJ1212】啊哈哈哈。又被我DP使过去啦!

【BZOJ2823&1666&1667】曾经查来的题解。。。

好像是谁的论文来着。

初始圆为1,2作为直径的圆。
For
i=2 to n
If
i不在当前圆内 then
   把当前圆设为以1,i为直径的圆
    For
j=2 to i-2
    If
j不在当前圆内 then
    把当前圆设为以j,i为直径的圆{确定初始圆}
        For
k=1 to j-1
        If
k不在当前圆内 then
           把当前圆设为I,j,k三点确定的圆。{确定三点确定的圆}
输出当前圆

【BZOJ1802】真的是好题。我们先来考虑在开头的时候放的尽量的少。

①假设有两个相邻的红格。那么我能够在放好后之后到达不论什么一个点!于是第一问就是0。至于第二问。找出全部相邻的红格,直接用DP往左右扫。

 for (int i=k-1;i;i--)
f[i]=min(f[i],f[i+1]+f[i+2]);

②否则必须在偶数格放棋子。扫一遍就可以。

for (i=2;i<n;i++)
if (a[i]&a[i+1]) {flag=1;break;}
if (!flag)
{
for (i=2;i<n;i++)
if (!(i&1)) a[i]?ans2++:ans1++;
printf("%lld\n%lld",ans1,ans2);
return 0;
}
memset(f,60,sizeof(f));
for (i=1;i<=n;i++) if (a[i]) f[i]=1;
for (i=2;i<n;i++)
if (a[i]&a[i+1]) bfs_left(i),bfs_right(i+1);
for (i=2;i<n;i++)
if (!(i&1)) ans2+=f[i];

【BZOJ3574】题解传送门(跪SYC大爷!)

【BZOJ1873】写的天昏地暗!

我认为有必要贴一下代码。

#include<cstdio>
#include<cstring>
#include<map>
#include<string>
#define N 20005
#define P 41
using namespace std;
map<string,int>pre;
const char Num[11][P]={"","","","killing spree","dominating","mega kill",
"unstoppable","wicked sick","monster kill","godlike","beyond godlike"};
const char Wri[11][P]={"","","","is on a killing spree!","is dominating!",
"has a mega kill!","is unstoppable!","is wicked sick!","has a monster kill!",
"is godlike!","is beyond godlike. someone kill him!"};
char a[P],b[P],Time[P],ch[P];
int belong[N],num[N],kill[N],last[N],death[2];
int A,B,now_Time,ok_kill,ALL,n,i,Q;
bool check()
{
A=pre[a];B=pre[b];
return A&&B&&A!=B;
}
void get_Time(){now_Time=(Time[0]*10+Time[1])*60+Time[3]*10+Time[4];}
void First()
{
if (A==B) {printf("%s has killed himself.\n",a);return;}
if (!ok_kill) {printf("%s has been killed by %s.\n",b,a);return;}
if (num[B]>=3) {printf("%s has just ended %s's %s.\n",a,b,Num[num[B]<=10? num[B]:10]);num[B]=0;return;}
printf("%s pawned %s's head.\n",a,b);num[B]=0;
if (ok_kill&&!ALL) ALL=1,printf("%s just drew first blood.\n",a);
}
void Second()
{
if (!ok_kill) return;
num[A]++;
if (num[A]>=3)
{
if (num[A]<=10) printf("%s %s\n",a,Wri[num[A]]);
else printf("%s %s\n",a,Wri[10]);
}
}
void Third()
{
if (!ok_kill) return;
if (kill[A]&&now_Time<=last[A]+10)
{
if (kill[A]==1) printf("%s just got a Double Kill!\n",a);
else printf("%s just got a Triple Kill!\n",a);
}
else kill[A]=0;
kill[A]++;last[A]=now_Time;
}
void Fourth()
{
if (!ok_kill) return;
int now=belong[B];death[now]++;death[now^1]=0;
if (death[now]>=5)
printf("The %s is OWNING!\n",!now?"Scourge":"Sentinel");
}
int main()
{
freopen("1873.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%s%d",a,&belong[i]),pre[a]=i;
scanf("%d",&Q);ALL=0;
while (Q--)
{
scanf("%s%s%s%s%s%s",Time,b,ch,ch,ch,a);
ok_kill=check();get_Time();
First();Second();Third();Fourth();
}
return 0;
}

【BZOJ1925*】至今还认为奇怪的DP(递推、组合数)。有空去看看。

【BZOJ1819】好题目!

用dfs序的性质。树状数组维护,还要求LCA。開始忘了怎么在dfs序的树状数组中维护某个点的子树的信息,去问了RZZ,后来发现根本就是傻X问题啊。

BZOJ 刷题记录 PART 6的更多相关文章

  1. BZOJ 刷题记录 PART 5

    拖了好久才写的. [BZOJ2821]接触分块大法.这道题略有点新颖.首先我们先分块.然后统计每块中每一个数出现的个数. 以下是联立各个方块,预处理出第I个方块到第J个方块出现正偶数次数的个数. fo ...

  2. $2019$ 暑期刷题记录1:(算法竞赛DP练习)

    $ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...

  3. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  4. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  5. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  6. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  7. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  8. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  9. 刷题记录:[XNUCA2019Qualifier]EasyPHP

    目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

随机推荐

  1. 施用 maven shade plugin 解决 jar 或类的多版本冲突

    施用 maven shade plugin 解决 jar 或类的多版本冲突   使用 maven shade plugin 解决 jar 或类的多版本冲突java 应用经常会碰到的依赖的三方库出现版本 ...

  2. 金蝶盘点机条码数据採集器PDA,WIFI已经连接,可是PDA应用程序还是网络初始化不成功?

    PDA任务栏里显示了小电脑.小电脑也是绿色的,为什么PDA还是网络初始化不成功呢? 1.须要检查下server的[PDA后台服务程序]是否打开?假设没有打开请打开[PDA后台服务程序]. 2.须要检查 ...

  3. Servlet的学习(三)

    本篇接上一篇<Servlet的学习(二)> ,主要讲诉如何使用MyEclipse来开发Servlet,和导入Servlet所需要的源代码. 现在我们来创建一个web应用,就叫[myserv ...

  4. boost::asio网络传输错误码的一些实验结果(recv error_code)

    错误码很重要,可以由此判断网络连接到底发生了神马事情,从而驱动高层逻辑的行为.只有笼统的错误码判断的网络层是不够规范的,鄙人觉得有些错误码还是需要在网络层就区分开的,特此记录一些当前实验的错误码以及发 ...

  5. uva 12096

    优先队列,主要是STL应用所以复制一下 #include <iostream> #include <cstdio> #include <cstdlib> #incl ...

  6. 使用python进行加密解密AES算法

    使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...

  7. Mono for Android 初学遇到的问题

    1.搭建开发环境: 在win7系统中,VS2012 可以用 C# 开发Android 应用程序,mono for andriod 破解成功. 在win server 2008 系统中 破解不成功,具体 ...

  8. linux下编译原理分析

    linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就能够执行:在这个简单的命令后面隐藏了很多复杂的过程,这个过程包含了以下的步骤: ================= ...

  9. 《Windows核心编程》第一讲 对程序错误的处理

    一个Windows函数通常都有一个有意义的返回值类型,它标志着这个函数的运行状态,即函数运行成功与否.windows常用的函数类型如下图: 从系统内部来讲,当一个Windows函数检测到一个错误时,它 ...

  10. find . / -newer oldest_file.txt ! -newer newest_file.txt

    如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项. 它的一般形式为: $ find . / -newer oldest_file.txt ! -newer newe ...