随笔分类 - 贪心#题解
摘要:(~ ̄▽ ̄)~* 找规律 //初始化为B[i]=A[i] //然后由V=|A[1]-B[1]|+|A[2]-B[2|+|A[3]-B[3]| // +|B[1]-B[2]|+|B[2]-B[3]| //可以知道,如果要V尽可能小,那么对于B[2]的取值, //则要求B[2]到A[2] B[1] B[3]的距离尽可能小, //在数轴上可以看出,只要B[2]=中位数(A[2],B[1],...
阅读全文
摘要:(~ ̄▽ ̄)~* 水 //水题;潜力^e为正数(e为2时都可以)的儿子都可以去上战场了, //英文要看懂,exponent指数,不超过3的正数 #include #include #include #include using namespace std; int main() { int n,e,son[105]; while(~scanf("%d",&n)) { ...
阅读全文
摘要:(~ ̄▽ ̄)~* 这道题涉及高精度除法,模板如下: char s[1005]; char division[1005];//存储进行高精度除法的数据 bool bignum_div(int x) { int tot=0,num=0; for(int i=0;s[i];i++) { num=num*10+s[i]-'0'; division...
阅读全文
摘要:(~ ̄▽ ̄)~* //C跟着a君骑,然后更快的b君来了,C又跟着b君骑, //接着最快的d君来了,C就去跟着d君了, //最后最快的d君到达目的地时,C也就到了 //所以C的到达时间,就是最早到达的那个人的到达时间 //tips:但是,ti为负数者,速度又快的话,那C是永远追不上的 //所以结果应该是ti为正,即在C后才出发,的最快者所用时 #include #include #include #...
阅读全文
摘要:(~ ̄▽ ̄)~* #include #include #include #include using namespace std; int main() { int n; double w[105]; while(~scanf("%d",&n)) { for(int i=0;i0;i--) { w[i-1]=...
阅读全文
摘要:(~ ̄▽ ̄)~* #include #include #include #include using namespace std; struct node { double l,r; //找到以岛为圆心,以d为半径的圆与坐标x轴的左交点l、右交点r //雷达只有设在l~r之间,岛才在雷达覆盖范围内 }a[1005]; int cmp(node a,node b) { ...
阅读全文
摘要:(~ ̄▽ ̄)~* 画格子 #include #include #include #include using namespace std; int main() { int res,n,m; int a,b,c,d,e,f; int cc[]={0,5,3,1};//{0,6,4,2}WA,画个6*6的格子模拟一下就知道了 while(scanf("%d%d%d%...
阅读全文
摘要:题目链接 代码借鉴此博:http://www.cnblogs.com/vongang/archive/2011/08/19/2146070.html 其中关于max{c[fa]/t[fa]}贪心原则,此博有很好的解释:http://www.cnblogs.com/rainydays/p/3271277.html 在此引用其中几段话: 试想,如果没有父节点排在节点之前的限制,那么这个题目非常简单,...
阅读全文
摘要:(~ ̄▽ ̄)~* //把最大单独放,然后第二大的和最小的放一起,第三大的和第二小的放一起 //由此类推,求最大值,即为盒的最小值 #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; c...
阅读全文
摘要:(~ ̄▽ ̄)~* #include #include #include using namespace std; const int MAXN=100005; char s[MAXN]; int main() { int n; scanf("%d",&n); scanf("%s",s);//输入01串 int origin=1,flip=0; for(i...
阅读全文
摘要:(~ ̄▽ ̄)~* //求一个集合,这个集合与任意一个区间的交集,需至少有两个数字 //贪心过程:按n个区间的最右值从小到大对区间进行排列, //集合首先取第一个区间的最右两个数字, //到第二个区间,判断集合里的数有没有在区间里 //没有的话,就从第二个区间的最右开始往左取(cnt=0取最后两个数,cnt=1取最后一个数) #include #include #include #include #...
阅读全文
摘要:(~ ̄▽ ̄)~* //既然是求最少能胜几次 //说明对方是要尽可能让我输 //但为了避免浪费,对方会用比我的牌大的牌中的最小pip的牌来击败我 #include #include #include #include using namespace std; int main() { int Cas=0; int m,n,pip[1010],vis[1010]; while...
阅读全文
摘要:(~ ̄▽ ̄)~* (注意下面代码中关于iterator的用法,此代码借鉴某大牛) #include #include #include #include using namespace std; struct Wall { int row;//表示墙在哪行 int left; int right; }; int col[105];//保存每列的墙数 vector wal...
阅读全文
摘要:(~ ̄▽ ̄)~* 这道题用到了cstdlib库的qsort()函数: 用法链接:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.html #include #include #include #include #include using namespace std; struct stick { int l,...
阅读全文
摘要:(~ ̄▽ ̄)~* #include #include #include using namespace std; const int N=30; int n,h,H;//H:记录原本有多少小时的时间;h:贪心的时候,防止H被修改 int res[N],RES[N];//res[]:贪心的时候保存结果;RES[]:用于记录最终结果 int maxn,sum;//maxn:保存最终结果,即捕到的鱼最...
阅读全文

浙公网安备 33010602011771号