题目链接:http://abc069.contest.atcoder.jp/assignments
A - K-City
Time limit : 2sec / Memory limit : 256MB
Score : 100 points
Problem Statement
In K-city, there are n streets running east-west, and m streets running north-south. Each street running east-west and each street running north-south cross each other. We will call the smallest area that is surrounded by four streets a block. How many blocks there are in K-city?
Constraints
- 2≤n,m≤100
Input
Input is given from Standard Input in the following format:
n m
Output
Print the number of blocks in K-city.
Sample Input 1
3 4
Sample Output 1
6
There are six blocks, as shown below:
![9179be829dc9810539213537d4c7398c.png](https://i-blog.csdnimg.cn/blog_migrate/2bb9ad728a9ce8cf8d09bcd9f32878a1.png)
Sample Input 2
2 2
Sample Output 2
1
There are one block, as shown below:
![997bfafa99be630b54d037225a5c68ea.png](https://i-blog.csdnimg.cn/blog_migrate/32ea779eeff33f5b02e6bb86d3eea45c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 using namespace std; 6 int main() 7 { 8 int n,m; 9 while(cin>>n>>m){ 10 cout<<(n-1)*(m-1)<<endl; 11 } 12 return 0; 13 }
B - i18n
Time limit : 2sec / Memory limit : 256MB
Score : 200 points
Problem Statement
The word internationalization
is sometimes abbreviated to i18n
. This comes from the fact that there are 18 letters between the first i
and the last n
.
You are given a string s of length at least 3 consisting of lowercase English letters. Abbreviate s in the same way.
Constraints
- 3≤|s|≤100 (|s| denotes the length of s.)
- s consists of lowercase English letters.
Input
Input is given from Standard Input in the following format:
s
Output
Print the abbreviation of s.
Sample Input 1
internationalization
Sample Output 1
i18n
Sample Input 2
smiles
Sample Output 2
s4s
Sample Input 3
xyz
Sample Output 3
x1z
题解:水题
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 using namespace std; 6 int main() 7 { 8 string a; 9 while(cin>>a){ 10 int len=a.length(); 11 cout<<a[0]<<len-2<<a[len-1]<<endl; 12 } 13 return 0; 14 }
C - 4-adjacent
Time limit : 2sec / Memory limit : 256MB
Score : 400 points
Problem Statement
We have a sequence of length N, a=(a1,a2,…,aN). Each ai is a positive integer.
Snuke's objective is to permute the element in a so that the following condition is satisfied:
- For each 1≤i≤N−1, the product of ai and ai+1 is a multiple of 4.
Determine whether Snuke can achieve his objective.
Constraints
- 2≤N≤105
- ai is an integer.
- 1≤ai≤109
Input
Input is given from Standard Input in the following format:
N a1 a2 … aN
Output
If Snuke can achieve his objective, print Yes
; otherwise, print No
.
Sample Input 1
3 1 10 100
Sample Output 1
Yes
One solution is (1,100,10).
Sample Input 2
4 1 2 3 4
Sample Output 2
No
It is impossible to permute a so that the condition is satisfied.
Sample Input 3
3 1 4 1
Sample Output 3
Yes
The condition is already satisfied initially.
Sample Input 4
2 1 1
Sample Output 4
No
Sample Input 5
6 2 7 1 8 2 8
Sample Output 5
Yes
题解:找出4和2的倍数即可
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <algorithm> 6 using namespace std; 7 const int N=100005; 8 int a[N]; 9 int main() 10 { 11 int n; 12 cin>>n; 13 int t1=0,t2=0; 14 for(int i=0;i<n;i++){ 15 cin>>a[i]; 16 if(a[i]%4==0) 17 t1++; 18 else if(a[i]%2==0) 19 t2++; 20 } 21 int flag=0; 22 int m; 23 if(t2%2==0) m=t2; 24 else m=t2-1; 25 if((n-m)/2<=t1)flag=1; 26 if(flag) cout<<"Yes"<<endl; 27 else cout<<"No"<<endl; 28 return 0; 29 }
D - Grid Coloring
Time limit : 2sec / Memory limit : 256MB
Score : 400 points
Problem Statement
We have a grid with H rows and W columns of squares. Snuke is painting these squares in colors 1, 2, …, N. Here, the following conditions should be satisfied:
- For each i (1≤i≤N), there are exactly ai squares painted in Color i. Here, a1+a2+…+aN=HW.
- For each i (1≤i≤N), the squares painted in Color i are 4-connected. That is, every square painted in Color i can be reached from every square painted in Color iby repeatedly traveling to a horizontally or vertically adjacent square painted in Color i.
Find a way to paint the squares so that the conditions are satisfied. It can be shown that a solution always exists.
Constraints
- 1≤H,W≤100
- 1≤N≤HW
- ai≥1
- a1+a2+…+aN=HW
Input
Input is given from Standard Input in the following format:
H W N a1 a2 … aN
Output
Print one way to paint the squares that satisfies the conditions. Output in the following format:
c11 … c1W : cH1 … cHW
Here, cij is the color of the square at the i-th row from the top and j-th column from the left.
Sample Input 1
2 2 3 2 1 1
Sample Output 1
1 1 2 3
Below is an example of an invalid solution:
1 2 3 1
This is because the squares painted in Color 1 are not 4-connected.
Sample Input 2
3 5 5 1 2 3 4 5
Sample Output 2
1 4 4 4 3 2 5 4 5 3 2 5 5 5 3
Sample Input 3
1 1 1 1
Sample Output 3
1
题解:看半天不懂撒意思 题解说是蛇形填数
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <algorithm> 6 using namespace std; 7 int r,c,n,x,y,ans[200][200]; 8 int main(void) 9 { 10 scanf("%d%d%d",&r,&c,&n); 11 x=1,y=1; 12 for(int i=1,cnt;i<=n;i++){ 13 scanf("%d",&cnt); 14 while(cnt--){ 15 ans[x][y]=i; 16 if(y==c&&x%2==1) 17 y=c,x++; 18 else if(y==1&&x%2==0) 19 y=1,x++; 20 else if(x&1) 21 y++; 22 else 23 y--; 24 } 25 } 26 for(int i=1;i<=r;i++) 27 for(int j=1;j<=c;j++) 28 printf("%d%c",ans[i][j],j==c?'\n':' '); 29 return 0; 30 }