洛谷刷题C语言:Physics Problem、PARKING、Trol、信息学竞赛、POT

记录洛谷刷题C语言


「dWoi R1」Physics Problem

题目背景

面对白板上的物理题,王马陷入了沉思 ……

题目描述

n n n 个状态,编号为 1 1 1 n n n。这 n n n 个状态之间有 k k k 种转换关系,第 i i i 个转换关系描述为:第 u i u_i ui 个状态和第 v i v_i vi 个状态可以进行转换。当两个状态之间没有直接的转换关系但有间接的转换关系时,那么这两个状态之间有升降华关系。

求有多少个升降华关系。

王马不会做很难的物理题,所以保证一个状态一定可以通过直接或间接的转换为另一个任意状态。

输入格式

第一行两个整数 n , k n,k n,k 代表状态数和转换关系数。
接下来 k k k 行每行两个整数 u i , v i u_i,v_i ui,vi 代表这两个状态之间有转换关系。

输出格式

一行一个整数代表有多少个升降华关系。

样例 #1

样例输入 #1

3 2
1 2
2 3

样例输出 #1

1

提示

样例 1 解释

一共有 3 3 3 个状态,编号为 1 , 2 , 3 1,2,3 1,2,3,第 1 1 1 个状态和第 2 2 2 个状态之间有转换关系,第 2 2 2 个状态和第 3 3 3 个状态之间有转换关系,第 1 1 1 个状态和第 3 3 3 个状态之间没有直接的转换关系,但可以用第 2 2 2 个状态做桥梁进行转换,所以第 1 1 1 个状态和第 3 3 3 个状态之间有升降华关系。只有这一个升降华关系,输出 1 1 1

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(5 pts): n ≤ 2 n \le 2 n2
  • Subtask 2(10 pts): k = n − 1 k=n-1 k=n1 u i + 1 = v i u_i+1=v_i ui+1=vi
  • Subtask 3(10 pts): k = n − 1 k=n-1 k=n1 u i = 1 u_i=1 ui=1
  • Subtask 4(25 pts): n , k ≤ 1000 n,k \le 1000 n,k1000
  • Subtask 5(50 pts):无特殊限制。

对于 100 % 100\% 100% 的数据, 1 ≤ n , k ≤ 1 0 7 1 \le n,k \le 10^7 1n,k107 1 ≤ u i , v i ≤ n 1 \le u_i,v_i \le n 1ui,vin

保证 u i ≠ v i u_i \ne v_i ui=vi 且不存在 i ≠ j ∧ ( u i = u j ∧ v i = v j ) i \ne j ∧(u_i =u_j∧v_i=v_j) i=j(ui=ujvi=vj) i ≠ j ∧ ( u i = v j ∧ u j = v i ) i \ne j∧(u_i=v_j∧u_j=v_i) i=j(ui=vjuj=vi)

这句话也可以理解为无重边无自环。

提示

注意,对于下面这种情况(a - b 代表 a a a 能与 b b b 互相转换):

1 - 2
2 - 3
1 - 3

1 1 1 个状态和第 3 3 3 个状态算有直接转换关系,即转换关系取“最短路”。

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>


int main()
{
	long long n, k;
	scanf("%lld%lld",&n,&k);
	
	printf("%lld\n",n*(n - 1)/2 - k);
	return 0;
} 

