首页 > 其他分享 >ZCMU-1038

ZCMU-1038

时间:2024-03-29 14:57:28浏览次数:19  
标签:遇到 int scanf d% ZCMU -- 1038 dp


其实感觉不太难,读懂题意就行,我一开始没有仔细去读感觉就很懵。其题目意思就是一段字符串含有数字和'<'或者'>',一开始从左开始遍历,遇到'>'这类东西换方向,如果有多次遇到就删之前那一个;遇到数字就记下,并减去,一直减到0,就删掉

思路:无非用一个int类型的数组存放数字打印个数,以及模拟这个过程,

代码:

#include<stdio.h> 
#include<string.h>
/*之前没有认真看题目*/ 
char x[110],y[110];
/*两个字符窜数组,一个在过程中变化*/ 
int main(){
	int i,j,l,r,n,q;
	while(~scanf("%d%d",&n,&q)){
		scanf("%s",&x);
		while(q--){
			int d=1,dp=n,s[10]={0};
			//d用来表示往那边走,dp=n,先放一个无关的变量
			//后面用来表记可能删掉的,s初始化 
			scanf("%d%d",&l,&r);
		    l--,r--;
		    
		    strcpy(y,x);
		    //复制过来。 
		 for(i=l;i>=l&&i<=r;i+=d){
			if('0'<=y[i]&&y[i]<='9'){
				s[y[i]-'0']++;
				//相应++,打印后都减减,
				//其中小于0后不会讨论,相当于删去 
				  y[i]--;
				  
				dp=n;
				//遇到数字了,就将dp抛出 
			    }
			if(y[i]=='<'||y[i]=='>'){
				//遇到贴别情况 
			    if(y[dp]=='<')
			    //之前上一次也是这样就删掉,
				 
			    	y[dp]=0;
			    else if(y[dp]=='>')
			        y[dp]=0;
			    dp=i;
				//标记 
				if(y[i]=='<')d=-1;
				else d=1;
				//方向 
		   } 
	   }
		   printf("%d",s[0]);
		   for(i=1;i<10;i++)
		       printf(" %d",s[i]);
		    printf("\n");
		}
		
	}
	return 0; 
}

[我没读懂题目后借鉴的代码](http://blog.csdn.net/weixin_44941429/article/details/102381372 "我没读懂题目后借鉴的代码")

标签:遇到,int,scanf,d%,ZCMU,--,1038,dp
From: https://www.cnblogs.com/hai-zei/p/18103843

相关文章

  • ZCMU_1117
    /相当于看墙,投影之类的东西让我数多少个建筑物/解释感觉还不到位,以后再看看先强调这不是我原创的,只是加了注释。找到原作者后会加链接。以及改变布局#include<cstdlib>#include<cassert>#include<stack>usingnamespacestd;intmain(void){inti,n,h,coun......
  • BEE1038:经济学数据科学导论
    BEE1038:经济学数据科学导论在这项任务中,你将展示你对编程的理解和掌握Python使用数据科学工具。到第6/7周结束时,你将学到的东西几乎涵盖了你所需要的一切,你所学到的已经足够着手解决一些问题了。如果你被卡住了再读一遍笔记本。如果你仍然不确定,那就上网看看。谷歌和StackOverFl......
  • 1038:苹果和虫子 in、out完善
    时间限制:1000ms      内存限制:65536KB提交数:215194   通过数:62609【题目描述】你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?【输......
  • 力扣1038. 从二叉搜索树到更大和树(dfs)
    给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。提醒一下, 二叉搜索树 满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。 ......
  • PAT_A 1038 Recover the Smallest Number
    Givenacollectionofnumbersegments,youaresupposedtorecoverthesmallestnumberfromthem.Forexample,given{32,321,3214,0229,87},wecanrecovermanynumberssuchlike32-321-3214-0229-87or0229-32-87-321-3214withrespecttodifferentor......
  • [gym103860D]Tree Partition
    D-TreePartition考虑将树转换到一个序列上,钦定\(1\)为根节点,\(1\)的父亲为\(0\),在序列上,孩子向父亲连边然后考虑设\(dp\)状态\(dp[i][j]\)表示前\(i\)个点,分成\(j\)段的方案数,那么\(dp[i][j]\)从\(dp[k][j-1]\)转移过来要满足以下条件之一:点\(i\)的后向边\((a,b)\)满足\(a\l......
  • Failed to transform tygerservice-1.0.0.210619103852.aar to match attributes
    Couldnotresolveallfilesforconfiguration':app:debugRuntimeClasspath'.ExecutionfailedforAarToClassTransform:C:\Users\Administrator\.gradle\caches\transforms-2\Failedtotransformtygerservice-1.0.0.210619103852.aartomatchattrib......
  • P6 UVA11038 How Many O's?
    UVA11308HowmanyO's可以说很经典的数位DP。但是有一种有趣的更快的做法:将问题变化一下,如果对于第\(i\)位,把它变为\(0\),那么由于不能有前置\(0\)且保证构造出的数不能大于原数,所以比\(i\)大的位就是\(1—那么多\)。额,不好说,比如要求\(0到1145\),那么假设现在使得\(......
  • 洛谷 Luogu P1038 [NOIP2003 提高组] 神经网络
    这题看着很吓人实则很简单。求输出层,正着求很麻烦,因为知不道谁连向这个点,所以可以反向建边,反着求。拓扑+dfs,时间复杂度\(\text{O(n+m)}\)#include<iostream>#include<cstdio>#include<queue>#defineN105#defineM(N*N/2+114)structE{intv,w;......
  • ligntOj 1038(期望)
    题意:给出一个n,一步操作是让n除n的一个随机因子得到新的n,问可以得到新的n是1的步数期望。题解:因为n/1=n这种选择会造成循环,所以需要用到递推,令n变成1的步数期望是f[n],比如n是2,f[2]=1/2(f[2]+1)+1/2(f[1]+1),加1是因为2变成2也需要一步,那么移项后,f[2]=2+f[1]=2+0=......