• acm练习-day1_1


     

    “麻雀”lengdan用随机数生成了后台数据,但是笨笨的他被妹纸的问题给难住了。。。

    已知lengdan生成了N(1=<N<=10005)个随机整数,妹子对这些数可能有以下几种操作或询问:

    1,A a b c 表示给区间a到b内每个数都加上c;

    2,S a b  表示输出区间a到b内的和;

    3,Q a b 表示区间a到b内的奇数的个数;

    为了使妹纸不口渴,所以我们决定妹纸的询问次数少一点,即(1=<M<=10000,M为询问次数)。

    唉,你说妹纸一直进行操作1该多好啊,嘎嘎。。。

    好水!喝饱了~~~

     
    输入
    多组测试数据。
    每组测试数据第一行包含两个数N,M,表示N个整数,执行M次询问或操作。
    紧接着一行输入N个整数,输入数据保证在int范围内。
    接下来M行,每行输入一种操作。
    输出
    每次对于操作2和3,输出结果。
    样例输入
    5 5
    1 2 3 4 5
    Q 1 4
    S 1 5
    A 1 4 1
    S 1 5
    Q 2 5
    样例输出
    2
    15
    19
    3
    public class Main {
    	static String data;
    	public static int jud(String data1,String cz){
    		String[] s = data1.split(" ");
    		String[] c = cz.split(" ");
    		int res = 0;
    		if (c.length==4) {
    			for (int i = Integer.parseInt(c[1])-1; i <= Integer.parseInt(c[2])-1; i++) {
    				s[i] = (Integer.parseInt(s[i])+Integer.parseInt(c[3]))+"";
    			}
    			data = Integer.parseInt(s[0])+" ";
    			for (int i = 1; i < s.length; i++) {
    				data = data+Integer.parseInt(s[i])+" ";
    			}
    			res=-1;
    		}
    		else{
    			if (c[0].equals("Q")) {
    				int num=0;
    				for (int i = Integer.parseInt(c[1])-1; i <= Integer.parseInt(c[2])-1; i++) {
    					if (Integer.parseInt(s[i])%2==1) {
    						num++;
    					}
    				}
    				res=num;
    			}
    			if (c[0].equals("S")){
    				int num=0;
    				for (int i = Integer.parseInt(c[1])-1; i <= Integer.parseInt(c[2])-1; i++) {
    					num+=Integer.parseInt(s[i]);
    				}
    				res=num;
    			}
    		}
    		return res;
    	}
    public static void main(String[] args) throws Exception {
    	BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
    	int m;
    	String al = buf.readLine();
    	String[] s = al.split(" ");
    	m = Integer.parseInt(s[1]);
    	data = buf.readLine();
    	String r = "";
    	for (int i = 0; i < m; i++) {
    		if (i==0) {
    			r = jud(data,buf.readLine())+"";
    		}
    		else {
    			
    			r = r+"@"+jud(data,buf.readLine());
    		}
    	}
    	String[] sc = r.split("@");
    	for (int i = 0; i < sc.length; i++) {
    		if (!sc[i].equals("-1")) {
    			System.out.println(sc[i]);
    		}
    	}
    }
    }
    

      

  • 相关阅读:
    asp.net core 发布centos 7 遇到的坑
    模拟EF CodeFist 实现自己的ORM
    EF+Redis(StackExchange.Redis)实现分布式锁,自测可行
    Sqlite 梳理
    mina.net 梳理
    C# 读取Execl和Access数据库
    MVC4.0网站发布和部署到IIS7.0上的方法
    看懂SqlServer查询计划
    C#数据表加锁解锁
    『C#基础』数据库死锁笔记
  • 原文地址:https://www.cnblogs.com/quinnsun/p/acm_day1_2.html
Copyright © 2020-2023  润新知