[COCI2007-2008#6] PARKING

题目描述

Luka 毕业了,他找到了驾驶卡车的工作。

一天晚上,他将 3 3 3 辆卡车停在一个停车场,收费方式如下:

  • 停放一辆卡车时,司机每分钟给每辆车支付 a a a 元。
  • 停放两辆卡车时,司机每分钟给每辆车支付 b b b 元。
  • 停放三辆卡车时,司机每分钟给每辆车支付 c c c 元。

给定 a , b , c a, b, c a,b,c,以及 Luka 的三辆卡车的停车时间,请确定 Luka 要交多少钱。

输入格式

第一行, a , b , c a, b, c a,b,c,含义见题目描述。

接下来三行,每行 2 2 2 个数,表示第 i i i 辆车的停车开始时间 b e g i n i begin_i begini 和结束时间 e n d i end_i endi,第 e n d i end_i endi 分钟不收费。

输出格式

第一行,一个正整数,表示 Luka 要交的钱。

样例 #1

样例输入 #1

5 3 1
1 6
3 5
2 8

样例输出 #1

33

样例 #2

样例输入 #2

10 8 6
15 30
25 50
70 80

样例输出 #2

480

提示

数据规模与约定

对于 100 % 100\% 100% 的数据, 1 ≤ c ≤ b ≤ a ≤ 100 1 \le c \le b \le a \le 100 1cba100 1 ≤ b e g i n i ≤ e n d i ≤ 100 1\le begin_i\le end_i\le 100 1beginiendi100

说明

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int max(int a,int b)
{
	if(a>b)
		return a;
	else
		return b;
}
 int a,b,c;
  int l1,r1,l2,r2,l3,r3;//3辆车的停车时间区间
  int maxr=0;
  int ans=0;
  int total;
  int main(){
      scanf("%d%d%d",&a,&b,&c);
      scanf("%d%d%d%d%d%d",&l1,&r1,&l2,&r2,&l3,&r3);
      maxr=max(max(r1,r2),r3);//最后一辆卡车的离开时间;注意:要用2次max函数,不然会wa最后一个测试点
      for(int i=1; i<=maxr; i++){
          total=0;//每次循环先把停车场内卡车数量清零
          if( i>=l1 && i<r1 ){
              total++;
          }//第一辆车在停车场
          if( i>=l2 && i<r2 ){
              total++;
          }//第二辆车在停车场
          if( i>=l3 && i<r3 ){
              total++;
          }//第三辆车在停车场
          if(total==3){
              ans+=c*3;
          }//有3辆卡车
          else if(total==2){
              ans+=b*2;
          }//有2辆卡车
          else if(total==1){
              ans+=a;
          }//有1辆卡车
      }
      printf("%d\n",ans); 
      return 0;
  }

[COCI2019-2020#1] Trol

题目描述

Stjepan 最近在萨格勒布大学获得了数学学士学位。他的父母自然而然地为他感到骄傲,并决定给他所有不超过 2 60 2^{60} 260 的正整数作为礼物。为了保证它们的安全,他迅速地将所有数存入了一个序列 A A A,使得 A i = i A_i=i Ai=i

一个妒忌他的朋友 Marin 决定做一个恶作剧:不断地把 A A A 中的每个元素替换为其所有数位之和,直到最终只剩下一位数。

例如,第 197 197 197 个元素的初始值为 197 197 197。Marin 先将这个值变为 1 + 9 + 7 = 17 1+9+7=17 1+9+7=17,然后再一次改变了它,使其变为 1 + 7 = 8 1+7=8 1+7=8

Stjepan 对此极为震惊,并请求 Marin 把序列变回初始状态。不幸的是,在他正确回答 Q Q Q 个询问之前,Marin 并不会如此。对于每一个询问,Stjepan 需要回答 A A A 序列中第 l l l 项至第 r r r 项元素的总和。

来帮 Stjepan 回答这些询问吧!

输入格式

第一行包含一个整数 Q Q Q,表示询问次数。

接下来的 Q Q Q 行,每行包含两个正整数 l i , r i l_i,r_i li,ri,表示 Marin 第 i i i 次询问的区间范围。

输出格式

输出 Q Q Q 个询问的答案。答案之间应当用换行符两两分开,并且应当符合询问的顺序。

样例 #1

样例输入 #1

1
1 5

样例输出 #1

15

样例 #2

样例输入 #2

2
9 13
44 45

样例输出 #2

19
17

样例 #3

样例输入 #3

1
1998 2018

样例输出 #3

102

提示

数据规模及约定

对于 20 % 20\% 20% 的数据,所有询问满足 1 ≤ l i ≤ r i ≤ 9 1 \le l_i \le r_i \le 9 1liri9

对于 60 % 60\% 60% 的数据,所有询问满足 r i − l i ≤ 1000 r_i-l_i \le 1000 rili1000

对于 100 % 100\% 100% 的数据, 1 ≤ Q ≤ 100 1 \le Q \le 100 1Q100,所有询问满足 1 ≤ l i ≤ r i ≤ 2 60 1 \le l_i \le r_i \le 2^{60} 1liri260

说明

本题分值按 COCI 原题设置,满分 50 50 50

题目译自 COCI2019-2020 CONTEST #1 T1 Trol

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main() {
	int n;
	scanf("%d",&n); 
	while(n--) {
		long long l, r;
		scanf("%lld%lld",&l,&r);
		long long times=(r-l+1)/9;//周期统计的个数
		long long sum=times*45; 
		for(long long i=l+times*9;i<=r;i++)//计算从l之后的不完整周期的选择,注意在这里的数据是有规律可循的,因此 /9 即可
			sum+=(i-1)%9+1;	
		printf("%lld\n",sum);
	}
	return 0;
}

[RC-04] 信息学竞赛

题目描述

小 R 今天学习了余角有关的数学知识,请你帮帮他计算一个角的余角吧!

一个角的余角的计算公式如下:

∠ B = 90 ° − ∠ A \angle B=90\degree -\angle A B=90°A

其中 A 是给出的角,B 是你要计算的角。

输入格式

一行一个整数 x x x,表示 ∠ A = x ° \angle A=x\degree A=x°

输出格式

一行一个整数 y y y,表示 ∠ B = y ° \angle B=y\degree B=y°。你需要严格按照公式计算。

样例 #1

样例输入 #1

100

样例输出 #1

-10

提示

对于 100 % 100\% 100% 的数据, x x x 在 C++ 语言的 int 范围内。即, x ∈ [ − 2 31 , 2 31 − 1 ] x\in[-2^{31},2^{31}-1] x[231,2311]

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main() {
	long long n;
	scanf("%lld",&n); 
	printf("%lld",90-n);
	return 0;
}

[COCI2015-2016#3] POT

题目描述

老师给同学们发了一封电子邮件,任务如下。

写一个程序,给你 n n n 个数,输出 X X X
X = n u m 1 p 1 + n u m 2 p 2 + ⋯ + n u m n p n X = num_1^{p_1} + num_2^{p_2} + \cdots + num_n^{p_n} X=num1p1+num2p2++numnpn
n u m 1 num_1 num1 n u m 2 num_2 num2 ⋯ \cdots n u m n num_n numn 都是整数, p 1 p_1 p1 p 2 p_2 p2 ⋯ \cdots p n p_n pn 都是一位数。

但是出现了一些玄学错误,使得 X X X 变成了:
X = q 1 + q 2 + . . . + q n X = q_1 + q_2 +... + q_n X=q1+q2+...+qn

注: q i = n u m i × 10 + p i q_i = num_i \times 10 + p_i qi=numi×10+pi

例如,原来的 X X X 2 1 2 + 12 5 3 21^2+125^3 212+1253,但现在变成了 212 + 1253 212+1253 212+1253。请帮助老师编写一个程序,输出原来 X X X 的值。

输入格式

第一行,一个正整数 n n n

接下来 n n n 行,每行一个整数 p i p_i pi

输出格式

仅一行一个整数, X X X 的值。

样例 #1

样例输入 #1

2
212
1253

样例输出 #1

1953566

样例 #2

样例输入 #2

5
23
17
43
52
22

样例输出 #2

102

样例 #3

样例输入 #3

3
213
102
45

样例输出 #3

10385

提示

数据规模及约定

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 10 1 \le n \le 10 1n10 10 ≤ p i ≤ 9.999 × 1 0 3 10 \le p_i \le 9.999 \times 10 ^ 3 10pi9.999×103 1 ≤ X ≤ 1 0 9 1 \leq X \leq 10 ^ 9 1X109

说明

翻译自 COCI 2015-2016 #3 A POT,满分 50。

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int n,a,b;
long long dan,ans;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a);
		b=a%10;
		a=a/10;
		if(b==0)
		{
			dan++;
		}
		else
		{
			ans=1;
			for(int j=1;j<=b;j++)
			{
				ans*=(long long)a;
			}
			dan+=ans;
		}
	}
	printf("%lld\n",dan);
	return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ERROR Error loading C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\vue.config.js: ERROR Error: Cannot find module 'chokidar' Require stack: - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\mock\mock-server.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\vue.config.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\node_modules\.store\@vue+cli-shared-utils@4.5.19\node_modules\@vue\cli-shared-utils\lib\module.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\node_modules\.store\@vue+cli-shared-utils@4.5.19\node_modules\@vue\cli-shared-utils\index.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\node_modules\.store\@vue+cli-service@4.4.4\node_modules\@vue\cli-service\bin\vue-cli-service.js Error: Cannot find module 'chokidar' Require stack: - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\mock\mock-server.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\vue.config.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\node_modules\.store\@vue+cli-shared-utils@4.5.19\node_modules\@vue\cli-shared-utils\lib\module.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\node_modules\.store\@vue+cli-shared-utils@4.5.19\node_modules\@vue\cli-shared-utils\index.js - C:\Users\86151\Desktop\stuAdminBli-master\frontend\vue-admin-template-permission-control\node_modules\.store\@vue+cli-service@4.4.4\node_modules\@vue\cli-service\bin\vue-cli-service.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15) at Function.Module._load (node:internal/modules/cjs/loader:778:27) at Module.require (node:internal/modules/cjs/loader:1005:19) at require (node:internal/modules/cjs/helpers:102:18) trol\mock\mock-server.js:1:18) at Module._compile (node:internal/modules/cjs/loader:1103:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12)
06-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值