memset

2014-10-28 NOIP模拟赛

北城以北 提交于 2020-02-23 03:38:07
Porble 1 时间与空间之旅(tstrip.*) 题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship。spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship船长也成了最热门的职业之一。当然,要成为一名出色的船长,必须通过严格的考核,例如下面是最简单的问题中的一个。 用1~n的整数给n个星系标号,目前你在标号为1的星系,你需要送快递到标号为n的星系,星系之间由于存在陨石带,并不是都可以直连的。同时,由于超时空隧道的存在,在某些星系间飞行会出现时间静止甚至倒流,飞行时间为0或为负数。另外,由星系i到星系j的时间和由星系j到星系i的时间不一定是相同的。 在寄出日期之前收到快递被认为是不允许的,所以每部spaceship上都有一个速度调节装置,可以调节飞行的时间。简单来说其功能就是让所有两个星系间的飞行时间(如果可以直达)都增加或减少相同的整数值,你的任务就是调整速度调节器,找出一条用最短时间完成任务的路径,并且保证这个最短时间的值大于或等于0。 输入格式 输入文件包含多组数据,第1个数为T,表示数据的数量。 对于每一组数据,输入第1行为两个正整数N(2≤N≤100),E(1≤E≤N*(N-1)/2),为星系的个数和星系间飞行的路线数。然后E行,每行三个整数i,j和t(1≤i,j≤N,i≠j,-100000≤t≤100000)

hdu 1384 差分约束(SPFA实现)

北慕城南 提交于 2020-02-22 13:00:35
Problem: http://acm.hdu.edu.cn/showproblem.php?pid=1384 在每个区间[ai,bi]上至少选ci个元素组成集合Z,求Z最小时的元素个数 因为是求最小,所以差分约束转化为SPFA求最长路 每个ai,bi,ci转换成点ai指向点bi+1的边,边权为ci 求出最小的ai,Min,最大的bi,Max 加上(Max-Min+2)*2条有向边x->x+1(边权为0)x+1->x(边权为-1) x属于[Min,Max] 最后套上SPFA模版妥妥的 #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; #define MAXN 100010 int head[MAXN],n,m,Min,Max,dist[MAXN]; struct Edge{ int to,next,w; }e[MAXN*3]; void add_edge(int u,int v,int c){ e[m].to=v; e[m].w=c; e[m].next=head[u]; head[u]=m++; } void SPFA(int s){ bool vis[MAXN]; memset(vis,false,sizeof(vis)); for(int i

后缀自动机专题

一笑奈何 提交于 2020-02-17 15:49:10
如果不算pre指针的话后缀自动机就是一个DAG,这是它能很方便地进行dp的前提。 而pre指针返回什么呢,返回的就是上一个的前缀包含改结点所代表子串的那个后缀,和AC自动机上的fail指针很像,都是为了匹配。我目前学得不深,看不出和AC自动机的fail指针有什么区别,用起来也几乎一样。 相比于字典树和回文树,后缀自动机每个结点会有多个父结点,可以表示多种子串(从根节点到它的每条路径都是一个子串),因此子串的信息只能在路径中记录,比如长度,而该子串说记录的长度step,则是根结点到它的最远距离,而某个子串的长度就是该代表该子串的路径的长度了,并不一定是某个结点的step。 spoj1811 求两个串的最长公共子串的长度。 对A串建立后缀自动机,对B串进行匹配,如果匹配失败,沿着失败指针往回走到第一个能匹配的位置继续匹配(看起来似曾相识?没错,这不是AC自动机的过程吗。。。),当然如果到根节点还不能继续匹配,那就只有从头再来了。这里随时记录长度更新答案即可。 当然后缀数组也可以做,把两个串拼接起来,求lcp即可。。。然后后缀自动机好快。。。。在spoj上居然60ms过了。。。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a))

2017百度之星 资格赛

