随笔分类 - YY题
摘要:题意:有一条从1~n的单向高速路,现在要你修建两单向路条路,使任何一个点可以到任何的点,求这两天的路最短;注意:起始中点要不同;我们知道要满足条件,那么我们就必定使1~n有通路,我们可以从1~n修一条路,在从n-3条边选出最短的边就可以了;这里为什么是从n-3条边里选,这里我们要去掉两个端点的边;例如:n=4 时 4 7 9,这里答案是12而不是11;View Code #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cma
阅读全文
摘要:本题题目大意在一个01方阵中找出四条边全都是1的正方形的个数,对于正方形内部则没有要求。一个直观的想法是首先用N^2的时间预处理出每一个是1的点向上下左右四个方向能够延伸的1的最大长度,记为四个数组l, r, u, d。然后我们观察到正方形有一个特征是同一对角线上的两个顶点在原方阵的同一条对角线上。于是我们可以想到枚举原来方阵的每条对角线,然后我们对于每条对角线枚举对角线上所有是1的点i,那么我们可以发现可能和i构成正方形的点应该在该对角线的 [i, i + min(r[i], d[i]) – 1] 闭区间内, 而在这个区间内的点 j 只要满足 j – i + 1 <= min(l[j]
阅读全文
摘要:这是一个找规律的题;例如: 12互质的数有 1 5 7 11 (12)13 17 19 22 (24) 25我们可以看到一个循环节;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>using
阅读全文
摘要:这个题用double就能过;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<vector>using namespace std;int main( ){ double k,p; while( scanf( "%lf %lf",&
阅读全文
摘要:猜数字刚开始看有点假假的,但是仔细用二分分析时,你就会发现只有2^n-1时,才可能满足猜n次你才能猜对。 1 #include<stdio.h> 2 #include<stdlib.h> 3 __int64 pow( int n ) 4 { 5 __int64 sum=1; 6 for( int i=1;i<=n ;i++) 7 sum*=2; 8 return sum-1; 9 }10 int main()11 {12 int T,n;13 scanf( "%d",&T );14 while( T-- )15 {16 sc...
阅读全文

浙公网安备 33010602011771号