fjwc2019 D4T1 循环流】的更多相关文章

#187. 「2019冬令营提高组」循环流 假的网络流,其实是O(1)算法 手画n个图后,你会发现只要分成几种情况讨论讨论就得了. 当$a==1$时显然不存在. 当$a!=1$时 如果$n==2$,显然$a$必须为偶数:$a==0$时,$b$必须为偶数:否则需要$a+b>=2$. $n>2$时,特判一下$(b==n||a==n)$的成环情况 剩下的$a+b>n$即为合法. 总之画画图找找规律................. (调试没删直接GG) #include<iostream…
(同时也是HDU 2982,UVA的数据多) 题意:平面上有m条有向线段连接了n个点.你从某个点出发顺着有向线段行走,给走过的每条线段涂一种不同的颜色,最后回到起点.你可以多次行走,给多个回路涂色(要么不涂色,要么就至少给一个回路上的边全部涂色).可以重复经过一个点,但不能重复经过一条有向线段.如下图所示的是一种涂色方法(虚线表示未涂色,即每次都可以从任意点出发染色).每涂一个单位长度将得到X分,但每使用一种颜色将扣掉Y分.假设你拥有无限多种的颜色,问如何涂色才能使得分最大?输入保证若存在有向线…
机房搬迁.......再加上文化课.......咕了十几天才有空补上....... day0听一个教授讲理论......在学长的带领下咕掉了..... D1 T1:#178. 「2019冬令营提高组」全连:solution D1 T2:#179. 「2019冬令营提高组」原样输出:solution D1 T3:#180. 「2019冬令营提高组」不同的缩写:solution D2 T1:#181. 「2019冬令营提高组」直径:solution D2 T2:#182. 「2019冬令营提高组」定…
复习 1.多重if 一个条件触发的情况在3种或以上时 if(<条件1>){ //条件1为真时运行 }else if(<条件2>){ //条件1为假,条件2为真时运行 }else if(<条件3>){ //条件1,2为假,条件3为真时运行 }else{ //条件1,2,3均为假时运行 } 2.switch结构 switch(<整数表达式>){ case 1: //整数表达式结果为1时运行 break; case 2: //整数表达式结果为2时运行 break;…
#193. 「2019冬令营提高组」堆 但是每个点都遍历一遍,有些点的子树完全相同却重复算了 忽然记起完全二叉树的性质之一:每个非叶节点的子树中至少有一个是满二叉树 那么我们预处理满二叉树的那一块,剩下的dfs就可以辣 求阶乘.......分块打表 设打表分成$k$段,则复杂度$O(logn+n/k)$ #include<cstdio> ,W=1e7; ]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,…
#194. 「2019冬令营提高组」密文 设$s[i]$表示前$i$个密文的异或和 容易发现,只要知道$s[0]~s[n](s[0]=0)$就可以知道每一位的值. 转化一下,就变成了在完全图上求最小生成树,边权是$[l,r]$段的异或和 然鹅数据范围太大了...... 但是边权是特殊的异或和! 于是我们用一棵trie维护边权,每次用贪心的思想 对于树上的某点,用最小的代价合并代表左右两个子树的连通块. 合并时代价的计算直接暴力就好辣 可以证明每次的连通块数都减少一半 即复杂度为$O(nlognl…
#185. 「2019冬令营提高组」送分题 这是原题..... P3615 如厕计划 手推一推你发现,显然男性不能多于女性. 然后你或许可以发现一个神奇的性质. 对于每个序列,我们记$M$为$1$,$F$为$-1$ 蓝后我们统计这个序列的后缀和. 如果这个序列合法,那么每个后缀和都$<=1$ 如果出现$>=2$的...... 举个栗子 F F F M M M M M F F 0 1 2 3    2   1 0 -1 -2 -1 这个数列显然是不合法的. 我们要让它合法,就要把若干个M向左移.…
#184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位为0,右边为1时,显然x的该位只能为0,否则异或后不符条件. 当左边的数相异位为1,右边为0时,x的该位就必须为1,也就是必须异或一次改变大小关系. 对于剩下的位......取0就行辣 当某位既要取1又要取0,显然就是不符合条件,就是无解了 每次修改的时候把上一位的数据清掉就得了. #include…
#183. 「2019冬令营提高组」排序 贴一段ppt 考虑模拟出这个算法进行k轮(即外层的i循环到k)时的序列,之后再暴力模拟零散的步. 考虑这个算法在01序列上的表现,k轮后实际上就是将最开始的不超过k个0放到序列开头. 考虑把序列转化成01序列,我们只要从1~n枚举x,然后把<=x的记为0,>x的记为1就行了,新增的那个0就是x的位置. 我们用priority_queue维护序列中当前前k个0的位置,每次考虑新的那个0的位置. 如果它为前k个,那么被弹出去的那个元素就是现在x的位置.如果…
#182. 「2019冬令营提高组」定价 先瞄下数据范围 对于所有数据,1≤n≤1000,1≤m≤10^9,1≤q≤500000 .\textbf{2 操作的个数不超过 1000.} $10^9$位,看起来挺吓人,咋维护每个可以为1的位鸭? 再仔细看看,$q<=500000$,最多500000次操作,那么显然是对每一列,开个动态开点线段树或者平衡树维护. 本题对数据结构要求不高,于是我们可以快捷地用set代替辣 接下来我们考虑如何求出价格和的最小值 2 操作的个数不超过 1000. 这告诉我们可…
#181. 「2019冬令营提高组」直径 (这题构造题是我考场上唯一一A的题........) 先看这个特殊的Subtask4 Subtask 4(20pts):$\sqrt{1+8k}$​​​ 为整数. 画了几张图,你轻松地发现这是菊花图. 大概就是这样↓ 我们暂且设红点的个数为$k$表示菊花树的大小. 显然一棵菊花树的直径数为$k*(k-1)/2$ 接下来我们试着以若干棵菊花图的形式构图. 当我们把两棵大小为(a,b)的菊花树连在一起时, 40pts到手 但是对于某些数(如一些大质数),两棵…
#180. 「2019冬令营提高组」不同的缩写 乍看之下没有什么好的方法鸭.......于是考虑暴力. 长度?二分似乎可行. 于是我们二分最长子串的长度(设为$len$),蓝后暴力查找. 先在每个串内练好后继边建图 ;i<=n;++i){ ); ;j<;++j) To[i][len][j]=-; ;j>=;--j){ memcpy(To[i][j],To[i][j+],])); To[i][j][a[i][j+]-; } } 每次用dfs查找一个串中长度不超过$len$的子串个数. 一个…
#179. 「2019冬令营提高组」原样输出 暴力对每个串建后缀自动机,然后暴力枚举每个自动机的子串.可以拿到部分分. 然鹅我们可以把每个后缀自动机连起来. 我们知道,后缀自动机是用最少的点(空间)表示出一个串的所有子串. 那么我们为啥不在后缀自动机上直接跑dp呢?于是我们把它们连起来. 复制一段ppt: 可以怎么拼呢? 我们考虑如何判断一个字符串是否是可能的输出文件 显然我们可以贪心地匹配,每次拿起一个输入串,一直匹配到不能再加字符了才放下,这样一定是正确的 于是我们可以告诉自动机如果失配了要…
#178. 「2019冬令营提高组」全连 显然我们可以得出一个$O(n^2)$的dp方程 记$f(i)$为取到第$i$个音符时的最大分数,枚举下一个音符的位置$j$进行转移. 蓝后我们就可以用树状数组存下$f(i)$的最大值,每次用$logn$的复杂度每次询问$j=1 \rightarrow i-t[i]$中最大$f(j)$值. 酱紫复杂度就变成了$O(nlogn)$ 对于$f(i)$在位置$i+t[i]$之后才能作为转移的一个选择的问题,我们可以打一个延迟标记(ping函数),用类似链式前向星…
紫书上的一道题,做法见紫书P378,这篇博客用的第二种方法,关于正确性的证明,画图可以发现如果一个环是负环,跑最小费用流跑出的是环上的所有正边,再减去负边和即为跑一遍的负权,如果是正环,最小费用流即为负权和的相反数,再加上负权和即为0,即没有计入答案.可能这种方法在处理负权时有一定的普遍性,还是要多做题多体会啊.... PS:今天费用流又写错了,写的是dinic中dfs的那种,保留了那部分代码以便日后修改,,还是记录最短路径稳啊. #include<iostream> #include<…
题目描述 有一张无向图,开始的时候所有边权为1,所有点没有权值,现在给定一个整数k,表示可以将k个点的点权设置为1,求点0到n-1的最短路最长是多少 Solution 网络流好题[然而本蒟蒻还是不会][这个建图是真的神仙…] 最短路最长,最大化最小的问题,考虑二分,我们先二分出一个mid,表示假设最短路最长是mid 然后建图建mid+1层,将每个点拆成两个点si和ti,从si向ti连一条流量为1的边,表示割掉这条边需要1的代价[割掉了就是+1s] 为了保证每个点只被选择一次,从这层的si向下一层…
题目描述 你需要构造一棵至少有两个顶点的树,树上的每条边有一个非负整数边权.树上两点 i,j 的距离dis(i,j) 定义为树上连接i 和j 这两点的简单路径上的边权和. 我们定义这棵树的直径为,所有满足 1≤i<j≤n 的  (i,j) 中, dis(i,j) 最大的.如果有多个这样的  (i,j),那么均为直径. 你需要构造一个恰有 k 个直径的树.可以证明在给定的限制下一定有解. 你构造的树需要保证 2≤n≤5000,且每条边的边权满足 50≤w≤10^5. 对于所有数据,满足 1≤k≤5…
题目描述 有n个音符,第i个音符会在第i个时刻来临 令第 i 个音符的准备时间为 ti​ 个单位时间,如果选择去点击第 i 个音符,那么就没法点击所有到来时刻在 (i−ti​ ,i+ti​)中的音符. 每一个音符有一个权值,求一种点击方法使得权值和最高(N<=1e6) Solution 首先先考虑最暴力的dp,令dp[i]表示我点到第i个时刻时,可以达到的最大权值 那么转移就很显然了 dp[i]=max(dp[j=1..i])+a[j](j+t[j]<=i&&i-t[i]>…
给定 n 个点和 m 条边的一张图和一个值 k ,求图中边数为 k 的联通子图个数 mod 1e9+7. \(n \le 10^5, m \le 2 \times 10^5, 1 \le k \le 4\). 观察到 k 的值贼小,考虑分类讨论 下面代码中du[]代表点的度数.(度 找不到比较好的英文,而这个拼音比较巨,所以du是我的代码习惯中里出现拼音的少数几中情况之一)…
题目描述 立方体有 6 个面,每个面上有一只奶牛,每只奶牛都有一些干草.为了训练奶牛的合作精神,它 们在玩一个游戏,每轮:所有奶牛将自己的干草分成 4 等份,分给相邻的 4 个面上的奶牛. 游戏开始,给定每个面上奶牛的干草数量,k 轮游戏后,请问奶牛 Shary 拥有的干草数量是多 少? 奶牛在立方体上编号次序是:前.后.上.下.左.右,奶牛 Shary 在立方体的上面. 如果答案是整数,直接输出:答案可能是分数,用最简分式表示,格式为 X/Y. 例如:一开始 6 个奶牛的干草数量是:0,0,4…
先膜一波宽神Orz%%%%% 拿到这题的第一反应就是:暴力啊!感觉神奇的钟点并没有什么性质,可能卡常能过吧……所以就写了一个O(22^3*59^3)的暴力.本来想打表,但是发现代码长度有限制,写不下.写完后发现,总共只有127034种神奇的钟点,所以当k特别大时,直接输出-1就可以了.如果数据纯随机的话,2*10^9应该能骗过不少吧.然而这种并不对劲的思想显然是会被察觉的,虽然用尽各种方法卡常,但是并没有拿多少分. 下午听讲评时,宽神说:还能怎么做?暴力啊! 我: 事实上并不是神奇的卡常方法.这…
分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了. /* 1.没有发生改变,check一下 2.将一位1变成0 3.添一位 4.减一位 */ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std;…
翻车 [问题描述] 有一天,小武找到了翻车王,给了他n个整数a1,a2,a3,…an,翻车王需要选择其中的k个数,使得选出的k个数中任意两个的差都可以被m整除. 选出的数可以重复,但不可以超过这n个数中该数的个数. 翻车王不想翻车,所以需要你的帮助. [输入格式] 第一行包括3个整数n,k,m(2 ≤ k ≤ n ≤ 100000,1 ≤ m ≤ 100000),n,k,m意义见题面. 第二行包括n个数a1,a2,a3,…an(0 ≤ ai ≤ 1000000000). [输出格式] 如果不可以…
题目描述 在一个游戏中有n个英雄,初始时每个英雄受到数值为ai的伤害,每个英雄都有一个技能"折射",即减少自己受到的伤害,并将这部分伤害分摊给其他人.对于每个折射关系,我们用数对\((x_i,y_i,z_i)\)来表示\(x_i\)将自己受到伤害去掉\(z_i\)的比例,将这些伤害转移给\(y_i\)(\(x_i,y_i\)是整数,\(z_i\)是实数). 求出经过反复折射后最后每个英雄受到的实际总伤害. 输入格式 第一行一个正整数:\(n\),表示有\(n\)个英雄,第二行\(n\)…
(其实这题是luogu P1901 发射站 原题,而且数据范围还比luogu小) 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在这里的每个人都羡慕比自己身高高的人,而每个人都有一个属性ai表示它对身高的羡慕值. 这n个小伙伴站成一列,我们用hi来表示它的身高,用ai来表示它的财富. 每个人向它的两边望去,在左边找到一个最近的比自己高的人,然后将ai朵玫瑰给那个人,在右边也找到一个最近的比自己高的人,再将ai朵玫瑰给那个人.当…
分析 我们对于每一个点记录他所在的这一行以它为右端点向前最多有几个连续的1 之后我们考虑每一列 对每一列的点按照之前求出的值从小到大排序 一次考虑每一个宽度 而高度也可以很容易的求出 每次取最大值即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #includ…
把每一天看作一个点,每一天的志愿者数目就是流量限制,从i到i+1连边,上下界就是(A[i],+inf). 对于每一类志愿者,从T[i]+1到S[i]连边,费用为招募一个志愿者的费用,流量为inf.这样每多1的流量,就多了一个从S[i]到T[i]+1的循环流. 求一遍无源汇的最小费用可行流就可以了. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #includ…
•HttpUrlConnection是java的标准类,继承UrlConnection类,二者都是抽象类.其对象主要通过URL的                                                 openConnection方法获得. package com.sumzom.teach.httpurlconnection; import java.io.BufferedReader;import java.io.IOException;import java.io.I…
下篇的内容很多都会在工作中用到,尤其是可编程对象,那些年我们写过的存储过程,有木有?到目前为止很多大型传统企业仍然很依赖存储过程.这部分主要难理解的部分是事务和锁机制这块,本文会进行简单的阐述.虽然很多SQL命令可以通过工具自动生成,但如果能通过记忆的话速度会更快,那么留给自己思考的时间就越多.此外,由于锁这部分知识比较复杂,不同的数据库厂商的实现也有不同,SQLSERVER除了我们常见的共享锁.排它锁(包括表级.页级.行级),意向锁,还有一些更复杂的锁,如自旋锁等,这部分内容会在之后的T-SQ…
原文:http://www.cnblogs.com/wanliwang01/p/TSQL_Base04.html   下篇的内容很多都会在工作中用到,尤其是可编程对象,那些年我们写过的存储过程,有木有?到目前为止很多大型传统企业仍然很依赖存储过程.这部分主要难理解的部分是事务和锁机制这块,本文会进行简单的阐述.虽然很多SQL命令可以通过工具自动生成,但如果能通过记忆的话速度会更快,那么留给自己思考的时间就越多.此外,由于锁这部分知识比较复杂,不同的数据库厂商的实现也有不同,SQLSERVER除了…