zoukankan      html  css  js  c++  java
  • 奇怪的代码增加了

    小编原以为自己可以拿到50分的好成绩,结果只拿到了30分,小编当时很疑惑,考后看了很久也没看出来错在了哪里,你看出来了吗?

    	} else {
    		int last = 0, sum = 0;
    		for (register int i = 1; i <= m; i++) {
    			k[i] = read(), v[i] = read();
    			if (k[i] == 1) {
    				last = i;
    				sum = 0;
    			} else {
    				sum += v[i];
    			}
    		}
    		int C, K, V;
    		for (register int i = 1; i <= q; i++) {
    			C = read(), K = read(), V = read();
    			if (C < last) {///在左无影响
    				k[C] = K, v[C] = V;
    				printf ("%d
    ", sum);
    			} else if (C == last && K == '1') {//不变
    				printf ("%d
    ", sum);
    			} else if (C > last && K == '0') {//在右加答案
    				sum += (V - v[C]);
    				k[C] = 0, v[C] = V;
    				printf ("%d
    ", sum);
    			} else if (C == last && K == '0') {//换切点
    				k[C] = 0, v[C] = V;
    				sum += V;
    				for (register int j = last - 1; j >= 1; j--) {
    					if (k[j] == '1') {
    						last = j;
    						break;
    					} else {
    						sum += v[j];
    					}
    				}
    				printf ("%d
    ", sum);
    			} else if (C > last && K == '1') {//
    				sum = 0;
    				k[C] = 1, v[C] = V;
    				for (register int j = m; j >= 1; j--) {
    					if (k[j] == '1') {
    						last = j;
    						break;
    					} else {
    						sum += v[j];
    					}
    				}
    				printf ("%d
    ", sum);
    			}
    		}
    	}
    

    答案揭晓:

    	} else {
    		int last = 0, sum = 0;
    		for (register int i = 1; i <= m; i++) {
    			k[i] = read(), v[i] = read();
    			if (k[i] == 1) {
    				last = i;
    				sum = 0;
    			} else {
    				sum += v[i];
    			}
    		}
    		int C, K, V;
    		for (register int i = 1; i <= q; i++) {
    			C = read(), K = read(), V = read();
    			if (C < last) {///在左无影响
    				k[C] = K, v[C] = V;
    				printf ("%d
    ", sum);
    			} else if (C == last && K == 1) {//不变
    				printf ("%d
    ", sum);
    			} else if (C > last && K == 0) {//在右加答案
    				sum += (V - v[C]);
    				k[C] = 0, v[C] = V;
    				printf ("%d
    ", sum);
    			} else if (C == last && K == 0) {//换切点
    				k[C] = 0, v[C] = V;
    				sum += V;
    				for (register int j = last - 1; j >= 1; j--) {
    					if (k[j] == 1) {
    						last = j;
    						break;
    					} else {
    						sum += v[j];
    					}
    				}
    				printf ("%d
    ", sum);
    			} else if (C > last && K == 1) {//
    				sum = 0;
    				k[C] = 1, v[C] = V;
    				for (register int j = m; j >= 1; j--) {
    					if (k[j] == 1) {
    						last = j;
    						break;
    					} else {
    						sum += v[j];
    					}
    				}
    				printf ("%d
    ", sum);
    			}
    		}
    	}
    

    学到了吗? 如果学会了请把学废了打在评论区里23333

  • 相关阅读:
    IIS 添加二级应用程序
    VS中发布并调试IIS程序
    未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker
    Flash基础开发习惯指要
    2012云计算扫盲
    flash问题集锦(新手必看)
    Flash常用ActionScript控制语句基本用法祥解
    通过offset值的设置使html元素对齐
    不用float也可以让div横向显示
    QQ空间里写的开发心得
  • 原文地址:https://www.cnblogs.com/hzoi-liujiahui/p/13853656.html
Copyright © 2011-2022 走看看