![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
挑战程序设计竞赛
K3_14
这个作者很懒,什么都没留下…
展开
-
Sumsets POJ - 2229
如果i为奇数:肯定有一个1,把dp[i-1]的每一种情况加一个1就得到dp[i],所以dp[i]=dp[i-1]如果i为偶数:(有两种情况) 如果有1,至少有两个,则dp[i-2]的每一种情况加两个1,就得到i, 如果没有1,则把分解式中的每一项除2,则得到dp[i/2],原创 2017-03-04 20:35:37 · 234 阅读 · 0 评论 -
Best Cow Line POJ - 3617
题意:用给定字符串,通过两种操作,拼出字典序最小的字符串(1.从s头删除一个字符,加到t;2.从s尾删除一个字符,加到t;)注意:1.每行输出至多80个 2.如果头尾相同,比较下一个#include #include using namespace std;int n,a,b,m=0;char s[2010],ss[2];bool f;int main()原创 2017-04-01 09:16:35 · 262 阅读 · 0 评论 -
部分和问题
#include #include using namespace std;int a[25];int n,k;bool dfs(int x,int s) { //前x项,和s if (x==n) return s==k; //*** if (dfs(x+1,s)) return true; if (dfs(x+1,s+a[x])) return true; ret原创 2017-03-31 20:31:58 · 221 阅读 · 0 评论 -
Backward Digit Sums POJ - 3187
题意:1~n,求怎样做到倒三角形方法加和为输入m的字典序最小的排列应该是一道dfs,但我不是这么写的,下次用dfs写试试原创 2017-03-11 22:50:37 · 244 阅读 · 0 评论 -
Hopscotch POJ - 3050
给出一个5*5的数组,问能组成多少个不重复的六位组合参考别人的博客得出的思路,利用stl中set的去重性#include #include #include #include using namespace std;int mp[10][10];int tx[4]={0,1,0,-1};int ty[4]={1,0,-1,0};string ss;set s; void原创 2017-03-11 19:52:45 · 259 阅读 · 0 评论 -
Lake Counting POJ - 2386
简单dfs求有几块水#include #include using namespace std;int n,m,num;char mp[110][110];void dfs(int x,int y) { if (x=n || y>=m) return; if (mp[x][y]=='.') return; mp[x][y]='.'; for (int dx=-1;dx<=原创 2017-03-11 18:57:10 · 277 阅读 · 0 评论 -
Red and Black POJ - 1979
普通dfs,求从起点开始,'.'一共连通的有多少个,行走范围上下左右把从起点开始走过的变为'#'#include #include using namespace std;int w,h,sx,sy,sum;char mp[25][25];void dfs(int x,int y) { if (x=h || y>=w) return; if (mp[x][y]=='#') r原创 2017-03-11 08:48:51 · 312 阅读 · 0 评论 -
Ants POJ - 1852
两个相对碰到后转向的蚂蚁相当于灵魂互换,互不影响求所有蚂蚁爬下的最短时间和最长时间#include #include using namespace std;int t,l,n,a,b;int s[1000010];int main(){ scanf ("%d",&t); while (t--) { scanf ("%d%d",&l,&n); for (int i=原创 2017-03-11 08:07:56 · 298 阅读 · 0 评论 -
Cow Bowling POJ - 3176
数字三角形问题#include #include using namespace std;int n,t;int a[355][355],dp[2][355];int main(){ while (~scanf ("%d",&n)) { for (int i=1;i<=n;i++) { for (int j=1;j<=i;j++) scanf ("%d",原创 2017-03-04 23:12:10 · 254 阅读 · 0 评论 -
Saruman's Army POJ - 3069
#include #include using namespace std;int r,n,t,sum,buf,p;int d[1010];int main(){ while (~scanf ("%d%d",&r,&n) && r!=-1 && n!=-1) { for (int i=0;i<n;i++) scanf ("%d",&d[i]); sort(d,d+n);原创 2017-04-01 17:42:56 · 252 阅读 · 0 评论