-
http://codeforces.com/contest/18/problem/C 题意:将一个序列分成两个非空的部分,保证和相等,问有多少种方法。 思路:做过一个三部分的。。。两部分直接一个前缀和就好了把。。。有一个需要注意的是。。判断负数是否是奇数的时候需要加个绝对值。。。 /* *********************************************** Author :111qqz Created Time :2015年12月29日 星期二 16时09分06秒 File Name :code/cf/problem/18C.cpp …
Read More -
http://codeforces.com/contest/12/problem/C 题意:有n个价格价格,m个要买的东西(可能有相同的种类,设为k种),把n个标签中拿出k个给个贴上。。。问最大价钱和最少价钱分别是多少。 思路:贪心。不过要按照map的value排序。。然后发现其实不用排序。。因为map的key值其实不影响。 vector降序排列的话。。直接 sort(v.rbegin(),v.rend());就好。 /* *********************************************** Author :111qqz Created Time :2015年12月29日 星期二 15时30分54 …
Read More -
http://codeforces.com/contest/16/problem/C 题意:给定长宽a,b和分辨率x:y,注意分辨率x:y未必是最简比。问将现有的size裁剪成比例为x:y,使得面积最大的长宽是多少。 思路:可以通过找 x,y能扩大的倍数为k,找到一个最大的k使得k*x<=a&&k;*y<=b。可以二分搞,但其实也可以不用。能扩大的最大的倍数其实就是 min(a/x,b/y). ps:收获了gcd更简单的一种写法。 直接 return b?gcd(b,a%b):a; /* *********************************************** Author …
Read More -
http://codeforces.com/contest/612/problem/C 题意:其实就是栈的基本操作。。水题。 /* *********************************************** Author :111qqz Created Time :2015年12月25日 星期五 22时58分50秒 File Name :code/cf/edu4/C.cpp ************************************************ */ #include <cstdio> #include <cstring> #include …
Read More -
http://codeforces.com/contest/612/problem/B 水。 /* *********************************************** Author :111qqz Created Time :2015年12月25日 星期五 22时58分38秒 File Name :code/cf/edu4/B.cpp ************************************************ */ #include <cstdio> #include <cstring> #include <iostream> #include …
Read More -
http://codeforces.com/contest/612/problem/A 水题...直接枚举就好。 /* *********************************************** Author :111qqz Created Time :2015年12月25日 星期五 22时58分26秒 File Name :code/cf/edu4/A.cpp ************************************************ */ #include <cstdio> #include <cstring> #include <iostream> …
Read More -
http://codeforces.com/contest/612/problem/D 题意:给出n个线段信息,每个线段以l,r的形式给出。给定k。要求从作到右给出至少有k个线段覆盖的区间的信息。并使得区间数目尽可能少。 思路:很经典的一类问题...又想起了当年在tyvj上海洋兄给我的那个把线段比喻成公路,把两个端点比喻成收费站的比喻了。做法是把所有点的信息按照从小到大排序,并且记录点的类型信息,如果点相同,那么我们规定入口处的优先级高。用pair来搞的话。。可以把入口的type规定成-1,出口规定成1.然后从最左边的点开始扫,遇到-1的点厚度+1,遇到1的点厚度-1.当厚度为k的时候记录区间信息。 /* …
Read More -
http://codeforces.com/contest/327/problem/A 题意:给定一段序列,只由0,1组成。要求选一段非空区间,做翻转操作(0变1,1变0),问变完之后1最多能有多少。 思路:最后的1个个数=初始的1的个数+变换区间的0的个数-变换区间的1的个数。初始的是常数。那么我们只要找到某一个区间内,0的个数-1的个数有最大值即可。如果a[i]==0的时候令b[i]=1,否则b[i]=0,那就是经典了最大连续区间和的问题了。dp的思想o(n)可以解决。 /* *********************************************** Author :111qqz Created Time …
Read More -
http://codeforces.com/contest/456/problem/C 题意:给出n(1E5)个数(1E5),每次可以选一个数a[k]并删掉a[k],a[k]-1,a[k]+1得到a[k]分,问最多能得到的分数。 思路:裸dp.f[i]表示选到数i的时候能达到的最大分数。开一个计数数组cnt[x]表示数字x出现的次数。那么显然有f[0]=0,f[1]=cnt[1],f[i(i>=2)] = max(f[i-1],f[i-2]+f[i]*cnt[i]);答案为f[max(a[i])],注意要开long long /* *********************************************** …
Read More -
http://codeforces.com/contest/608/problem/B 题意:给定两个字符串a,b,问b中的每个连续的长度为a的子串与a的哈密顿距离的和是多少。哈密顿距离是对应位置的字符的差的绝对值的和。由于是01串,也就是字符不同的位置数。 思路:类似前缀和。0和1分别搞。注意开long long /* *********************************************** Author :111qqz Created Time :2015年12月24日 星期四 00时32分33秒 File Name :code/cf/#336/B.cpp …
Read More