一曲冷凌霜 提交于 2020-02-15 15:02:34
1001 度度熊保护村庄 Accepts: 26 Submissions: 703 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村。 但是度度熊发现,这是一场旷日持久的战斗,所以度度熊决定要以逸待劳,保存尽量多的体力,去迎战哗啦啦村的战士。 于是度度熊决定派尽量多的人去休息,但是同时也不能松懈对喵哈哈村的保护。 换句话而言,度度熊希望尽量多的人休息,而且存在一个包围圈由剩下的人组成,且能够恰好的包围住喵哈哈村的所有住房(包括边界)。 请问最多能让多少个人休息呢? Input 本题包含若干组测试数据。 第一行一个整数n,表示喵哈哈村的住房数量。 接下来n行,每行两个整数(x1[i],y1[i]),表示喵哈哈村的住房坐标。 第n+1行一个整数m,表示度度熊的士兵数量。 接下来m行,每行两个整数(x2[i],y2[i]),表示度度熊伙伴的坐标。 满足: 1<=n,m<=500 -10000<=x1[i],x2[i],y1[i],y2[i]<=10000 Output

机房测试8.23

[亡魂溺海] 提交于 2020-02-15 06:09:12
题解之前 咕咕咕 因为教练不在,玩去了,好几天没有更新。%%% @wans 鸽掉的几天这里有 (妹子) 。 前几天 谜题实验室 推出了,每天晚上就和几个同学一起准备AC这上面的题,结果奴隶战OTK就花了好久才A。 (祭奠天国的战歌) %%% 辣个男人 idy002 又来了。 prob 确实被我一眼秒杀的题,我却被我的傻逼做法秒杀了。 满足条件的一定只需要2道题。(n<=5时) 本来01状态压缩一下不就完事了,但是我脑子一抽,写了如下程序: #include<cstdio> #include<cctype> #include<cstring> #define FN "prob" const int maxn=1e5+5; int a[maxn],d[maxn]; int b[maxn],c[maxn]; namespace Baoli { void one(int num) { memset(b,0,sizeof(b)); bool fl=false; for(int i=1;i<=num;i++) { char ch;while(!isdigit(ch=getchar())); b[i]=ch-'0'; if(!b[i]) fl=true; } if(fl) printf("YES\n"); else printf("NO\n"); return ; } void two(int

Educational Codeforces Round 82 (Rated for Div. 2)

守給你的承諾、 提交于 2020-02-13 01:45:31
A 题意: 一串01字符串,求最少删掉几个0,使得1连续 思路: 找1的l,r,数出区间0的个数 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 #define il inline 5 #define it register int 6 #define inf 0x3f3f3f3f 7 #define lowbit(x) (x)&(-x) 8 #define mem(a,b) memset(a,b,sizeof(a)) 9 #define mod 998244353 10 const int maxn=1e6+10; 11 int n,k; 12 char s[200]; 13 int main(){ 14 scanf("%d",&n); 15 while(n--){ 16 scanf("%s",s); 17 int l1=strlen(s),sum=0,l=-1,r=-1; 18 for(it i=0;i<l1;i++){ 19 if(s[i]=='1' && l==-1){ 20 l=i; 21 } 22 else if(s[i]=='1'){ 23 r=i; 24 } 25 } 26 for(it i=l;i<=r;i++){ 27 if(s[i]=='0'){sum++;}

(纪中)2156. 复仇者vsX战警之训练(train)【SPFA】

天涯浪子 提交于 2020-02-12 12:10:34
(File IO): input:attack.in output:attack.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ProblemSet 题目描述 月球上反凤凰装甲在凤凰之力附身霍普之前,将凤凰之力打成五份,分别附身在X战警五大战力上面辐射眼、白皇后、钢力士、秘客和纳摩上(好尴尬,汗)。 在凤凰五使徒的至高的力量的威胁下,复仇者被迫逃到昆仑的一座山上,因为凤凰五使徒监视不到那里。 霍普加入了复仇者,为了磨练自己,她在 n n n 个山峰之间跳跃。 这 n n n 个山峰在一条直线上,每个山峰都有不同的高度,只知道这些山峰在水平上相对位置。霍普可以将这些山峰左右移动但不能改变他们的相对位置(要保证两两山峰间距为整数且大于等于 1 1 1 )。霍普要从最矮的山峰开始跳,每次跳向第一个比现在她所在的山峰高的山峰,一共跳 n − 1 n-1 n − 1 次,由于能力有限,每次跳跃的水平距离小于等于 d d d 。 霍普想知道如何移动这些山峰,使得在可以经过所有的山峰并跳到最高的山峰上的基础下,又要使最矮的山峰和最高的山峰的水平距离最远,霍普要你求出最远的水平距离。如果无论如何也不能经过所有的山峰并跳到最高的山峰上,那么输出 − 1 -1 − 1 。 输入 输入文件名为 a t t a c k . i n attack.in a t t

