技术派-不用sqrt手工计算平方根
Flask之模板之控制语句
20172306《Java程序设计》第四周学习总结
Jquery 搭配 css 使用,简单有效
shell 脚本中的运算
ORACLE 日期函数
DELPHI PROTOBUF免费的开源支持库fundamentals5
DELPHI PROTOBUF免费的开源支持库fundamentals5

DELPHI PROTOBUF免费的开源支持库fundamentals5 1、源码URL: https://github.com/fundamentalslib/fundamentals5 2、编译ProtoCodeGen.exe下载完上面的文件后,在子目录中找到 ProtocolBuffers\CodeGenApp\ProtoCodeGen.dpr  —– 编译它 3、编译完毕后,得到ProtoCodeGen.exe一个。它就可以把   *.proto  文件,生成为PAS文件了。 4、在D盘下,我新建了一个Google文件夹,把刚刚生成的protocodegen.exe放了进去 在这个文件夹下,我用记事本新建了一个文件,里面的内容如下 message Person {    required string name = 1;    required int32 id = 2;} 保存为   message.proto 同样,我在Google文件夹下用建立一个叫做 pas_out文件夹 具体编译的指令时这样的。 打开 CMD。(DOS命令行那个,在开始——》运行——》CMD——》回车) 敲入命令 这个时候,去D:\google\pas_out下去找,会发现生成了一个pbMessageMessages.pas文件。 大功告成!!!!! 5、如何使用 新建一个项目 把Fundamentals.ProtoBuf.4.0.01(加压文件夹中的) ProtocolBuffers和Utils目录下的文件拷贝到我们新建的项目下,添加到项目里。 恩,其实并不是都能用的上的。这个自己看生成的pbMessageMessages.pas其他它就需要3个引用 cUtils,  cStrings,  cProtoBufUtils; 加密或者解密(序列化或者反序列化的代码如下) var p1,p2:TPersonRecord;  len:Integer;  Bt:TBytes;begin  p1.Name := edtName.Text;  p1.Id := StrToInt(edtID.Text);  SetLength(Bt,100);  […]

bzoj4784【zjoi2017】仙人掌
bzoj4784【zjoi2017】仙人掌

题目描述 如果一个无自环无重边无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌。所谓简单环即不经过重复的结点的环。现在九条可怜手上有一张无自环无重边的无向连通图,但是她觉得这张图中的边数太少了,所以她想要在图上连上一些新的边。同时为了方便的存储这张无向图,图中的边数又不能太多。经过权衡,她想要加边后得到的图为一棵仙人掌。不难发现合法的加边方案有很多,可怜想要知道总共有多少不同的加边方案。两个加边方案是不同的当且仅当一个方案中存在一条另一个方案中没有的边。 输入格式 多组数据,第一行输入一个整数T表示数据组数。每组数据第一行输入两个整数n,m,表示图中的点数与边数。接下来m行,每行两个整数u,v(1≤u,v≤n,u!=v)表示图中的一条边。保证输入的图联通且没有自环与重边Sigma(n)<=5*10^5,m<=10^6,1<=m<=n*(n-1)/2 输出格式 对于每组数据,输出一个整数表示方案数,当然方案数可能很大,请对998244353取模后输出。 题解: 由于环上的边无法再被另外的环覆盖,所以把所有的环拆掉得到森林; 计算每颗树的$ans$乘起来; $f[u]$表示以$u$为根的子树的方案,$g[u]$表示以$u$为根的子树并且还有某个点可以向上连边的方案; 由于根也可以向上连,$g[u]$是包含$f[u]$的; $f[u]$的递推可以将所有的儿子$v$的$g[v]$乘起来,在乘以儿子之间的互相连边或和$u$连边的方案数; $h[i]$表示$i$个儿子时互相连边的方案: $h[i] = h[i-1] + h[i-2]*(i-1)$; $tot$表示$u$的儿子的个数: $f[u] = \Pi_{v}g[v] * h[tot]$; $u$的子树向上连边可以由$u$或者$u$的一个儿子$v$的子树向上连边; $g[u] = f[u] + tot * \Pi_{v}g[v] h[tot-1] = \Pi_{v}g[v]*h[tot+1]$; 我一直在纠结不连边的方案去哪了?其实不连边的方案数在统计$v$向上连到$u$时被统计了; #include<bits/stdc++.h> using namespace std; ,mod=; char gc(){ ]; ,,stdin); return(p1==p2)?EOF:*p1++; } int rd(){ ;char c=gc(); ')c=gc(); )+(x<<)+c-',c=gc(); return x; […]

vij  1097  贪心
vij 1097 贪心

合并果子 描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。 例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。 格式 输入格式 输入包括两行,第一行是一个整数n(1<=n<=10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。 输出格式 输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于2^31。 样例1 样例输入1 31 2 9 Copy 样例输出1 15 Copy 限制 每个测试点1s 来源 NOIp 2004 每一次都sort找到最小的两堆石子合并即可,排序耗时很多快排一次O(N*log(N)),需要排序N次的话,,尽管N在不断减少还是太费事 #include<bits/stdc++.h>using namespace std;int main(){ int a[10005]={0}; int i,j,ans=0,n; cin>>n; for(i=1;i<=n;++i) scanf(“%d”,&a[i]); sort(a+1,a+1+n); for(i=2;i<=n;++i){ ans+=a[i]+a[i-1]; a[i]+=a[i-1]; sort(a+i,a+1+n); }cout<<ans<<endl; return 0;} 所以考录采用优先队列,操作一个元素的复杂度为O(log(n)),操作N次Nlog(N)还是很理想的! #include<bits/stdc++.h>using namespace std;priority_queue<int,vector<int>,greater<int> > Q; //建立最小堆int main(){ int a; int i,j,ans=0,n; cin>>n; […]