1030 JSOI2007 文本生成器

AC自动机加DP即可。

1031 JSOI2007 字符加密Cipher

后缀数组即可。

1032 JSOI2007 祖码Zuma

数据有问题。

设\(f(l,r)\)为消去\([l,r]\)的石子的次数。

错(biao)误(cheng)的做法,没有考虑以下情况:

5
1 2 1 3 1

正确答案:

4

错(biao)误(cheng)答(shu)案(chu):

7

1033 ZJOI2008 杀蚂蚁antbuster

这题做到我眼泪狂奔,大约用了6小时!

不过也透露出了许多问题!!总结如下:

  1. atan2的用法,注意,是atan2(y, x)

2.注意细节

错误代码1

double p = ant[i].x - x, q = ant[i].y - y;
p = p * cos(at) + q * sin(at);
q = q * cos(at) - p * sin(at);

不要告诉我看不出来哪里错了。

错误代码2

void clearAnt() {
int i = 0;
while (i < cntAnt) {
if (ant[i].hp < 0) {
if (i == withCake) withCake = -1;
// if (withCake != -1 && withCake >= i) withCake --; // 加上这句就对了
mapAnt[ant[i].x][ant[i].y] = false;
cntAnt --;
for (int j = i; j < cntAnt; j ++)
ant[j] = ant[j + 1];
}
else i ++;
}
}

以后写程序要不要把每个变量都过一遍呢?

还有一些题目中的细节:

  • 注意是“顺时针”还是“逆时针”。
  • 注意如果将每只蚂蚁在洞口出现的时间作为它的活动时间的第1秒所有蚂蚁的年龄加1。是两回事,也就是说活动时间和年龄是不同的。
  • 一只蚂蚁不能移动却在蛋糕上,也会扛上蛋糕。

题外话:

hwd在冬令营说几何题不要在乎时间复杂度,于是我在判断线段和圆是否有交时用了旋转的方法,结果在本地测超了0.1s。

1034 ZJOI2008 泡泡堂BNB

QAQ

贪心的方法如下:

int solve(int A[], int B[]) {
sort(A, A + n);
sort(B, B + n);
int ret = 0;
int low = 0, high = n - 1;
int low2 = 0, high2 = n - 1;
while (low <= high) {
// step 1
while (low <= high && A[low] > B[low2]) {
low ++, low2 ++;
ret += 2;
}
// step 2
while (low <= high && A[high] > B[high2]) {
high --, high2 --;
ret += 2;
}
// step 3
if (low <= high) {
if (A[low] == B[high2]) ret ++;
low ++, high2 --;
}
}
return ret;
}

这题我不会做,在网上找题解都是只有代码(如上,是求A队最大得分的),个个都说是简单的贪心,为什么我就不觉得呢。

后来,根据这个贪心的方法,脑补出了证明:

首先按能力排序,这时候可以从能力弱的开始贪心。下面小写字母表示A队的,大写就是B队的。

设\(x\)、\(X\)是能力最弱的,\(y\)、\(Y\)是最强的。

如果$ x > X $,那么必然让他们对打,得\(2\)分。

如果$ x < X \(,那么就让\)x\(和\)Y\(打。
上面两个贪心都很显然,头疼的是\)x=X$的情况:

假如我们让\(x\)和\(X\)对打得\(1\)分。

....接着如果$ x'>X' $,那么必然让他们对打,得\(2\)分。继续,直到$ x' \leq X' \(。
....如果\) x'<X' \(,那么就让\)x'\(和\)Y\(打。这个时候我们可以调整为\)x\(和\)Y\(打,\)x'\(和\)X\(打,这样更优!
....如果相等,如果打的话,那么可以调整为\)x\(和\)X'\(打,\)x'\(和\)X\(打,这样更优!如果不打的话,假设\)x'\(最后和\)Z\(打,可以调整为\)x\(和\)Z\(打,\)x'\(和\)X$打,这样更优!也就是说,不管打不打,经过调整后都变得更优!

综上,如果除去\(x\)和\(X\)后,能够一直赢下去就让他们打,否则让\(x\)和\(Y\)打。得证。

1035 ZJOI2008 Risk

这题对着数据该才过TAT。

首先求出每个军队的外围的轮廓,这个可以枚举每一条边然后不断求下一条边,直到形成一个环。

至于如何求下一条边,扫描一下atan2的值就好。



黑色是当前的边,紫色是下一条边,灰色是其他边,我们按照红色箭头的方向扫描到的第一条边就是下一条边。

除此之外,我居然忘记了一个特殊情况,就是一个国家包含另外一个国家(其实这个情况应该很显然啊,为什么我会忘记呢?)。

假设我们要判断国家A被哪个国家包含且发生战争,我们只要找到一个面积最小的包含国家A的国家就可以了。

调到这里,心想要A了吧,发现还有特殊情况:

按照上面的算法,A和B是要发生战争的,但事实上不是这样的。于是又加了一个特判:如果国家的四周都有国家,那么它是不会被其他国家包含的。

虽然最后A了,但是总觉得还有什么特殊情况没考虑到,有人能告诉我吗,谢谢。

