文章分类 -  acm-codeforces好题系列

上一页 1 2 3 下一页

CodeForces 213C Relay Race :从左上角到右下角再返回,每个价值计算一次,问最多收集价值 :dp
摘要:好像去了再回来很难记住原来走了哪些?可以从左上角同时走两个路径到右下角,那如何记录两个点的状态?注意到两个点的行+列是相同的,因此可以记录一个时间维+两个坐标维dp[time][x1][x2] time时间一点的横坐标x1和另一点的横坐标x2转移很好想啦== 1 #include 2 #includ... 阅读全文

posted @ 2015-03-26 22:33 xiao_xin 阅读(293) 评论(0) 推荐(0)

CodeForces 204A Little Elephant and Interval :计算L到R内有多少数的首尾数字相同:数学思维
摘要:转化成1-m里面多少个首尾数字相同数字对于个位数本身满足而其他的,注意到对于每一个x,x/10再加上末尾固定的数即满足,所以答案为m/10+9?最后注意到如果m的个位数 2 long long fun(long long m) 3 { 4 if(m=10) m/=10; 7 if(m... 阅读全文

posted @ 2015-03-26 22:23 xiao_xin 阅读(336) 评论(0) 推荐(0)

CodeForces 118D Caesar's Legions :n1种步兵n2种马兵,询问多少种排列方式使不超过k1种步兵相连k2种马兵相连 :dp
摘要:dp[i][j]表示前面i个步兵j个马兵排列种数,再枚举一下本次放的步兵和马兵的个数就可以dp了技巧在于:不是一个一个放兵,而是轮流种类放兵== 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MOD 1000000... 阅读全文

posted @ 2015-03-26 17:33 xiao_xin 阅读(232) 评论(0) 推荐(0)

CodeForces 148E Porcelain : 书橱有n层书架,每层书架有一些书,每次取书只能取任意层最左和最右,问取m本书最大价值:dp
摘要:预处理dp[i][j]表示i层取j本书最大价值,利用前缀和来处理,枚举不拿的中间一段,这样预处理O(n^3)随后进行dp,dp[i][j]表示前i层取j本书最大价值,再枚举i层拿k本书,这样也是O(n^3),甚至接近100*10000*100,不过codeforce的速度还是承受住了== 1 #in... 阅读全文

posted @ 2015-03-26 16:47 xiao_xin 阅读(245) 评论(0) 推荐(0)

CodeForces 257C View Angle :二维平面上一些点,从原点射出两条射线将它们全部包括,求最小夹角 :几何+技巧
摘要:将每个点与x正半轴夹角利用atan求出来,都在[0,360)之间然后排序,枚举夹角相邻的两个点,ans=min(360-(the[i+1]-the[i])) 1 2 #include 3 #include 4 #include 5 #define eps 1e-10 6 using namespac... 阅读全文

posted @ 2015-03-26 16:11 xiao_xin 阅读(321) 评论(0) 推荐(0)

CodeForces 257B Playing Cubes :两人轮流向已有序列后面放红蓝木块,一人想使相邻颜色相同多一人想不想同颜色多,最后得分? :博弈+思维
摘要:对比代码量,好大的思维量==其实对于第二个拿相同的木块分的人,他当前放与上一个木块相同最优对于第一个想拿不同木块分的人,他放与上一块木块不同颜色最优第一个人放多的颜色木块更优=至于为什么?>>当前对自己有利就放,否则到后面就无利了 2 #include 3 #include 4 using name... 阅读全文

posted @ 2015-03-26 16:03 xiao_xin 阅读(552) 评论(0) 推荐(0)

CodeForces 264B Good Sequences :给定n的序列,找出最长的(相邻元素不互质)的子序列: dp
摘要:这道题目自己能想到还是挺开心的=我的做法是先用筛法将每个数的质数因子放到这个数对应的vector里面然后从首至尾扫这个数组,对每个数查看他的所有质因子最大的长度,最后更新每个质因子的长度,复杂度大概是O(n*数的质因子平均个数),挺快的 1 #include 2 #include 3 #includ... 阅读全文

posted @ 2015-03-26 12:05 xiao_xin 阅读(659) 评论(0) 推荐(0)

CodeForces 343B Alternating Current :两根绳子上下绕在一起,问拉住上下绳子能不能分开:思维+栈
摘要:图见:http://codeforces.com/problemset/problem/343/B巧妙!将红上蓝下记为1,红下蓝上记为-1,压栈,相同相消,最后栈中无元素即可以分开= 1 #include 2 #include 3 #include 4 #include 5 using namesp... 阅读全文

posted @ 2015-03-26 11:51 xiao_xin 阅读(395) 评论(0) 推荐(0)

CodeForces 343A Rational Resistance :最少需要多少个1Ω电阻并串联形成目标电阻:思维
摘要:串联1Ω电阻:R+1并联1Ω电阻:R/(R+1)这样就从目标电阻倒推回去需要多少个 1 #include 2 #include 3 #include 4 using namespace std; 5 int main() 6 { 7 long long a,b,x,tmp; 8 scanf(... 阅读全文

posted @ 2015-03-25 22:21 xiao_xin 阅读(232) 评论(0) 推荐(0)

CodeForces 132C Logo Turtle :一个字符串包含T和F,准确改变n个字符使走的距离最长:记忆化搜索
摘要:范围比较小,直接记忆化搜索=dp[go][pos][i][cnt]表示朝向,位置,字符串行进位置,剩余操作数转移方程思考=注意cnt先可以-2 1 #include 2 #include 3 #include 4 using namespace std; 5 int dp[2][205][105][... 阅读全文

posted @ 2015-03-25 22:13 xiao_xin 阅读(156) 评论(0) 推荐(0)

CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs
摘要:预处理sum数组,sum[i]表示1-m中有i个4或7的数有多少个,这个数位dp很好写然后就是枚举第七个数含有的4,7数目,dfs剩下的六个数= 1 #include 2 #include 3 #include 4 using namespace std; 5 #define LL long lon... 阅读全文

posted @ 2015-03-25 22:05 xiao_xin 阅读(191) 评论(0) 推荐(0)

CodeForces 197A Plate Game :轮流在矩形中放圆,先放不下者输 :博弈+思维
摘要:如果一个放不下第二个人赢,否则第一个人放在中间,由于对称性,第二个人必败=1 #include2 #include3 int main()4 {5 int n,m,r;6 scanf("%d%d%d",&n,&m,&r);7 if (n>=r*2&&m>=r*2) printf("Fir... 阅读全文

posted @ 2015-03-25 21:49 xiao_xin 阅读(314) 评论(0) 推荐(0)

CodeForces 234F Fence :每列染成红或绿色,红绿使用有限制,使不同的颜色相邻面积最少 :dp
摘要:比较明显的dp了=dp[i][j][flag]前i个栅栏中,红/绿颜料用了j的最小接触值具体转移见程序: 1 #include 2 #include 3 #include 4 using namespace std; 5 int dp[225][45005][2],a[225]; 6 int mai... 阅读全文

posted @ 2015-03-25 21:40 xiao_xin 阅读(237) 评论(0) 推荐(0)

CodeForces 24A Ring road :给定一个环改变最小花费使联通 :dfs
摘要:其实就两个方向,不符合就改嘛所以从任意一个点开始,两个方向更改的最小值就是答案== 1 #include 2 #include 3 #include 4 using namespace std; 5 int n,vis[1005]; 6 struct dian{ 7 int num1,num2,... 阅读全文

posted @ 2015-03-25 20:48 xiao_xin 阅读(313) 评论(0) 推荐(0)

CodeForces 70C Lucky Tickets :找到范围最小的区间使1区间找到的a和2区间找到的b使a*b=rev(a)*rev(b)大于等于w个:技巧(尺取)+map
摘要:转化成a/rev(a)==rev(b)/b这样就容易做了先判断大区间有没有到w个,然后开两个map进行尺取x=n1 y=1如果当前对数>=w x--,否则y++,中间有涉及到两个map的删减以及在满足情况下更新答案 1 #include 2 #include 3 #include 4 #includ... 阅读全文

posted @ 2015-03-25 20:42 xiao_xin 阅读(302) 评论(0) 推荐(0)

CodeForces 222D Olympiad : 给出所有学生两轮考试分数,某人两轮分数和>=k,求可能的最高和最低名次:思维&贪心
摘要:最高就是第一名=最低的话贪心,一轮从大到小,另一轮从小到大,尺取最多即最多能有多少个>=k 1 #include 2 #include 3 #include 4 using namespace std; 5 int a[100005],b[100005]; 6 int main() 7 { 8 ... 阅读全文

posted @ 2015-03-25 20:08 xiao_xin 阅读(281) 评论(0) 推荐(0)

CodeForces 222B Cosmic Tables :一个矩阵对它进行k次操作,交换行、列,询问i行j列的数值:技巧
摘要:不去实际上交换行和列=用两个数组表示当前行/列是原数组哪一行/列,这样只用交换变量 1 #include 2 #include 3 #include 4 using namespace std; 5 int a[1005][1005],idx[1005],idy[1005]; 6 int main(... 阅读全文

posted @ 2015-03-25 20:01 xiao_xin 阅读(260) 评论(0) 推荐(0)

CodeForces 222A Shooshuns and Sequence :每次复制队列中第k个元素到队尾并删除队首元素,几次可以将队列变相同 : 思维
摘要:codeforces好多这样的想到很简单,想不到感觉难到爆的题目,思维!很简单:只要原序列第k个元素后面有和第k个不一样的就变不了,思考=可以就看第k个前面连续多少个和第k个相同即可= 1 #include 2 #include 3 #include 4 using namespace std; 5... 阅读全文

posted @ 2015-03-25 19:37 xiao_xin 阅读(339) 评论(0) 推荐(0)

CodeForces 295C Greg and Friends :n个人在河一边,有一船载重最大k,求最少几次将人全部运过去并求出方案 :bfs+dp
摘要:n 2 #include 3 #include 4 #include 5 using namespace std; 6 #define LL long long 7 #define MOD 1000000007 8 struct dian{ 9 LL x1,x2,flag;10 };11 que... 阅读全文

posted @ 2015-03-25 19:29 xiao_xin 阅读(274) 评论(0) 推荐(0)

CodeForces 13C Sequence :每次对数组中任一数+1或-1,最少需要多少次使数组成为不下降序列:dp
摘要:首先所有数最后所变成的数一定是原序列中有的数然后可以将开辟一个新的数组为原数组,并排个序=这样转移方程就比较好想了:dp[i][j]表示原序列中第i个数对应排序后的数组第j个数1 if (i==1&&j==1) dp[i][j]=labs(a[i]-b[j]);2 else if (i==1) dp... 阅读全文

posted @ 2015-03-25 19:17 xiao_xin 阅读(594) 评论(0) 推荐(0)

上一页 1 2 3 下一页

导航