发送邮件

ぃ、小莉子 提交于 2020-02-12 12:03:29
效果图 main.cpp 1 #include <iostream> 2 #include "SendMail.h" 3 #include <string> 4 using namespace std; 5 6 int main() 7 { 8 char EmailContents[255]="From: \"名字\"<xxxxxxx@163.com>\r\nTo:"; 9 char EmailTo[50]; 10 char subject[50]; 11 char content[50]; 12 printf("要发送的邮箱账号:"); 13 scanf("%s",EmailTo); 14 printf("你的标题:"); 15 scanf("%s",subject); 16 printf("你的内容:"); 17 scanf("%s",content); 18 19 strcat(EmailContents,EmailTo); 20 strcat(EmailContents,"\n"); 21 strcat(EmailContents, "subject:"); 22 strcat(EmailContents, subject); 23 strcat(EmailContents, "\r\n\r\n"); 24 strcat(EmailContents, content);

Codeforces Round #618 (Div. 2)

孤街浪徒 提交于 2020-02-10 11:03:25
题库链接 https://codeforces.ml/contest/1300 A. Non-zero 一个数组,每次操作可以给某个数加1,让这个数组的积和和不为0的最小操作数 显然如果有0的话,必须操作一次,最后如果和还是为0的话,再操作一次 #include <bits/stdc++.h> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define pii pair<int,int> #define int long long #define gcd __gcd const int inf = 0x3f3f3f3f; const int maxn = 201110; const int M = 1e9+7; int n,m; int a[maxn]; signed main() { #ifdef ONLINE_JUDGE #else freopen("data.in", "r", stdin); #endif int T; cin>>T; while(T--) { cin>>n; int sum = 0; int ans = 0; for(int i = 1; i <= n; i++) { cin>>a[i]; if(a[i] == 0) { ans++; a[i] = 1; } sum += a[i]

ACM线性基学习笔记

故事扮演 提交于 2020-02-08 05:51:15
https://www.cnblogs.com/31415926535x/p/11260897.html 概述 最近的几场多校出现了好几次线性基的题目,,会想起之前在尝试西安区域赛的一道区间异或和最大的问题时,当时因为异或的性质知道这道题肯定用线段树来维护区间的最值,但是不知道用什么来处理异或和最大,,即使后来知道了可以用线性基来处理,看了一些博客也因为感觉太难收藏到书签就再也没看过,,,于是这几天,花了差不多4、5天的时间,大概看懂了这部分的内容,感觉这只是一种专门处理异或问题的一个工具,光这个工具没什么意思,,现在的很多题目都是用线性基套各种东西,,比如说很常见的线段树(大多都是询问)、树链剖分(也就是树上路径的异或问题,主要是求LCA来维护)、简单图以及像杭电第一场的那题一样贪心魔改线性基板子等等,,不可能单纯的只是用线性基板子来求一个什么最值,K值,并交等等性质,下面是我这几天学习线性基的简单的一个学习过程的记录。 数学知识 关于线性基,虽然看起来这三个字很高深,,但是等大致了解之后,就会发现,这只是一个简单的数学工具,基础知识就是学过的线性代数 (虽然早就忘记了) 。 抛开线性代数,我个人的理解就是 线性基就是一个用来表示给定集合的一个最少的数的集合, 用线性基这个集合,可以表示它所 张成 的一个集合,对于我们遇到的大多数题目来说,就是用一个最少的数的集合 \(lb\)