1036 ZJOI2008 树的统计Count

直接树链剖分,不过source那里写着分治,不知道是怎么做的?

1037 ZJOI2008 生日聚会

把男生看成\(1\),女生看成\(-1\),得到部分和\(s_i\)。如果存在\(i,j\),\(j < i\),使得$k < |s_i - s_j| $ 或者\(k < |s_i|\)那么就是不合法的方案。

然后DP,记\(dp(i, s, min, max)\)。

1038 ZJOI2008 瞭望塔

直接半平面交即可。

1039 ZJOI2008 无序运动Movement

数据有误,偷懒不做。

bzoj 1030-1039的更多相关文章

  1. BZOJ 1030: [JSOI2007]文本生成器 [AC自动机 DP]

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3953  Solved: 1614[Submit][Stat ...

  2. bzoj 1030 [JSOI2007]文本生成器(AC自动机+DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1030 [题意] 给n个小串,随机构造一个长为m的大串,一个串合法当且仅当包含一个或多个 ...

  3. BZOJ 1030 [JSOI2007]文本生成器

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2624  Solved: 1087[Submit][Stat ...

  4. BZOJ 1030 [JSOI2007]文本生成器(AC自动机)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1030 [题目大意] 求出包含任意一个给定串的串数量 [题解] 我们求出不包含任意一个给 ...

  5. bzoj 1030 ac自动机

    比较容易看出来先建立ac自动机,然后在自动机上做DP,设w[0..1][i][j]为当前不包括/包括字典中的字符串,当前在自动机中走到第i个节点,完成的文本的长度为j的方案数,那么比较容易的转移w[i ...

  6. BZOJ 1030 文本生成器 | 在AC自动机上跑DP

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=1030 题解: 鸽 #include<cstdio> #include<al ...

  7. bzoj 1030: [JSOI2007]文本生成器 (ac自己主动机上的dp)

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2635  Solved: 1090 [id=1030&qu ...

  8. 【BZOJ 1030】[JSOI2007]文本生成器

    [题目链接]:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1030 [题意] [题解] /* 先把AC自动机搞出来; 然后利用AC自动机,把 ...

  9. BZOJ 1030 【JSOI2007】 文本生成器

    Description JSOI交给队员ZYX一个任务,编制一个称之为"文本生成器"的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生 ...

  10. 【BZOJ 1030】【JSOI 2007】文本生成器 AC自动机+递推

    一直不理解到底怎么做啊,想了好久$TwT$ 最后终于明白了为什么找到第一个满足条件的$fail$就计算,因为避免重复,这个回答,,, 然后$root$下面要接上26个节点,这里26个字母中不在字典内的 ...

随机推荐

  1. NSUserDefaults概述

    原创,转载请注明原文:NSUserDefaults概述  By Lucio.Yang 首先,iOS中有四种存储数据的方式-对比iOS中的四种数据存储 NSUserDefaults是其中很常用的一种.N ...

  2. oracle去除字符串中间的空格

    update AC01 A set A.AAC003 = REGEXP_REPLACE(A.AAC003, '( ){1,}', '') WHERE A.AAC002 IN (SELECT AAC00 ...

  3. .NET中DLL“没有可放置在工具箱的组件”—FreeTextBox

    主要针对在VS2012.VS2013的工具箱中,通过“选择项”添加自定义的Dll,如.NET类型时,出现“没有可放置在工具箱的组件”问题的常见解决方案.例如在线编辑工具:FreeTextBox 解决方 ...

  4. Python每日一练(3):爬取百度贴吧图片

    import requests,re #先把要访问URL和头部准备好 url = 'http://tieba.baidu.com/p/2166231880' head = { 'Accept': '* ...

  5. [代码搜索]OpenGrok搭建简易教程

    面对着动辄几十GB且随时不断更新的大型代码,我们产生了以下需求:1.快速搜索代码2.代码存放于本地/服务器3.代码可跳转4.跨平台5.易于维护... 显然SourceInsight.ctags.gre ...

  6. Android studio dabao

    首先肯定是配置gradle,百度一下就知道了,我的是mac下配置的,sudo vim ~/.bash_profile ,然后设置环境变量 GRADE_HOME=/Users/Admin/gradle; ...

  7. java如何把char型数据转换成int型数据(转)

    一字符串,String=“2324234535”:把第i个数取出来时是char型的:char temp=String.charAt(i)如何把char型转换成int型?我需要求个尾数之和,如:123的 ...

  8. 在 Windows Azure 网站 (WAWS) 上对 Orchard CMS 使用 Azure 缓存

    编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写. 如果您当前的 OrchardCMS 网站在 Windows Azure 网站 ...

  9. NOIP2015

    现在来总结一下. 斗地主 这题的题目描述感觉不太清晰,当时有很多人去问,但都没有得到任何回应.好吧,虽然我也是似懂非懂,但是就算看清楚了题目又能怎么样呢. 首先这题只能够搜索吧,或者说是DP,不过有很 ...

  10. fedora audacious 不能播放音乐

    采用命令sudo dnf search audacious 可以看到 audacious-plugins-freeworld-mp3.x86_64 : MP3 playback plugin for ...